home *** CD-ROM | disk | FTP | other *** search
- /*
- STRIPC.C
- Written by Leor Zolman, 3/82
-
- This program takes an assembly language source file as input,
- and writes out the same file stripped of comments. Everything between
- a semicolon and the end of the line is stripped, plus the tabs
- before the semicolon.
- If a line contains an odd number of single quote (') characters before
- the first semicolon, then the line is left intact.
- */
-
- #include "bdscio.h"
- char ibuf[BUFSIZ], obuf[BUFSIZ];
-
- main(argc,argv)
- char **argv;
- {
- char iname[30], oname[30];
- char linbuf[200];
-
- int i,j,k;
-
- if (argc != 3) exit(puts("usage: stripc <infile> <outfile>\n"));
- if (!strcmp(argv[1],argv[2])) exit(puts("Names must be distinct\n"));
-
- strcpy(iname,argv[1]);
- strcpy(oname,argv[2]);
-
- strcat(iname,".ASM");
- strcat(oname,".ASM");
-
- if (fopen(iname,ibuf) == ERROR)
- exit(puts("\7Can't open input file\n"));
-
- if (fcreat(oname,obuf) == ERROR)
- exit(puts("\7Can't create output file\n"));
-
- while (fgets(linbuf,ibuf)) {
- if ((i = index(linbuf,";")) != ERROR)
- {
- if (!i)
- {
- *linbuf = '\0';
- }
- else
- {
- if (index(linbuf,"'") < i)
- {
- k = 0; /* quote count */
- for (j = 0; j < i; j++)
- if (linbuf[j] == '\'')
- k++;
- if (k & 1) goto lineout;
- }
- while (i && isspace(linbuf[i-1]))
- i--;
- linbuf[i++] = '\n';
- linbuf[i] = '\0';
- }
- }
- lineout: if (fputs(linbuf,obuf) == ERROR)
- exit(puts("\7Error writing output file"));
- putchar('.');
- }
- putc(CPMEOF,obuf);
- fflush(obuf);
- fclose(obuf);
- fclose(ibuf);
- puts("All done.\n");
- }