|
|
| version 1.1.2.1, 2010/07/13 15:04:43 | version 1.1.2.4, 2011/04/28 07:16:05 |
|---|---|
| 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 105 create_diridx(const char *csDir, int lm, int *tags, st | Line 111 create_diridx(const char *csDir, int lm, int *tags, st |
| if (lm & 1) { | if (lm & 1) { |
| if (lstat(d.d_name, &sb) != -1) { | if (lstat(d.d_name, &sb) != -1) { |
| memset(szStr, 0, STRSIZ); | memset(szStr, 0, STRSIZ); |
| #if defined(__OpenBSD__) | |
| strftime(szStr, STRSIZ, "%Y-%m-%d %H:%M:%S", localtime((time_t*) &sb.st_mtim)); | strftime(szStr, STRSIZ, "%Y-%m-%d %H:%M:%S", localtime((time_t*) &sb.st_mtim)); |
| #else | |
| strftime(szStr, STRSIZ, "%Y-%m-%d %H:%M:%S", localtime((time_t*) &sb.st_mtime)); | |
| #endif | |
| switch (d.d_type) { | switch (d.d_type) { |
| case DT_FIFO: | case DT_FIFO: |
| strlcpy(szType, "fifo", STRSIZ); | strlcpy(szType, "fifo", STRSIZ); |
| Line 128 create_diridx(const char *csDir, int lm, int *tags, st | Line 138 create_diridx(const char *csDir, int lm, int *tags, st |
| case DT_SOCK: | case DT_SOCK: |
| strlcpy(szType, "socket", STRSIZ); | strlcpy(szType, "socket", STRSIZ); |
| break; | break; |
| /* OpenBSD does not have this type */ | |
| #ifdef DT_WHT | |
| case DT_WHT: | case DT_WHT: |
| strlcpy(szType, "wht", STRSIZ); | strlcpy(szType, "wht", STRSIZ); |
| break; | break; |
| #endif | |
| case DT_UNKNOWN: | case DT_UNKNOWN: |
| default: | default: |
| strlcpy(szType, "unknown", STRSIZ); | strlcpy(szType, "unknown", STRSIZ); |
| Line 150 create_diridx(const char *csDir, int lm, int *tags, st | Line 163 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 266 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 277 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 313 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 299 sync_dircmpList(const char *csDir1, const char *csDir2 | Line 327 sync_dircmpList(const char *csDir1, const char *csDir2 |
| if (lm & 1) { | if (lm & 1) { |
| if (lstat(d.d_name, &sb) != -1) { | if (lstat(d.d_name, &sb) != -1) { |
| memset(szStr, 0, STRSIZ); | memset(szStr, 0, STRSIZ); |
| #if defined(__OpenBSD__) | |
| strftime(szStr, STRSIZ, "%Y-%m-%d %H:%M:%S", | strftime(szStr, STRSIZ, "%Y-%m-%d %H:%M:%S", |
| localtime((time_t*) &sb.st_mtim)); | localtime((time_t*) &sb.st_mtim)); |
| #else | |
| strftime(szStr, STRSIZ, "%Y-%m-%d %H:%M:%S", | |
| localtime((time_t*) &sb.st_mtime)); | |
| #endif | |
| switch (d.d_type) { | switch (d.d_type) { |
| case DT_FIFO: | case DT_FIFO: |
| strlcpy(szType, "fifo", STRSIZ); | strlcpy(szType, "fifo", STRSIZ); |
| Line 323 sync_dircmpList(const char *csDir1, const char *csDir2 | Line 356 sync_dircmpList(const char *csDir1, const char *csDir2 |
| case DT_SOCK: | case DT_SOCK: |
| strlcpy(szType, "socket", STRSIZ); | strlcpy(szType, "socket", STRSIZ); |
| break; | break; |
| /* OpenBSD does not have this type */ | |
| #ifdef DT_WHT | |
| case DT_WHT: | case DT_WHT: |
| strlcpy(szType, "wht", STRSIZ); | strlcpy(szType, "wht", STRSIZ); |
| break; | break; |
| #endif | |
| case DT_UNKNOWN: | case DT_UNKNOWN: |
| default: | default: |
| strlcpy(szType, "unknown", STRSIZ); | strlcpy(szType, "unknown", STRSIZ); |
| Line 342 sync_dircmpList(const char *csDir1, const char *csDir2 | Line 378 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"); |