xref: /original-bsd/usr.bin/split/split.c (revision d25e1985)
1 static char *sccsid = "@(#)split.c	4.1 (Berkeley) 10/01/80";
2 #include <stdio.h>
3 
4 unsigned count = 1000;
5 int	fnumber;
6 char	fname[100];
7 char	*ifil;
8 char	*ofil;
9 FILE	*is;
10 FILE	*os;
11 
12 main(argc, argv)
13 char *argv[];
14 {
15 	register i, c, f;
16 	int iflg = 0;
17 
18 	for(i=1; i<argc; i++)
19 		if(argv[i][0] == '-')
20 			switch(argv[i][1]) {
21 
22 			case '\0':
23 				iflg = 1;
24 				continue;
25 
26 			case '0':
27 			case '1':
28 			case '2':
29 			case '3':
30 			case '4':
31 			case '5':
32 			case '6':
33 			case '7':
34 			case '8':
35 			case '9':
36 				count = atoi(argv[i]+1);
37 				continue;
38 			}
39 		else if(iflg)
40 			ofil = argv[i];
41 		else {
42 			ifil = argv[i];
43 			iflg = 2;
44 		}
45 	if(iflg != 2)
46 		is = stdin;
47 	else
48 		if((is=fopen(ifil,"r")) == NULL) {
49 			fprintf(stderr,"cannot open input\n");
50 			exit(1);
51 		}
52 	if(ofil == 0)
53 		ofil = "x";
54 
55 loop:
56 	f = 1;
57 	for(i=0; i<count; i++)
58 	do {
59 		c = getc(is);
60 		if(c == EOF) {
61 			if(f == 0)
62 				fclose(os);
63 			exit(0);
64 		}
65 		if(f) {
66 			for(f=0; ofil[f]; f++)
67 				fname[f] = ofil[f];
68 			fname[f++] = fnumber/26 + 'a';
69 			fname[f++] = fnumber%26 + 'a';
70 			fname[f] = '\0';
71 			fnumber++;
72 			if((os=fopen(fname,"w")) == NULL) {
73 				fprintf(stderr,"Cannot create output\n");
74 				exit(1);
75 			}
76 			f = 0;
77 		}
78 		putc(c, os);
79 	} while(c != '\n');
80 	fclose(os);
81 	goto loop;
82 }
83