Diff for /libaitsync/src/dir.c between versions 1.1.2.1 and 1.1.2.2

version 1.1.2.1, 2010/07/13 15:04:43 version 1.1.2.2, 2010/09/20 23:07:57
Line 57  create_diridx(const char *csDir, int lm, int *tags, st Line 57  create_diridx(const char *csDir, int lm, int *tags, st
         DIR *dir;          DIR *dir;
         struct dirent d, *pd;          struct dirent d, *pd;
         int n;          int n;
        char szStr[STRSIZ], szType[STRSIZ];        char szStr[STRSIZ], szType[STRSIZ], *old;
         struct stat sb;          struct stat sb;
         register int i;          register int i;
   
Line 71  create_diridx(const char *csDir, int lm, int *tags, st Line 71  create_diridx(const char *csDir, int lm, int *tags, st
                 memset(l, 0, sizeof(struct tagDirName));                  memset(l, 0, sizeof(struct tagDirName));
         }          }
   
           old = getcwd(NULL, 0);
         if (chdir(csDir) == -1) {          if (chdir(csDir) == -1) {
                 SETERR;                  SETERR;
                   free(old);
                 free(l);                  free(l);
                 *list = NULL;                  *list = NULL;
                 return -1;                  return -1;
Line 80  create_diridx(const char *csDir, int lm, int *tags, st Line 82  create_diridx(const char *csDir, int lm, int *tags, st
         dir = opendir(".");          dir = opendir(".");
         if (!dir) {          if (!dir) {
                 SETERR;                  SETERR;
                   chdir(old);
                   free(old);
                 free(l);                  free(l);
                 *list = NULL;                  *list = NULL;
                 return -1;                  return -1;
Line 91  create_diridx(const char *csDir, int lm, int *tags, st Line 95  create_diridx(const char *csDir, int lm, int *tags, st
                 l = realloc(l, sizeof(struct tagDirName) * (n + 2));                  l = realloc(l, sizeof(struct tagDirName) * (n + 2));
                 if (!l) {                  if (!l) {
                         SETERR;                          SETERR;
                           chdir(old);
                           free(old);
                         free(l);                          free(l);
                         *list = NULL;                          *list = NULL;
                         closedir(dir);                          closedir(dir);
Line 150  create_diridx(const char *csDir, int lm, int *tags, st Line 156  create_diridx(const char *csDir, int lm, int *tags, st
         for (i = n - 1; i > -1; i--)          for (i = n - 1; i > -1; i--)
                 tags[l[i].tag] = i;                  tags[l[i].tag] = i;
   
           chdir(old);
           free(old);
   
         *list = l;          *list = l;
         return n;          return n;
 }  }
Line 250  sync_dircmpList(const char *csDir1, const char *csDir2 Line 259  sync_dircmpList(const char *csDir1, const char *csDir2
         u_short t;          u_short t;
         u_int hash;          u_int hash;
         struct stat sb;          struct stat sb;
        char szLine[STRSIZ], szStr[STRSIZ], szType[STRSIZ], *str, *pbrk;        char szLine[STRSIZ], szStr[STRSIZ], szType[STRSIZ], *str, *pbrk, *old;
   
         if (!csDir1 || !list || !(tags = create_tags()))          if (!csDir1 || !list || !(tags = create_tags()))
                 return -1;                  return -1;
Line 261  sync_dircmpList(const char *csDir1, const char *csDir2 Line 270  sync_dircmpList(const char *csDir1, const char *csDir2
                 return n;                  return n;
         }          }
   
        if (!lstat(csDir2, &sb) && S_ISDIR(sb.st_mode)) {        if (lstat(csDir2, &sb) == -1) {
                 SETERR;
                 free(l);
                 return -1;
         }
         if (S_ISDIR(sb.st_mode)) {
                 old = getcwd(NULL, 0);
                 if (chdir(csDir2) == -1) {                  if (chdir(csDir2) == -1) {
                         SETERR;                          SETERR;
                           chdir(old);
                           free(old);
                         free(l);                          free(l);
                         return -1;                          return -1;
                 }                  }
                 dir = opendir(".");                  dir = opendir(".");
                 if (!dir) {                  if (!dir) {
                         SETERR;                          SETERR;
                           chdir(old);
                           free(old);
                         free(l);                          free(l);
                         return -1;                          return -1;
                 }                  }
Line 287  sync_dircmpList(const char *csDir1, const char *csDir2 Line 306  sync_dircmpList(const char *csDir1, const char *csDir2
                                 l = realloc(l, sizeof(struct tagDirName) * (n + 2));                                  l = realloc(l, sizeof(struct tagDirName) * (n + 2));
                                 if (!l) {                                  if (!l) {
                                         SETERR;                                          SETERR;
                                           chdir(old);
                                           free(old);
                                         closedir(dir);                                          closedir(dir);
                                         return -1;                                          return -1;
                                 } else                                  } else
Line 342  sync_dircmpList(const char *csDir1, const char *csDir2 Line 363  sync_dircmpList(const char *csDir1, const char *csDir2
                         }                          }
                 }                  }
                 closedir(dir);                  closedir(dir);
                   chdir(old);
                   free(old);
         } else {          } else {
                 if (strcmp(csDir2, "-")) {                  if (strcmp(csDir2, "-")) {
                         f = fopen(csDir2, "r");                          f = fopen(csDir2, "r");

Removed from v.1.1.2.1  
changed lines
  Added in v.1.1.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>