|
version 1.1.2.5, 2011/05/08 00:49:45
|
version 1.3.2.1, 2012/11/13 10:30:44
|
|
Line 5
|
Line 5
|
| * $Author$ |
* $Author$ |
| * $Id$ |
* $Id$ |
| * |
* |
| *************************************************************************/ | ************************************************************************** |
| | The ELWIX and AITNET software is distributed under the following |
| | terms: |
| | |
| | All of the documentation and software included in the ELWIX and AITNET |
| | Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
| | |
| | Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 |
| | by Michael Pounov <misho@elwix.org>. All rights reserved. |
| | |
| | Redistribution and use in source and binary forms, with or without |
| | modification, are permitted provided that the following conditions |
| | are met: |
| | 1. Redistributions of source code must retain the above copyright |
| | notice, this list of conditions and the following disclaimer. |
| | 2. Redistributions in binary form must reproduce the above copyright |
| | notice, this list of conditions and the following disclaimer in the |
| | documentation and/or other materials provided with the distribution. |
| | 3. All advertising materials mentioning features or use of this software |
| | must display the following acknowledgement: |
| | This product includes software developed by Michael Pounov <misho@elwix.org> |
| | ELWIX - Embedded LightWeight unIX and its contributors. |
| | 4. Neither the name of AITNET nor the names of its contributors |
| | may be used to endorse or promote products derived from this software |
| | without specific prior written permission. |
| | |
| | THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND |
| | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
| | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| | SUCH DAMAGE. |
| | */ |
| #include "global.h" |
#include "global.h" |
| |
|
| |
|
|
Line 43 create_tags()
|
Line 80 create_tags()
|
| |
|
| tags = calloc(TABLESIZ, sizeof(int)); |
tags = calloc(TABLESIZ, sizeof(int)); |
| if (!tags) { |
if (!tags) { |
| SETERR; | LOGERR; |
| } else |
} else |
| memset(tags, -1, TABLESIZ * sizeof(int)); |
memset(tags, -1, TABLESIZ * sizeof(int)); |
| |
|
|
Line 63 create_diridx(const char *csDir, int lm, int *tags, st
|
Line 100 create_diridx(const char *csDir, int lm, int *tags, st
|
| |
|
| l = malloc(sizeof(struct tagDirName)); |
l = malloc(sizeof(struct tagDirName)); |
| if (!l) { |
if (!l) { |
| SETERR; | LOGERR; |
| *list = NULL; |
*list = NULL; |
| return -1; |
return -1; |
| } else { |
} else { |
|
Line 73 create_diridx(const char *csDir, int lm, int *tags, st
|
Line 110 create_diridx(const char *csDir, int lm, int *tags, st
|
| |
|
| old = getcwd(NULL, 0); |
old = getcwd(NULL, 0); |
| if (chdir(csDir) == -1) { |
if (chdir(csDir) == -1) { |
| SETERR; | LOGERR; |
| free(old); |
free(old); |
| free(l); |
free(l); |
| *list = NULL; |
*list = NULL; |
|
Line 81 create_diridx(const char *csDir, int lm, int *tags, st
|
Line 118 create_diridx(const char *csDir, int lm, int *tags, st
|
| } |
} |
| dir = opendir("."); |
dir = opendir("."); |
| if (!dir) { |
if (!dir) { |
| SETERR; | LOGERR; |
| chdir(old); |
chdir(old); |
| free(old); |
free(old); |
| free(l); |
free(l); |
|
Line 94 create_diridx(const char *csDir, int lm, int *tags, st
|
Line 131 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; | LOGERR; |
| chdir(old); |
chdir(old); |
| free(old); |
free(old); |
| free(l); |
free(l); |
|
Line 149 create_diridx(const char *csDir, int lm, int *tags, st
|
Line 186 create_diridx(const char *csDir, int lm, int *tags, st
|
| strlcpy(szType, "unknown", STRSIZ); |
strlcpy(szType, "unknown", STRSIZ); |
| break; |
break; |
| } |
} |
| snprintf(l[n].extra, STRSIZ, "%s links=%d inode=%lu %d:%d perm=0%o size=%ld %s", | snprintf(l[n].extra, STRSIZ, "%s links=%d inode=%ld %d:%d perm=0%o size=%ld %s", |
| szType, sb.st_nlink, sb.st_ino, sb.st_uid, sb.st_gid, | szType, sb.st_nlink, (long) sb.st_ino, sb.st_uid, sb.st_gid, |
| sb.st_mode & 0x1fff, sb.st_size, szStr); | sb.st_mode & 0x1fff, (long) sb.st_size, szStr); |
| } |
} |
| } |
} |
| |
|
|
Line 188 sync_dirCSum(const char *csDir, u_char **md)
|
Line 225 sync_dirCSum(const char *csDir, u_char **md)
|
| |
|
| *md = malloc(MD5_DIGEST_LENGTH); |
*md = malloc(MD5_DIGEST_LENGTH); |
| if (!*md) { |
if (!*md) { |
| SETERR; | LOGERR; |
| return -1; |
return -1; |
| } else |
} else |
| memset(*md, 0, MD5_DIGEST_LENGTH); |
memset(*md, 0, MD5_DIGEST_LENGTH); |
| |
|
| dir = opendir(csDir); |
dir = opendir(csDir); |
| if (!dir) { |
if (!dir) { |
| SETERR; | LOGERR; |
| free(*md); |
free(*md); |
| return -1; |
return -1; |
| } |
} |
|
Line 278 sync_dircmpList(const char *csDir1, const char *csDir2
|
Line 315 sync_dircmpList(const char *csDir1, const char *csDir2
|
| } |
} |
| |
|
| if (lstat(csDir2, &sb) == -1) { |
if (lstat(csDir2, &sb) == -1) { |
| SETERR; | LOGERR; |
| free(l); |
free(l); |
| return -1; |
return -1; |
| } |
} |
| if (S_ISDIR(sb.st_mode)) { |
if (S_ISDIR(sb.st_mode)) { |
| old = getcwd(NULL, 0); |
old = getcwd(NULL, 0); |
| if (chdir(csDir2) == -1) { |
if (chdir(csDir2) == -1) { |
| SETERR; | LOGERR; |
| chdir(old); |
chdir(old); |
| free(old); |
free(old); |
| free(l); |
free(l); |
|
Line 293 sync_dircmpList(const char *csDir1, const char *csDir2
|
Line 330 sync_dircmpList(const char *csDir1, const char *csDir2
|
| } |
} |
| dir = opendir("."); |
dir = opendir("."); |
| if (!dir) { |
if (!dir) { |
| SETERR; | LOGERR; |
| chdir(old); |
chdir(old); |
| free(old); |
free(old); |
| free(l); |
free(l); |
|
Line 312 sync_dircmpList(const char *csDir1, const char *csDir2
|
Line 349 sync_dircmpList(const char *csDir1, const char *csDir2
|
| if (!find) { |
if (!find) { |
| l = realloc(l, sizeof(struct tagDirName) * (n + 2)); |
l = realloc(l, sizeof(struct tagDirName) * (n + 2)); |
| if (!l) { |
if (!l) { |
| SETERR; | LOGERR; |
| chdir(old); |
chdir(old); |
| free(old); |
free(old); |
| closedir(dir); |
closedir(dir); |
|
Line 368 sync_dircmpList(const char *csDir1, const char *csDir2
|
Line 405 sync_dircmpList(const char *csDir1, const char *csDir2
|
| break; |
break; |
| } |
} |
| snprintf(l[n].extra, STRSIZ, |
snprintf(l[n].extra, STRSIZ, |
| "%s links=%d inode=%lu %d:%d perm=0%o size=%ld %s", | "%s links=%d inode=%ld %d:%d perm=0%o size=%ld %s", |
| szType, sb.st_nlink, sb.st_ino, sb.st_uid, sb.st_gid, | szType, sb.st_nlink, (long) sb.st_ino, sb.st_uid, |
| sb.st_mode & 0x1fff, sb.st_size, szStr); | sb.st_gid, sb.st_mode & 0x1fff, (long) sb.st_size, |
| | szStr); |
| } |
} |
| } |
} |
| |
|
|
Line 384 sync_dircmpList(const char *csDir1, const char *csDir2
|
Line 422 sync_dircmpList(const char *csDir1, const char *csDir2
|
| if (strcmp(csDir2, "-")) { |
if (strcmp(csDir2, "-")) { |
| f = fopen(csDir2, "r"); |
f = fopen(csDir2, "r"); |
| if (!f) { |
if (!f) { |
| SETERR; | LOGERR; |
| free(l); |
free(l); |
| return -1; |
return -1; |
| } |
} |
|
Line 410 sync_dircmpList(const char *csDir1, const char *csDir2
|
Line 448 sync_dircmpList(const char *csDir1, const char *csDir2
|
| if (!find) { |
if (!find) { |
| l = realloc(l, sizeof(struct tagDirName) * (n + 2)); |
l = realloc(l, sizeof(struct tagDirName) * (n + 2)); |
| if (!l) { |
if (!l) { |
| SETERR; | LOGERR; |
| if (strcmp(csDir2, "-")) |
if (strcmp(csDir2, "-")) |
| fclose(f); |
fclose(f); |
| return -1; |
return -1; |