add cvd_unpack()

git-svn: trunk@2018
remotes/push_mirror/metadata
Tomasz Kojm 20 years ago
parent c6f15a5f58
commit 91e39258eb
  1. 12
      clamav-devel/ChangeLog
  2. 23
      clamav-devel/shared/misc.c
  3. 1
      clamav-devel/shared/misc.h
  4. 15
      clamav-devel/sigtool/sigtool.c

@ -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.

@ -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;
}

@ -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

@ -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);
}

Loading…
Cancel
Save