[BACK]Return to meta.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / usr.bin / make

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/usr.bin/make/meta.c between version 1.37 and 1.38

version 1.37, 2015/04/01 01:03:55 version 1.38, 2015/04/11 05:24:30
Line 848  string_match(const void *p, const void *
Line 848  string_match(const void *p, const void *
  * if any of the references in its meta data file is more recent.   * if any of the references in its meta data file is more recent.
  * We have to track the latestdir on a per-process basis.   * We have to track the latestdir on a per-process basis.
  */   */
   #define LCWD_VNAME_FMT ".meta.%d.lcwd"
 #define LDIR_VNAME_FMT ".meta.%d.ldir"  #define LDIR_VNAME_FMT ".meta.%d.ldir"
   
 /*  /*
Line 873  meta_oodate(GNode *gn, Boolean oodate)
Line 874  meta_oodate(GNode *gn, Boolean oodate)
 {  {
     static char *tmpdir = NULL;      static char *tmpdir = NULL;
     static char cwd[MAXPATHLEN];      static char cwd[MAXPATHLEN];
       char lcwd_vname[64];
     char ldir_vname[64];      char ldir_vname[64];
       char lcwd[MAXPATHLEN];
     char latestdir[MAXPATHLEN];      char latestdir[MAXPATHLEN];
     char fname[MAXPATHLEN];      char fname[MAXPATHLEN];
     char fname1[MAXPATHLEN];      char fname1[MAXPATHLEN];
     char fname2[MAXPATHLEN];      char fname2[MAXPATHLEN];
       char fname3[MAXPATHLEN];
     char *p;      char *p;
     char *cp;      char *cp;
     char *link_src;      char *link_src;
Line 929  meta_oodate(GNode *gn, Boolean oodate)
Line 933  meta_oodate(GNode *gn, Boolean oodate)
                 err(1, "Could not get current working directory");                  err(1, "Could not get current working directory");
             cwdlen = strlen(cwd);              cwdlen = strlen(cwd);
         }          }
           strlcpy(lcwd, cwd, sizeof(lcwd));
           strlcpy(latestdir, cwd, sizeof(latestdir));
   
         if (!tmpdir) {          if (!tmpdir) {
             tmpdir = getTmpdir();              tmpdir = getTmpdir();
Line 1012  meta_oodate(GNode *gn, Boolean oodate)
Line 1018  meta_oodate(GNode *gn, Boolean oodate)
                         char *tp;                          char *tp;
   
                         if (lastpid > 0) {                          if (lastpid > 0) {
                             /* We need to remember this. */                              /* We need to remember these. */
                               Var_Set(lcwd_vname, lcwd, VAR_GLOBAL, 0);
                             Var_Set(ldir_vname, latestdir, VAR_GLOBAL, 0);                              Var_Set(ldir_vname, latestdir, VAR_GLOBAL, 0);
                         }                          }
                           snprintf(lcwd_vname, sizeof(lcwd_vname), LCWD_VNAME_FMT, pid);
                         snprintf(ldir_vname, sizeof(ldir_vname), LDIR_VNAME_FMT, pid);                          snprintf(ldir_vname, sizeof(ldir_vname), LDIR_VNAME_FMT, pid);
                         lastpid = pid;                          lastpid = pid;
                         ldir = Var_Value(ldir_vname, VAR_GLOBAL, &tp);                          ldir = Var_Value(ldir_vname, VAR_GLOBAL, &tp);
Line 1022  meta_oodate(GNode *gn, Boolean oodate)
Line 1030  meta_oodate(GNode *gn, Boolean oodate)
                             strlcpy(latestdir, ldir, sizeof(latestdir));                              strlcpy(latestdir, ldir, sizeof(latestdir));
                             if (tp)                              if (tp)
                                 free(tp);                                  free(tp);
                         } else                          }
                             strlcpy(latestdir, cwd, sizeof(latestdir));                          ldir = Var_Value(lcwd_vname, VAR_GLOBAL, &tp);
                           if (ldir) {
                               strlcpy(lcwd, ldir, sizeof(lcwd));
                               if (tp)
                                   free(tp);
                           }
                     }                      }
                     /* Skip past the pid. */                      /* Skip past the pid. */
                     if (strsep(&p, " ") == NULL)                      if (strsep(&p, " ") == NULL)
                         continue;                          continue;
 #ifdef DEBUG_META_MODE  #ifdef DEBUG_META_MODE
                     if (DEBUG(META))                      if (DEBUG(META))
                         fprintf(debug_file, "%s: %d: cwd=%s ldir=%s\n", fname, lineno, cwd, latestdir);                              fprintf(debug_file, "%s: %d: %d: %c: cwd=%s lcwd=%s ldir=%s\n",
                                       fname, lineno,
                                       pid, buf[0], cwd, lcwd, latestdir);
 #endif  #endif
                     break;                      break;
                 }                  }
Line 1040  meta_oodate(GNode *gn, Boolean oodate)
Line 1055  meta_oodate(GNode *gn, Boolean oodate)
                 /* Process according to record type. */                  /* Process according to record type. */
                 switch (buf[0]) {                  switch (buf[0]) {
                 case 'X':               /* eXit */                  case 'X':               /* eXit */
                       Var_Delete(lcwd_vname, VAR_GLOBAL);
                     Var_Delete(ldir_vname, VAR_GLOBAL);                      Var_Delete(ldir_vname, VAR_GLOBAL);
                     lastpid = 0;        /* no need to save ldir_vname */                      lastpid = 0;        /* no need to save ldir_vname */
                     break;                      break;
Line 1051  meta_oodate(GNode *gn, Boolean oodate)
Line 1067  meta_oodate(GNode *gn, Boolean oodate)
   
                         child = atoi(p);                          child = atoi(p);
                         if (child > 0) {                          if (child > 0) {
                               snprintf(cldir, sizeof(cldir), LCWD_VNAME_FMT, child);
                               Var_Set(cldir, lcwd, VAR_GLOBAL, 0);
                             snprintf(cldir, sizeof(cldir), LDIR_VNAME_FMT, child);                              snprintf(cldir, sizeof(cldir), LDIR_VNAME_FMT, child);
                             Var_Set(cldir, latestdir, VAR_GLOBAL, 0);                              Var_Set(cldir, latestdir, VAR_GLOBAL, 0);
   #ifdef DEBUG_META_MODE
                               if (DEBUG(META))
                                       fprintf(debug_file, "%s: %d: %d: cwd=%s lcwd=%s ldir=%s\n",
                                               fname, lineno,
                                               child, cwd, lcwd, latestdir);
   #endif
                         }                          }
                     }                      }
                     break;                      break;
   
                 case 'C':               /* Chdir */                  case 'C':               /* Chdir */
                     /* Update the latest directory. */                      /* Update lcwd and latest directory. */
                     strlcpy(latestdir, p, sizeof(latestdir));                      strlcpy(latestdir, p, sizeof(latestdir));
                       strlcpy(lcwd, p, sizeof(lcwd));
                       Var_Set(lcwd_vname, lcwd, VAR_GLOBAL, 0);
                       Var_Set(ldir_vname, lcwd, VAR_GLOBAL, 0);
   #ifdef DEBUG_META_MODE
                       if (DEBUG(META))
                           fprintf(debug_file, "%s: %d: cwd=%s ldir=%s\n", fname, lineno, cwd, lcwd);
   #endif
                     break;                      break;
   
                 case 'M':               /* renaMe */                  case 'M':               /* renaMe */
Line 1208  meta_oodate(GNode *gn, Boolean oodate)
Line 1239  meta_oodate(GNode *gn, Boolean oodate)
                             snprintf(fname1, sizeof(fname1), "%s/%s", latestdir, p);                              snprintf(fname1, sizeof(fname1), "%s/%s", latestdir, p);
                             sdirs[sdx++] = fname1;                              sdirs[sdx++] = fname1;
   
                             if (strcmp(latestdir, cwd) != 0) {                              if (strcmp(latestdir, lcwd) != 0) {
                                 /* Check vs cwd */                                  /* Check vs lcwd */
                                 snprintf(fname2, sizeof(fname2), "%s/%s", cwd, p);                                  snprintf(fname2, sizeof(fname2), "%s/%s", lcwd, p);
                                 sdirs[sdx++] = fname2;                                  sdirs[sdx++] = fname2;
                             }                              }
                               if (strcmp(lcwd, cwd) != 0) {
                                   /* Check vs cwd */
                                   snprintf(fname3, sizeof(fname3), "%s/%s", cwd, p);
                                   sdirs[sdx++] = fname3;
                               }
                         }                          }
                         sdirs[sdx++] = NULL;                          sdirs[sdx++] = NULL;
   
Line 1251  meta_oodate(GNode *gn, Boolean oodate)
Line 1287  meta_oodate(GNode *gn, Boolean oodate)
                             oodate = TRUE;                              oodate = TRUE;
                         }                          }
                     }                      }
                       if (buf[0] == 'E') {
                           /* previous latestdir is no longer relevant */
                           strlcpy(latestdir, lcwd, sizeof(latestdir));
                       }
                     break;                      break;
                 default:                  default:
                     break;                      break;

Legend:
Removed from v.1.37  
changed lines
  Added in v.1.38

CVSweb <webmaster@jp.NetBSD.org>