/* Alphabetize a file by lines. Usage: alph */ #include "bdscio.h" #include "dio.h" #define stderr 4 #define MAXLINES 2000 /* max number of lines */ int strcmp(); char iobuf[BUFSIZ]; char *ltab[MAXLINES]; int lcount; char *allocp; main(argc,argv) int argc; char **argv; { int i; char linbuf[300]; dioinit(&argc,argv); if (argc > 1) if(fopen(argv[1],iobuf)== ERROR) exit(fputs("Can't open input file\n",stderr)); lcount = 0; for (i = 0; i < MAXLINES; i++) { if (argc > 1) { if (!fgets(linbuf,iobuf)) break; } else if (!gets2(linbuf)) break; if ((allocp = sbrk(strlen(linbuf) + 1)) == ERROR) exit(fputs("Out of allocation space\n",stderr)); ltab[lcount++] = allocp; strcpy(allocp,linbuf); } if (argc > 1) fclose(iobuf); if (i == MAXLINES) exit(fputs("Too many lines. Change MAXLINES\n" ,stderr)); qsort(ltab,lcount,2,&strcmp); if (argc > 2) { if (fcreat(argv[2],iobuf) == ERROR) exit(fputs("Can't creat output file\n",stderr)); } else fputs("******** Alphabetized: *********\n",stderr); for (i = 0; i < lcount; i++) if (argc > 2) fputs(ltab[i],iobuf); else puts(ltab[i]); if (argc > 2) { putc(CPMEOF,iobuf); fflush(iobuf); fclose(iobuf); } fputs("\n*********** All done ***********\n",stderr); dioflush(); } int gets2(str) char *str; { int c; if ((c = getchar()) == EOF) return NULL; do { if ((*str++ = c) == '\n') break;; } while (c = getchar()); *str = '\0'; if (c == EOF) return NULL; return 1; } int strcmp(s,t) char **s, **t; { char *s1, *t1; s1 = *s; t1 = *t; int i; i = 0; while (s1[i] == t1[i]) if (s1[i++] == '\0') return 0; return s1[i] - t1[i]; }  .