home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / msj / msjv4_4 / overlays / smerge.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-01-30  |  1.3 KB  |  57 lines

  1. /* smerge - merge source and assembly files */
  2.  
  3. #include <stdio.h>
  4.  
  5. main(argc,argv)
  6. int argc;
  7. char *argv[];
  8. {
  9.     FILE *csrc, *asmsrc, *mergefile;
  10.     char buffer[128];
  11.     long sline, line, totslines;
  12.  
  13.     if (argc < 4) {
  14.         printf("usage: smerge asmsrc csrc mergefile\n");
  15.         exit(1);
  16.     }
  17.  
  18.     sline = 0;
  19.  
  20.     asmsrc = fopen(argv[1],"r");
  21.     csrc = fopen(argv[2],"r");
  22.     mergefile = fopen(argv[3],"w");
  23.  
  24.     setvbuf(csrc,NULL,_IOFBF,8192);
  25.     setvbuf(asmsrc,NULL,_IOFBF,8192);
  26.     setvbuf(mergefile,NULL,_IOFBF,8192);
  27.  
  28.     totslines = 0;
  29.     while (fgets(buffer,128,csrc) != NULL)
  30.         totslines++;
  31.     fseek(csrc,0L,SEEK_SET);
  32.  
  33.     while ((fgets(buffer,128,asmsrc)) != NULL) {
  34.  
  35.         /* special hack for MSC -> assembly...kill the "__acrtused" extrn */
  36.         if (strstr(buffer,"__acrtused") != NULL)
  37.             continue;
  38.  
  39.         if (strncmp(buffer,"; Line",6) == 0) {
  40.             sscanf(buffer,"; Line %ld",&line);
  41.             if (line <= totslines) {
  42.                 while (sline < line) {
  43.                     fgets(buffer+1,128,csrc);
  44.                     fputs(buffer,mergefile);
  45.                     ++sline;
  46.                 }
  47.             }
  48.         } else
  49.             fputs(buffer,mergefile);
  50.     }
  51.     fclose(asmsrc);
  52.     fclose(csrc);
  53.     fclose(mergefile);
  54. }
  55.  
  56.  
  57.