git-svn: trunk@2842
Tomasz Kojm authored on 2007/02/23 03:13:13... | ... |
@@ -715,7 +715,7 @@ static int chdir_inc(const char *dbname) |
715 | 715 |
|
716 | 716 |
if(cvd_unpack(dbfile, path) == -1) { |
717 | 717 |
logg("!chdir_inc: Can't unpack %s into %s\n", dbfile, path); |
718 |
- rmdirs(path); |
|
718 |
+ cli_rmdirs(path); |
|
719 | 719 |
return -1; |
720 | 720 |
} |
721 | 721 |
} |
... | ... |
@@ -822,7 +822,7 @@ static int updatedb(const char *dbname, const char *hostname, char *ip, int *sig |
822 | 822 |
inc = 0; |
823 | 823 |
if(stat(dbinc, &sb) != -1) { |
824 | 824 |
logg("^Removing corrupted incremental directory %s\n", dbinc); |
825 |
- if(rmdirs(dbinc)) { |
|
825 |
+ if(cli_rmdirs(dbinc)) { |
|
826 | 826 |
logg("!Can't remove incremental directory\n"); |
827 | 827 |
return 53; |
828 | 828 |
} |
... | ... |
@@ -998,14 +998,14 @@ static int updatedb(const char *dbname, const char *hostname, char *ip, int *sig |
998 | 998 |
if(ret) { |
999 | 999 |
if(bacinc) { |
1000 | 1000 |
logg("*Restoring incremental directory %s from backup\n", dbinc); |
1001 |
- rmdirs(dbinc); |
|
1001 |
+ cli_rmdirs(dbinc); |
|
1002 | 1002 |
rename(bacinc, dbinc); |
1003 | 1003 |
free(bacinc); |
1004 | 1004 |
} |
1005 | 1005 |
return ret; |
1006 | 1006 |
} else { |
1007 | 1007 |
logg("*Removing incremental directory %s\n", dbinc); |
1008 |
- rmdirs(dbinc); |
|
1008 |
+ cli_rmdirs(dbinc); |
|
1009 | 1009 |
} |
1010 | 1010 |
|
1011 | 1011 |
} else { |
... | ... |
@@ -1014,7 +1014,7 @@ static int updatedb(const char *dbname, const char *hostname, char *ip, int *sig |
1014 | 1014 |
|
1015 | 1015 |
if(bacinc) { |
1016 | 1016 |
logg("*Removing backup directory %s\n", bacinc); |
1017 |
- rmdirs(bacinc); |
|
1017 |
+ cli_rmdirs(bacinc); |
|
1018 | 1018 |
free(bacinc); |
1019 | 1019 |
} |
1020 | 1020 |
} |
... | ... |
@@ -1026,7 +1026,7 @@ static int updatedb(const char *dbname, const char *hostname, char *ip, int *sig |
1026 | 1026 |
} |
1027 | 1027 |
|
1028 | 1028 |
if(nodb && inc) |
1029 |
- rmdirs(dbinc); |
|
1029 |
+ cli_rmdirs(dbinc); |
|
1030 | 1030 |
|
1031 | 1031 |
logg("%s updated (version: %d, sigs: %d, f-level: %d, builder: %s)\n", inc ? dbinc : dbfile, current->version, current->sigs, current->fl, current->builder); |
1032 | 1032 |
|
... | ... |
@@ -186,66 +186,6 @@ int filecopy(const char *src, const char *dest) |
186 | 186 |
|
187 | 187 |
} |
188 | 188 |
|
189 |
-int rmdirs(const char *dirname) |
|
190 |
-{ |
|
191 |
- DIR *dd; |
|
192 |
- struct dirent *dent; |
|
193 |
- struct stat maind, statbuf; |
|
194 |
- char *fname; |
|
195 |
- |
|
196 |
- |
|
197 |
- if((dd = opendir(dirname)) != NULL) { |
|
198 |
- while(stat(dirname, &maind) != -1) { |
|
199 |
- if(!rmdir(dirname)) break; |
|
200 |
- if(errno != ENOTEMPTY && errno != EEXIST && errno != EBADF) { |
|
201 |
- closedir(dd); |
|
202 |
- return 0; |
|
203 |
- } |
|
204 |
- |
|
205 |
- while((dent = readdir(dd))) { |
|
206 |
-#if (!defined(C_CYGWIN)) && (!defined(C_INTERIX)) && (!defined(C_WINDOWS)) |
|
207 |
- if(dent->d_ino) |
|
208 |
-#endif |
|
209 |
- { |
|
210 |
- if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) { |
|
211 |
- fname = mcalloc(strlen(dirname) + strlen(dent->d_name) + 2, sizeof(char)); |
|
212 |
-#ifdef C_WINDOWS |
|
213 |
- sprintf(fname, "%s\\%s", dirname, dent->d_name); |
|
214 |
-#else |
|
215 |
- sprintf(fname, "%s/%s", dirname, dent->d_name); |
|
216 |
-#endif |
|
217 |
- |
|
218 |
- /* stat the file */ |
|
219 |
- if(lstat(fname, &statbuf) != -1) { |
|
220 |
- if(S_ISDIR(statbuf.st_mode) && !S_ISLNK(statbuf.st_mode)) { |
|
221 |
- if(rmdir(fname) == -1) { /* can't be deleted */ |
|
222 |
- if(errno == EACCES) { |
|
223 |
- closedir(dd); |
|
224 |
- free(fname); |
|
225 |
- return 1; |
|
226 |
- } |
|
227 |
- rmdirs(fname); |
|
228 |
- } |
|
229 |
- } else |
|
230 |
- unlink(fname); |
|
231 |
- } |
|
232 |
- |
|
233 |
- free(fname); |
|
234 |
- } |
|
235 |
- } |
|
236 |
- } |
|
237 |
- |
|
238 |
- rewinddir(dd); |
|
239 |
- } |
|
240 |
- |
|
241 |
- } else { |
|
242 |
- return 1; |
|
243 |
- } |
|
244 |
- |
|
245 |
- closedir(dd); |
|
246 |
- return 0; |
|
247 |
-} |
|
248 |
- |
|
249 | 189 |
int dircopy(const char *src, const char *dest) |
250 | 190 |
{ |
251 | 191 |
DIR *dd; |
... | ... |
@@ -279,7 +219,7 @@ int dircopy(const char *src, const char *dest) |
279 | 279 |
|
280 | 280 |
if(filecopy(spath, dpath) == -1) { |
281 | 281 |
/* mprintf("!dircopy: Can't copy %s to %s\n", spath, dpath); */ |
282 |
- rmdirs(dest); |
|
282 |
+ cli_rmdirs(dest); |
|
283 | 283 |
closedir(dd); |
284 | 284 |
return -1; |
285 | 285 |
} |
... | ... |
@@ -37,7 +37,6 @@ char *freshdbdir(void); |
37 | 37 |
void print_version(void); |
38 | 38 |
int filecopy(const char *src, const char *dest); |
39 | 39 |
int isnumb(const char *str); |
40 |
-int rmdirs(const char *dirname); |
|
41 | 40 |
int dircopy(const char *src, const char *dest); |
42 | 41 |
int cvd_unpack(const char *cvd, const char *destdir); |
43 | 42 |
void daemonize(void); |
... | ... |
@@ -867,7 +867,7 @@ static int build(struct optstruct *opt) |
867 | 867 |
} |
868 | 868 |
if(cvd_unpack(olddb, pt) == -1) { |
869 | 869 |
mprintf("!build: Can't unpack CVD file %s\n", olddb); |
870 |
- rmdirs(pt); |
|
870 |
+ cli_rmdirs(pt); |
|
871 | 871 |
free(pt); |
872 | 872 |
return -1; |
873 | 873 |
} |
... | ... |
@@ -879,15 +879,15 @@ static int build(struct optstruct *opt) |
879 | 879 |
mprintf("!build: Can't create temporary directory %s\n", pt); |
880 | 880 |
free(pt); |
881 | 881 |
if(!inc) |
882 |
- rmdirs(olddb); |
|
882 |
+ cli_rmdirs(olddb); |
|
883 | 883 |
return -1; |
884 | 884 |
} |
885 | 885 |
if(cvd_unpack(opt_arg(opt, "build"), pt) == -1) { |
886 | 886 |
mprintf("!build: Can't unpack CVD file %s\n", opt_arg(opt, "build")); |
887 |
- rmdirs(pt); |
|
887 |
+ cli_rmdirs(pt); |
|
888 | 888 |
free(pt); |
889 | 889 |
if(!inc) |
890 |
- rmdirs(olddb); |
|
890 |
+ cli_rmdirs(olddb); |
|
891 | 891 |
return -1; |
892 | 892 |
} |
893 | 893 |
|
... | ... |
@@ -898,19 +898,19 @@ static int build(struct optstruct *opt) |
898 | 898 |
|
899 | 899 |
ret = diffdirs(olddb, pt, patch); |
900 | 900 |
|
901 |
- rmdirs(pt); |
|
901 |
+ cli_rmdirs(pt); |
|
902 | 902 |
free(pt); |
903 | 903 |
|
904 | 904 |
if(ret == -1) { |
905 | 905 |
if(!inc) |
906 |
- rmdirs(olddb); |
|
906 |
+ cli_rmdirs(olddb); |
|
907 | 907 |
return -1; |
908 | 908 |
} |
909 | 909 |
|
910 | 910 |
ret = verifydiff(patch, NULL, olddb); |
911 | 911 |
|
912 | 912 |
if(!inc) |
913 |
- rmdirs(olddb); |
|
913 |
+ cli_rmdirs(olddb); |
|
914 | 914 |
|
915 | 915 |
if(ret == -1) { |
916 | 916 |
snprintf(broken, sizeof(broken), "%s.broken", patch); |
... | ... |
@@ -1113,7 +1113,7 @@ static int listdb(const char *filename) |
1113 | 1113 |
|
1114 | 1114 |
if(cvd_unpack(filename, dir) == -1) { |
1115 | 1115 |
mprintf("!listdb: Can't unpack CVD file %s\n", filename); |
1116 |
- rmdirs(dir); |
|
1116 |
+ cli_rmdirs(dir); |
|
1117 | 1117 |
free(dir); |
1118 | 1118 |
return -1; |
1119 | 1119 |
} |
... | ... |
@@ -1121,12 +1121,12 @@ static int listdb(const char *filename) |
1121 | 1121 |
/* list extracted directory */ |
1122 | 1122 |
if(listdir(dir) == -1) { |
1123 | 1123 |
mprintf("!listdb: Can't list directory %s\n", filename); |
1124 |
- rmdirs(dir); |
|
1124 |
+ cli_rmdirs(dir); |
|
1125 | 1125 |
free(dir); |
1126 | 1126 |
return -1; |
1127 | 1127 |
} |
1128 | 1128 |
|
1129 |
- rmdirs(dir); |
|
1129 |
+ cli_rmdirs(dir); |
|
1130 | 1130 |
free(dir); |
1131 | 1131 |
|
1132 | 1132 |
return 0; |
... | ... |
@@ -1255,7 +1255,7 @@ static int vbadump(struct optstruct *opt) |
1255 | 1255 |
|
1256 | 1256 |
close(fd); |
1257 | 1257 |
sigtool_vba_scandir(dir, hex_output); |
1258 |
- rmdirs(dir); |
|
1258 |
+ cli_rmdirs(dir); |
|
1259 | 1259 |
free(dir); |
1260 | 1260 |
return 0; |
1261 | 1261 |
} |
... | ... |
@@ -1423,14 +1423,14 @@ static int verifydiff(const char *diff, const char *cvd, const char *incdir) |
1423 | 1423 |
if(cvd) { |
1424 | 1424 |
if(cvd_unpack(cvd, tempdir) == -1) { |
1425 | 1425 |
mprintf("!verifydiff: Can't unpack CVD file %s\n", cvd); |
1426 |
- rmdirs(tempdir); |
|
1426 |
+ cli_rmdirs(tempdir); |
|
1427 | 1427 |
free(tempdir); |
1428 | 1428 |
return -1; |
1429 | 1429 |
} |
1430 | 1430 |
} else { |
1431 | 1431 |
if(dircopy(incdir, tempdir) == -1) { |
1432 | 1432 |
mprintf("!verifydiff: Can't copy dir %s to %s\n", incdir, tempdir); |
1433 |
- rmdirs(tempdir); |
|
1433 |
+ cli_rmdirs(tempdir); |
|
1434 | 1434 |
free(tempdir); |
1435 | 1435 |
return -1; |
1436 | 1436 |
} |
... | ... |
@@ -1438,7 +1438,7 @@ static int verifydiff(const char *diff, const char *cvd, const char *incdir) |
1438 | 1438 |
|
1439 | 1439 |
if((fd = open(diff, O_RDONLY)) == -1) { |
1440 | 1440 |
mprintf("!verifydiff: Can't open diff file %s\n", diff); |
1441 |
- rmdirs(tempdir); |
|
1441 |
+ cli_rmdirs(tempdir); |
|
1442 | 1442 |
free(tempdir); |
1443 | 1443 |
return -1; |
1444 | 1444 |
} |
... | ... |
@@ -1447,7 +1447,7 @@ static int verifydiff(const char *diff, const char *cvd, const char *incdir) |
1447 | 1447 |
|
1448 | 1448 |
if(chdir(tempdir) == -1) { |
1449 | 1449 |
mprintf("!verifydiff: Can't chdir to %s\n", tempdir); |
1450 |
- rmdirs(tempdir); |
|
1450 |
+ cli_rmdirs(tempdir); |
|
1451 | 1451 |
free(tempdir); |
1452 | 1452 |
close(fd); |
1453 | 1453 |
return -1; |
... | ... |
@@ -1456,7 +1456,7 @@ static int verifydiff(const char *diff, const char *cvd, const char *incdir) |
1456 | 1456 |
if(cdiff_apply(fd, mode) == -1) { |
1457 | 1457 |
mprintf("!verifydiff: Can't apply %s\n", diff); |
1458 | 1458 |
chdir(cwd); |
1459 |
- rmdirs(tempdir); |
|
1459 |
+ cli_rmdirs(tempdir); |
|
1460 | 1460 |
free(tempdir); |
1461 | 1461 |
close(fd); |
1462 | 1462 |
return -1; |
... | ... |
@@ -1473,7 +1473,7 @@ static int verifydiff(const char *diff, const char *cvd, const char *incdir) |
1473 | 1473 |
if(!(fh = fopen(info, "r"))) { |
1474 | 1474 |
mprintf("!verifydiff: Can't open %s\n", info); |
1475 | 1475 |
chdir(cwd); |
1476 |
- rmdirs(tempdir); |
|
1476 |
+ cli_rmdirs(tempdir); |
|
1477 | 1477 |
free(tempdir); |
1478 | 1478 |
return -1; |
1479 | 1479 |
} |
... | ... |
@@ -1483,7 +1483,7 @@ static int verifydiff(const char *diff, const char *cvd, const char *incdir) |
1483 | 1483 |
if(strncmp(buff, "ClamAV-VDB", 10)) { |
1484 | 1484 |
mprintf("!verifydiff: Incorrect info file %s\n", info); |
1485 | 1485 |
chdir(cwd); |
1486 |
- rmdirs(tempdir); |
|
1486 |
+ cli_rmdirs(tempdir); |
|
1487 | 1487 |
free(tempdir); |
1488 | 1488 |
return -1; |
1489 | 1489 |
} |
... | ... |
@@ -1510,7 +1510,7 @@ static int verifydiff(const char *diff, const char *cvd, const char *incdir) |
1510 | 1510 |
|
1511 | 1511 |
fclose(fh); |
1512 | 1512 |
chdir(cwd); |
1513 |
- rmdirs(tempdir); |
|
1513 |
+ cli_rmdirs(tempdir); |
|
1514 | 1514 |
free(tempdir); |
1515 | 1515 |
|
1516 | 1516 |
if(!ret) { |
... | ... |
@@ -1623,7 +1623,7 @@ static int makediff(struct optstruct *opt) |
1623 | 1623 |
|
1624 | 1624 |
if(cvd_unpack(opt_arg(opt, "diff"), odir) == -1) { |
1625 | 1625 |
mprintf("!makediff: Can't unpack CVD file %s\n", opt_arg(opt, "diff")); |
1626 |
- rmdirs(odir); |
|
1626 |
+ cli_rmdirs(odir); |
|
1627 | 1627 |
free(odir); |
1628 | 1628 |
return -1; |
1629 | 1629 |
} |
... | ... |
@@ -1631,7 +1631,7 @@ static int makediff(struct optstruct *opt) |
1631 | 1631 |
ndir = cli_gentemp(NULL); |
1632 | 1632 |
if(!ndir) { |
1633 | 1633 |
mprintf("!makediff: Can't generate temporary name for ndir\n"); |
1634 |
- rmdirs(odir); |
|
1634 |
+ cli_rmdirs(odir); |
|
1635 | 1635 |
free(odir); |
1636 | 1636 |
return -1; |
1637 | 1637 |
} |
... | ... |
@@ -1639,15 +1639,15 @@ static int makediff(struct optstruct *opt) |
1639 | 1639 |
if(mkdir(ndir, 0700) == -1) { |
1640 | 1640 |
mprintf("!makediff: Can't create directory %s\n", ndir); |
1641 | 1641 |
free(ndir); |
1642 |
- rmdirs(odir); |
|
1642 |
+ cli_rmdirs(odir); |
|
1643 | 1643 |
free(odir); |
1644 | 1644 |
return -1; |
1645 | 1645 |
} |
1646 | 1646 |
|
1647 | 1647 |
if(cvd_unpack(opt->filename, ndir) == -1) { |
1648 | 1648 |
mprintf("!makediff: Can't unpack CVD file %s\n", opt->filename); |
1649 |
- rmdirs(odir); |
|
1650 |
- rmdirs(ndir); |
|
1649 |
+ cli_rmdirs(odir); |
|
1650 |
+ cli_rmdirs(ndir); |
|
1651 | 1651 |
free(odir); |
1652 | 1652 |
free(ndir); |
1653 | 1653 |
return -1; |
... | ... |
@@ -1660,8 +1660,8 @@ static int makediff(struct optstruct *opt) |
1660 | 1660 |
|
1661 | 1661 |
ret = diffdirs(odir, ndir, name); |
1662 | 1662 |
|
1663 |
- rmdirs(odir); |
|
1664 |
- rmdirs(ndir); |
|
1663 |
+ cli_rmdirs(odir); |
|
1664 |
+ cli_rmdirs(ndir); |
|
1665 | 1665 |
free(odir); |
1666 | 1666 |
free(ndir); |
1667 | 1667 |
|