58 lines
1.6 KiB
C
58 lines
1.6 KiB
C
/* ************************************************************************
|
|
* file: split.c Part of CircleMud *
|
|
* Usage: split one large file into multiple smaller ones, with index *
|
|
* Written by Jeremy Elson *
|
|
* All Rights Reserved *
|
|
* Copyright (C) 1993 The Trustees of The Johns Hopkins University *
|
|
************************************************************************* */
|
|
|
|
/*
|
|
* This utility is meant to split a large file into multiple smaller ones,
|
|
* mainly to help break huge world files (ala Diku) into zone-sized files
|
|
* that are easier to manage.
|
|
*
|
|
* At each point in the original file where you want a break, insert a line
|
|
* containng "=filename" at the break point.
|
|
*/
|
|
|
|
#define INDEX_NAME "index"
|
|
#define BSZ 256
|
|
#define MAGIC_CHAR '='
|
|
|
|
#include "conf.h"
|
|
#include "sysdep.h"
|
|
|
|
int main(void)
|
|
{
|
|
char line[BSZ + 1];
|
|
FILE *index = 0, *outfile = 0;
|
|
|
|
if (!(index = fopen(INDEX_NAME, "w"))) {
|
|
perror("error opening index for write");
|
|
exit(1);
|
|
}
|
|
while (fgets(line, BSZ, stdin)) {
|
|
if (*line == MAGIC_CHAR) {
|
|
*(strchr(line, '\n')) = '\0';
|
|
if (outfile) {
|
|
/* fputs("$\n", outfile);*/
|
|
fclose(outfile);
|
|
}
|
|
if (!(outfile = fopen((line + 1), "a"))) {
|
|
perror("Error opening output file");
|
|
exit(0);
|
|
}
|
|
fputs(line + 1, index);
|
|
fputs("\n", index);
|
|
} else if (outfile)
|
|
fputs(line, outfile);
|
|
}
|
|
|
|
fputs("$\r\n", index);
|
|
fclose(index);
|
|
if (outfile)
|
|
fclose(outfile);
|
|
|
|
return (0);
|
|
}
|