home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 024 / psi110g.zip / MKDEP.C < prev    next >
C/C++ Source or Header  |  1994-04-17  |  2KB  |  70 lines

  1. /* Simple-minded program that generates dependencies for a makefile.
  2.  * Does not process #ifdefs, so some spurious dependencies may be
  3.  * generated.
  4.  *
  5.  * Copyright 1991 Phil Karn, KA9Q
  6.  */
  7. #include <stdio.h>
  8. #include <string.h>
  9. #include <dir.h>
  10.   
  11. char include[] = "#include";
  12. #define HEADER 0
  13. #define SOURCE 1
  14.   
  15. void mkdep(char *name, int type) {
  16.     int found = 0;
  17.     FILE *fp;
  18.     char *cp,*cp1,*cp2;
  19.     char buf[512];
  20.   
  21.     fp = fopen(name,"r");
  22.     strlwr(name);
  23.     while(fgets(buf,sizeof(buf),fp) != NULL){
  24.         if(strncmp(buf,include,sizeof(include)-1) != 0)
  25.             continue;
  26.         if((cp = strchr(buf,'\"')) == NULL)
  27.             continue;
  28.         cp++;
  29.         if((cp1 = strchr(cp,'\"')) == NULL)
  30.             continue;
  31.         if(!found) {
  32.             if(type == HEADER) {
  33.                 printf("%s:",name);
  34.             } else {
  35.                 cp2 = strchr(name,'.');
  36.                 *cp2 = '\0';
  37.                 printf("%s.obj: %s.c",name,name);
  38.             }
  39.             found = 1;
  40.         }
  41.         putchar(' ');
  42.         while(cp != cp1)
  43.             putchar(*cp++);
  44.     }
  45.     if(found)
  46.         putchar('\n');
  47.     fclose(fp);
  48. }
  49.   
  50. void main(void) {
  51.     struct ffblk ff;
  52.     int done;
  53.   
  54.     /* First check all the header files */
  55.     done = findfirst("*.h",&ff,0);
  56.     while(!done){
  57.         mkdep(ff.ff_name,HEADER);
  58.         done = findnext(&ff);
  59.     }
  60.   
  61.     /* Next check all the C files */
  62.     done = findfirst("*.c",&ff,0);
  63.     while(!done){
  64.         mkdep(ff.ff_name,SOURCE);
  65.         done = findnext(&ff);
  66.     }
  67.   
  68. }
  69.   
  70.