# include "stdio.h" # include "error.h" # include "def.h" void main(int argc, char **argv) { /* goes from file:begin,l to actual characters */ char line[750], *p, name[100]; FILE * fa = NULL; long lp; int len; progname = mkprogname(argv[0]); if (argc > 1 && argv[1] && argv[1][0]) chdir (argv[1]); name[0] = 0; while (gets(line)) { if (line[0] == '$' && line[1] == '$') { if (chdir(line + 2) < 0) err("can't chdir to %s", line+2); continue; } if ((p = strchr(line, ':')) == 0) continue; *p++ = 0; sscanf(p, "%ld,%d", &lp, &len); if (strcmp (name, line) != 0) { if (fa != NULL) fclose(fa); fa = efopen(line, "r"); strcpy(name, line); } if (fa != NULL) { fseek (fa, lp, 0); if (len >= sizeof(line)) len = sizeof(line)-1; fread(line, 1, len, fa); line[len] = 0; fputs(line, stdout); } } exit(0); }