#-h- ll.r 1532 asc 6-oct-80 07:01:02 #-h- defns 107 asc 6-oct-80 07:00:07 # include ratdef define(HUGE,10000) # bigger than longest possible line define(MAXNAME,FILENAMESIZE) #-h- ll 1327 asc 6-oct-80 07:00:08 # ll - prints length of shortest and longest lines subroutine main character arg(MAXLINE) integer open, getarg integer fd, i for (i = 1; getarg(i, arg, MAXNAME) ^= EOF; i = i + 1) { if (arg(1) == QMARK & arg(2) == EOS) call error ('usage: ll [file].') if (arg(1) == MINUS & arg(2) == EOS) fd = STDIN else fd = open(arg, READ) if (fd == ERR) call cant(arg) else { call doll(fd) if (fd != STDIN) { call putc(BLANK) call putlin(arg, STDOUT) call close(fd) } call putc(NEWLINE) } } if (i == 1) { # no args, do STDIN call doll(STDIN) call putc(NEWLINE) } return end # doll - determine longest and shortest lines in fd subroutine doll(fd) integer fd character getch character c integer len, minl, maxl minl = HUGE maxl = 0 len = 0 while (getch(c, fd) ^= EOF) if (c == NEWLINE) { if (len > maxl) maxl = len if (len < minl) minl = len len = 0 } else len = len + 1 if (minl == HUGE) minl = 0 call putdec(minl, 5) call putc(BLANK) call putdec(maxl, 5) return end