xref: /original-bsd/old/refer/deliv/deliv1.c (revision 4b2c5e10)
1 #ifndef lint
2 static char *sccsid = "@(#)deliv1.c	4.1 (Berkeley) 05/06/83";
3 #endif
4 
5 #include <stdio.h>
6 
7 main(argc, argv)	/* goes from file:begin,l to actual characters */
8 char *argv[];
9 {
10 	FILE *fopen(), *fa = NULL;
11 	char line[750], *p, name[100], *strcpy();
12 	long lp;
13 	int len;
14 
15 	if (argc > 1 && argv[1] && argv[1][0])
16 		chdir(argv[1]);
17 	name[0] = NULL;
18 	while (gets(line))
19 	{
20 		if (line[0] == '$' && line[1] == '$')
21 		{
22 			chdir(line+2);
23 			continue;
24 		}
25 		for (p = line; *p != ':'; p++)
26 			;
27 		*p++ = 0;
28 		sscanf(p, "%ld,%d", &lp, &len);
29 		if (p == line)
30 			fa = stdin;
31 		else
32 			if (strcmp(name, line) != 0)
33 			{
34 				if (fa != NULL)
35 					fclose(fa);
36 				fa = fopen(line, "r");
37 				if (fa == NULL)
38 					err("Can't open %s", line);
39 				strcpy(name, line);
40 			}
41 		if (fa != NULL)
42 		{
43 			fseek (fa, lp, 0);
44 			fread (line, 1, len, fa);
45 			line[len] = 0;
46 			fputs(line, stdout);
47 		}
48 	}
49 }
50