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"); |