home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: DFÜ und Kommunikation / SOS-DFUE.ISO / programm / dos / utility / pccp076 / scrchk.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-14  |  1.9 KB  |  71 lines

  1. #include<stdio.h>
  2. #include<stdlib.h> /* Without which getenv() blithely returns garbage! */
  3. #include<dos.h>
  4. #include<malloc.h>
  5. #include"comscrpt.h"
  6.  
  7. struct line far *program;
  8. int proglen, mainargc;
  9. FILE *scriptfd;
  10. char str[81], **mainargv;
  11. short int labels[256];
  12.  
  13. main(argc, argv)
  14.     int argc;
  15.     char **argv;
  16.     {
  17.     char fpname[256], *sptr;
  18.     int i, j, k, argn, value[8], eflag, nlperrs, nlverrs;
  19.     program=(struct line *)malloc(PROGSIZ*sizeof(struct line));
  20.     if(!program)
  21.         {
  22.         printf("Unable to allocate program buffer (compiled for %d statements).\n", PROGSIZ);
  23.         exit(123);
  24.         }
  25.     if(argc<2)
  26.         {
  27.         printf("USAGE: scrchk <sourcefile> [<arg1> [... [<arg9>]]]");
  28.         printf("\n(Compiled with PROGSIZ limit = %d statements.)\n",
  29.             PROGSIZ);
  30.         exit(1);
  31.         }
  32.     if(getenv("PCCPPATH")!=NULL)
  33.         sprintf(quicke, "%s\\", getenv("PCCPPATH"));
  34.     else
  35.         quicke[0]='\0';
  36.     if((quicke==NULL)||(argv[1][0]=='\\')||(argv[1][0]=='.')||(argv[1][0]&&(argv[1][1]==':')))
  37.         sprintf(fpname, "%s.scr", argv[1]);
  38.     else
  39.         sprintf(fpname, "%s%s.scr", quicke, argv[1]);
  40.     if((scriptfd=fopen(fpname, "r"))==NULL)
  41.         {
  42.         printf("Error opening script file %s.\n", fpname);
  43.         exit(2);
  44.         }
  45.     fgets(str, 80, scriptfd); /* Flush init params */
  46.     for(i=0;i<256;++i)
  47.         labels[i]=-1;
  48.     mainargc=argc;
  49.     mainargv=argv;
  50.     printf("Parsing with numbered list option...\n");
  51.     nlperrs=parse(1,1);
  52.         /* God, I'm glad I got around to modularizing this stuff! */
  53.     printf("Checking branch label validity...\n");
  54.     nlverrs=validate(1);
  55.     printf("\n\nLabel Table:\n\n");
  56.     printf("Lbl: Stmt:     Lbl: Stmt:     Lbl: Stmt:     Lbl: Stmt:     Lbl: Stmt:\n ");
  57.     for(i=0;i<256;++i)
  58.         {
  59.         if(labels[i]==-1)
  60.             printf("%3d   ---", i);
  61.         else
  62.             printf("%3d   %3d", i, labels[i]);
  63.         if((i+1)%5)
  64.             printf("      ");
  65.         else
  66.             printf("\n ");
  67.         }
  68.     printf("\nTotal label errors: %d in parse() and %d in validate().\n",
  69.         nlperrs, nlverrs);
  70.     }
  71.