Files
retrobsd/src/cmd/split.c

80 lines
1.7 KiB
C

#include <stdio.h>
#include <stdlib.h>
unsigned count = 1000;
int fnumber;
char fname[100];
char *ifil;
char *ofil;
FILE *is;
FILE *os;
int main(int argc, char *argv[])
{
int i, c, f;
int iflg = 0;
for (i = 1; i < argc; i++)
if (argv[i][0] == '-')
switch (argv[i][1]) {
case '\0':
iflg = 1;
continue;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
count = atoi(argv[i] + 1);
continue;
}
else if (iflg)
ofil = argv[i];
else {
ifil = argv[i];
iflg = 2;
}
if (iflg != 2)
is = stdin;
else if ((is = fopen(ifil, "r")) == NULL) {
perror(ifil);
exit(1);
}
if (ofil == 0)
ofil = "x";
loop:
f = 1;
for (i = 0; i < count; i++)
do {
c = getc(is);
if (c == EOF) {
if (f == 0)
fclose(os);
exit(0);
}
if (f) {
for (f = 0; ofil[f]; f++)
fname[f] = ofil[f];
fname[f++] = fnumber / 26 + 'a';
fname[f++] = fnumber % 26 + 'a';
fname[f] = '\0';
fnumber++;
if ((os = fopen(fname, "w")) == NULL) {
fprintf(stderr, "Cannot create output\n");
exit(1);
}
f = 0;
}
putc(c, os);
} while (c != '\n');
fclose(os);
goto loop;
}