|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 2766 (0xace) Types: TextFile Names: »info.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Empire.V/V1.1/COMMANDS/info.c«
#define D_FILES #include "empdef.h" #include <sys/types.h> #include <sys/stat.h> #include <sys/dir.h> info() { register char *cp; struct stat statbuf; char *copy(), *ctime(); if( argp[1] != 0 ) goto X30; ilist(); return(NORM_RETURN); X30: cp = copy(infodir, junk); *cp++ = '/'; copy(argp[1], cp); if( stat(junk, &statbuf) < 0 ) goto X134; if( argp[1][0] == '.' ) goto X134; if( argp[1][0] != '/' ) goto X160; X134: printf("There is no info on %s\n", argp[1]); return(SYN_RETURN); X160: printf("Info on %s -- Last mod : %s", argp[1], ctime(&statbuf.st_mtime)); if( fork() != 0 ) goto X316; execl(nroffil, "nroff", "-s", nroffhd, junk, 0); printf("Sorry, %s is not execlable\n", nroffil); exit(); X316: if( wait((int *)0) >= 0 ) goto X316; return(NORM_RETURN); } ilist() { register char *cp; register i; int n, n4, ifh, compar(); struct direct ent[256]; char *copy(); if( (ifh = open(infodir, O_RDONLY)) < 0 ) { perror(infodir); return; } printf("Information is currently available on:\n"); i = n = read(ifh, ent, 256*sizeof(struct direct))/sizeof(struct direct); i++; goto X140; X124: ent[i].d_ino = 0; X140: i--; if( i >= 0 ) goto X124; i = 0; goto X264; X150: cp = ent[i].d_name; goto X256; X166: cp = ent[i].d_name; copy(ent[n].d_name, cp); goto X256; X234: if( *cp++ != '.' ) goto X256; n--; if( n > i ) goto X166; *cp = 0; X256: if( *cp != '\0' ) goto X234; i++; X264: if( i < n ) goto X150; if( n > 0 ) goto X310; exit(1); X310: qsort(ent, n, sizeof(struct direct), compar); n4 = (n + 3)>>2; i = 0; X364: if( i >= n4 ) return; printf("%-16.16s", ent[i].d_name); if( n <= i + n4 ) goto X506; printf("%-16.16s", ent[i+n4].d_name); X506: if( n <= i + n4 + n4 ) goto X574; printf("%-16.16s", ent[i+n4+n4].d_name); X574: if( n <= i + n4 + n4 + n4 ) goto X656; printf(ent[i+n4+n4+n4].d_name); X656: printf("\n"); i++; goto X364; } compar(e1, e2) char *e1, *e2; { register char *cp1, *cp2; register i; cp1 = e1 + 2; cp2 = e2 + 2; X24: if( (i = *cp1++ - *cp2) != 0 ) goto X42; if( *cp2++ != '\0' ) goto X24; X42: return(i); }