Browse code

--build now allows to manually specify path to current CVD/inc with optional argument

git-svn: trunk@2673

Tomasz Kojm authored on 2007/02/04 08:39:05
Showing 2 changed files
... ...
@@ -1,3 +1,8 @@
1
+Sun Feb  4 00:33:54 CET 2007 (tk)
2
+---------------------------------
3
+  * sigtool/sigtool.c: --build now allows to manually specify path to current
4
+		       CVD/inc with optional argument, requested by Luca
5
+
1 6
 Sat Feb  3 02:00:44 CET 2007 (tk)
2 7
 ---------------------------------
3 8
   * libclamav: s/CL_SCAN_ALGO/CL_SCAN_ALGORITHMIC/g
... ...
@@ -555,17 +555,30 @@ static int build(struct optstruct *opt)
555 555
     else
556 556
 	dbname = "daily";
557 557
 
558
-    pt = freshdbdir();
559
-    snprintf(olddb, sizeof(olddb), "%s/%s.inc/%s.info", pt, dbname, dbname);
560
-    if(stat(olddb, &foo) == -1) {
561
-	inc = 0;
562
-	snprintf(olddb, sizeof(olddb), "%s/%s.cvd", pt, dbname);
563
-    }
564 558
 
565
-    free(pt);
559
+    if(opt->filename) {
560
+	if(cli_strbcasestr(opt->filename, ".cvd")) {
561
+	    strncpy(olddb, opt->filename, sizeof(olddb));
562
+	    inc = 0;
563
+	} else if(cli_strbcasestr(opt->filename, ".inc")) {
564
+	    snprintf(olddb, sizeof(olddb), "%s/%s.info", opt->filename, dbname);
565
+	} else {
566
+	    mprintf("!build: The optional argument points to neither CVD nor incremental directory\n");
567
+	    return -1;
568
+	}
569
+
570
+    } else {
571
+	pt = freshdbdir();
572
+	snprintf(olddb, sizeof(olddb), "%s/%s.inc/%s.info", pt, dbname, dbname);
573
+	if(stat(olddb, &foo) == -1) {
574
+	    inc = 0;
575
+	    snprintf(olddb, sizeof(olddb), "%s/%s.cvd", pt, dbname);
576
+	}
577
+	free(pt);
578
+    }
566 579
 
567 580
     if(!(oldcvd = cl_cvdhead(olddb))) {
568
-	mprintf("^build: CAN'T READ CVD HEADER OF CURRENT DATABASE %s\n", buffer);
581
+	mprintf("^build: CAN'T READ CVD HEADER OF CURRENT DATABASE %s\n", olddb);
569 582
 	sleep(3);
570 583
     }
571 584
 
... ...
@@ -817,15 +830,21 @@ static int build(struct optstruct *opt)
817 817
     mprintf("Created %s\n", pt);
818 818
 
819 819
     /* generate patch */
820
-    if(inc) {
821
-	pt = freshdbdir();
822
-	snprintf(olddb, sizeof(olddb), "%s/%s.inc", pt, dbname);
823
-	free(pt);
820
+    if(opt->filename) {
821
+	strncpy(olddb, opt->filename, sizeof(olddb));
824 822
     } else {
825
-	pt = freshdbdir();
826
-	snprintf(olddb, sizeof(olddb), "%s/%s.cvd", pt, dbname);
827
-	free(pt);
823
+	if(inc) {
824
+	    pt = freshdbdir();
825
+	    snprintf(olddb, sizeof(olddb), "%s/%s.inc", pt, dbname);
826
+	    free(pt);
827
+	} else {
828
+	    pt = freshdbdir();
829
+	    snprintf(olddb, sizeof(olddb), "%s/%s.cvd", pt, dbname);
830
+	    free(pt);
831
+	}
832
+    }
828 833
 
834
+    if(!inc) {
829 835
 	pt = cli_gentemp(NULL);
830 836
 	if(mkdir(pt, 0700)) {
831 837
 	    mprintf("!build: Can't create temporary directory %s\n", pt);
... ...
@@ -1666,7 +1685,7 @@ void help(void)
1666 1666
     mprintf("    --html-normalise=FILE                  create normalised parts of HTML file\n");
1667 1667
     mprintf("    --utf16-decode=FILE                    decode UTF16 encoded files\n");
1668 1668
     mprintf("    --info=FILE            -i FILE         print database information\n");
1669
-    mprintf("    --build=NAME           -b NAME         build a CVD file\n");
1669
+    mprintf("    --build=NAME [cvd/inc] -b NAME         build a CVD file\n");
1670 1670
     mprintf("    --server=ADDR                          ClamAV Signing Service address\n");
1671 1671
     mprintf("    --unpack=FILE          -u FILE         Unpack a CVD file\n");
1672 1672
     mprintf("    --unpack-current=SHORTNAME             Unpack local CVD/INCDIR in cwd\n");