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