diff --git a/clamav-devel/ChangeLog b/clamav-devel/ChangeLog index 9337bd6d4..02b7c7065 100644 --- a/clamav-devel/ChangeLog +++ b/clamav-devel/ChangeLog @@ -1,3 +1,15 @@ +Fri Jun 9 12:29:15 CEST 2006 (tk) +---------------------------------- + * shared/misc.c: add cvd_unpack() + +Thu Jun 8 20:00:52 CEST 2006 (tk) +---------------------------------- + * move rmdirs() from clamscan/treewalk.c to shared/misc.c + +Thu Jun 8 19:00:12 CEST 2006 (tk) +---------------------------------- + * libclamav/cvd.c: cleanup + Wed Jun 7 13:29:22 BST 2006 (njh) ---------------------------------- * libclamav/mbox.c: NEW_WORLD: Fast phish detection. diff --git a/clamav-devel/shared/misc.c b/clamav-devel/shared/misc.c index 022c032f0..6bd3c496a 100644 --- a/clamav-devel/shared/misc.c +++ b/clamav-devel/shared/misc.c @@ -38,6 +38,8 @@ #include "memory.h" #include "output.h" +#include "../libclamav/cvd.h" + char *freshdbdir(void) { @@ -119,7 +121,7 @@ int filecopy(const char *src, const char *dest) return -1; case 0: execl("/usr/bin/ditto", "ditto", "--rsrc", src, dest, NULL); - perror("execv(ditto)"); + perror("execl(ditto)"); break; default: wait(NULL); @@ -218,3 +220,22 @@ int isnumb(const char *str) return 1; } + +int cvd_unpack(const char *cvd, const char *destdir) +{ + int fd; + + + if((fd = open(cvd, O_RDONLY)) == -1) + return -1; + + if(lseek(fd, 512, SEEK_SET) == -1) { + close(fd); + return -1; + } + + if(cli_untgz(fd, destdir) == -1) /* cli_untgz() will close fd */ + return -1; + + return 0; +} diff --git a/clamav-devel/shared/misc.h b/clamav-devel/shared/misc.h index 6b3826a72..e80c1f64c 100644 --- a/clamav-devel/shared/misc.h +++ b/clamav-devel/shared/misc.h @@ -27,5 +27,6 @@ void print_version(void); int filecopy(const char *src, const char *dest); int isnumb(const char *str); int rmdirs(const char *dirname); +int cvd_unpack(const char *cvd, const char *destdir); #endif diff --git a/clamav-devel/sigtool/sigtool.c b/clamav-devel/sigtool/sigtool.c index 287e6fd82..b22a28e27 100644 --- a/clamav-devel/sigtool/sigtool.c +++ b/clamav-devel/sigtool/sigtool.c @@ -588,7 +588,6 @@ char *getdsig(const char *host, const char *user, const char *data) int unpack(struct optstruct *opt) { - int fd; char *name, *dbdir; if(opt_check(opt, "unpack-current")) { @@ -599,24 +598,14 @@ int unpack(struct optstruct *opt) } else name = strdup(opt_arg(opt, "unpack")); - if((fd = open(name, O_RDONLY|O_BINARY)) == -1) { - logg("!Can't open CVD file %s\n", name); + if(cvd_unpack(name, ".") == -1) { + logg("!Can't unpack CVD file %s\n", name); free(name); opt_free(opt); exit(1); } free(name); - lseek(fd, 512, SEEK_SET); - - if(cli_untgz(fd, ".")) { - logg("!Can't unpack file.\n"); - close(fd); - opt_free(opt); - exit(1); - } - - close(fd); opt_free(opt); exit(0); }