Browse code

keep proper file order when building .cld file

git-svn: trunk@3667

Tomasz Kojm authored on 2008/02/22 04:00:54
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Thu Feb 21 19:00:45 CET 2008 (tk)
2
+---------------------------------
3
+  * freshclam/manager.c: keep proper file order when building .cld file
4
+
1 5
 Thu Feb 21 15:29:48 CET 2008 (tk)
2 6
 ---------------------------------
3 7
   * clamd/server-th.c: fix compilation error on Tru64 (bb#829)
... ...
@@ -826,7 +826,7 @@ static int buildcld(const char *tmpdir, const char *dbname, const char *newfile,
826 826
 	DIR *dir;
827 827
 	char cwd[512], info[32], buff[512], *pt;
828 828
 	struct dirent *dent;
829
-	int fd;
829
+	int fd, err = 0;
830 830
 	gzFile *gzs = NULL;
831 831
 
832 832
 
... ...
@@ -890,12 +890,39 @@ static int buildcld(const char *tmpdir, const char *dbname, const char *newfile,
890 890
 	}
891 891
     }
892 892
 
893
+    if(access("COPYING", R_OK)) {
894
+	logg("!buildcld: COPYING file not found\n");
895
+	err = 1;
896
+    } else {
897
+	if(tar_addfile(fd, gzs, "COPYING") == -1) {
898
+	    logg("!buildcld: Can't add COPYING to .cld file\n");
899
+	    err = 1;
900
+	}
901
+    }
902
+
903
+    if(!err && !access("daily.cfg", R_OK)) {
904
+	if(tar_addfile(fd, gzs, "daily.cfg") == -1) {
905
+	    logg("!buildcld: Can't add daily.cfg to .cld file\n");
906
+	    err = 1;
907
+	}
908
+    }
909
+
910
+    if(err) {
911
+	chdir(cwd);
912
+	if(gzs)
913
+	    gzclose(gzs);
914
+	else
915
+	    close(fd);
916
+	unlink(newfile);
917
+	return -1;
918
+    }
919
+
893 920
     while((dent = readdir(dir))) {
894 921
 #ifndef C_INTERIX
895 922
 	if(dent->d_ino)
896 923
 #endif
897 924
 	{
898
-	    if(!strcmp(dent->d_name, ".") || !strcmp(dent->d_name, ".."))
925
+	    if(!strcmp(dent->d_name, ".") || !strcmp(dent->d_name, "..") || !strcmp(dent->d_name, "COPYING") || !strcmp(dent->d_name, "daily.cfg"))
899 926
 		continue;
900 927
 
901 928
 	    if(tar_addfile(fd, gzs, dent->d_name) == -1) {