Browse code

drop rmdirs() and use cli_rmdirs() instead

git-svn: trunk@2842

Tomasz Kojm authored on 2007/02/23 03:13:13
Showing 6 changed files
... ...
@@ -1,3 +1,7 @@
1
+Thu Feb 22 17:16:54 CET 2007 (tk)
2
+---------------------------------
3
+  * shared/misc.c: drop rmdirs() and use cli_rmdirs() instead
4
+
1 5
 Thu Feb 22 16:51:33 CET 2007 (tk)
2 6
 ---------------------------------
3 7
   * libclamav: new scan setting CL_SCAN_PDF
... ...
@@ -174,7 +174,7 @@ int clamav_rmdirs(const char *dir)
174 174
 		}
175 175
 	    }
176 176
 #endif
177
-	    rmdirs(dir);
177
+	    cli_rmdirs(dir);
178 178
 	    exit(0);
179 179
 	    break;
180 180
 	default:
... ...
@@ -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