xref: /csrg-svn/old/refer/deliv/deliv1.c (revision 48295)
1*48295Sbostic /*-
2*48295Sbostic  * %sccs.include.proprietary.c%
3*48295Sbostic  */
4*48295Sbostic 
512275Stut #ifndef lint
6*48295Sbostic static char sccsid[] = "@(#)deliv1.c	4.2 (Berkeley) 04/18/91";
7*48295Sbostic #endif /* not lint */
812275Stut 
912275Stut #include <stdio.h>
1012275Stut 
main(argc,argv)1112275Stut main(argc, argv)	/* goes from file:begin,l to actual characters */
1212275Stut char *argv[];
1312275Stut {
1412275Stut 	FILE *fopen(), *fa = NULL;
1512275Stut 	char line[750], *p, name[100], *strcpy();
1612275Stut 	long lp;
1712275Stut 	int len;
1812275Stut 
1912275Stut 	if (argc > 1 && argv[1] && argv[1][0])
2012275Stut 		chdir(argv[1]);
2112275Stut 	name[0] = NULL;
2212275Stut 	while (gets(line))
2312275Stut 	{
2412275Stut 		if (line[0] == '$' && line[1] == '$')
2512275Stut 		{
2612275Stut 			chdir(line+2);
2712275Stut 			continue;
2812275Stut 		}
2912275Stut 		for (p = line; *p != ':'; p++)
3012275Stut 			;
3112275Stut 		*p++ = 0;
3212275Stut 		sscanf(p, "%ld,%d", &lp, &len);
3312275Stut 		if (p == line)
3412275Stut 			fa = stdin;
3512275Stut 		else
3612275Stut 			if (strcmp(name, line) != 0)
3712275Stut 			{
3812275Stut 				if (fa != NULL)
3912275Stut 					fclose(fa);
4012275Stut 				fa = fopen(line, "r");
4112275Stut 				if (fa == NULL)
4212275Stut 					err("Can't open %s", line);
4312275Stut 				strcpy(name, line);
4412275Stut 			}
4512275Stut 		if (fa != NULL)
4612275Stut 		{
4712275Stut 			fseek (fa, lp, 0);
4812275Stut 			fread (line, 1, len, fa);
4912275Stut 			line[len] = 0;
5012275Stut 			fputs(line, stdout);
5112275Stut 		}
5212275Stut 	}
5312275Stut }
54