From: marc Date: Fri, 17 Oct 1997 18:34:22 +0000 (+0000) Subject: Use runScript() for verifying script. X-Git-Tag: rpm-4.4-release~3869 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3354920c7cb1059b4e0a5e5a6538bad78d034326;p=platform%2Fupstream%2Frpm.git Use runScript() for verifying script. Add verify prog args. CVS patchset: 1866 CVS date: 1997/10/17 18:34:22 --- diff --git a/lib/verify.c b/lib/verify.c index 545bf7a..ca627bc 100644 --- a/lib/verify.c +++ b/lib/verify.c @@ -19,12 +19,10 @@ #include "misc.h" #include "messages.h" #include "rpmlib.h" +#include "install.h" #define S_ISDEV(m) (S_ISBLK((m)) || S_ISCHR((m))) -static char * SCRIPT_PATH = "PATH=/sbin:/bin:/usr/sbin:/usr/bin:" - "/usr/X11R6/bin\nexport PATH\n"; - int rpmVerifyFile(char * prefix, Header h, int filenum, int * result, int omitMask) { char ** fileList, ** md5List, ** linktoList; @@ -212,90 +210,6 @@ int rpmVerifyFile(char * prefix, Header h, int filenum, int * result, } int rpmVerifyScript(char * root, Header h, int err) { - int out, fd; - char * script; - char * fn; - char * tmpdir = rpmGetVar(RPMVAR_TMPPATH); - int status; - char * installPrefixEnv = NULL; - char * installPrefix; - - if (!headerGetEntry(h, RPMTAG_VERIFYSCRIPT, NULL, (void **) &script, - NULL)) { - return 0; - } - - if (rpmIsVerbose()) { - out = err; - } else { - out = open("/dev/null", O_APPEND); - if (out < 0) { - out = err; - } - } - - fn = alloca(strlen(tmpdir) + 20); - sprintf(fn, "%s/rpm-%d.vscript", tmpdir, (int) getpid()); - - rpmMessage(RPMMESS_DEBUG, "verify script found - " - "running from file %s\n", fn); - - fd = open(fn, O_CREAT | O_RDWR); - unlink(fn); - if (fd < 0) { - rpmError(RPMERR_SCRIPT, "error creating file for verify script"); - return 1; - } - write(fd, SCRIPT_PATH, strlen(SCRIPT_PATH)); - write(fd, script, strlen(script)); - lseek(fd, 0, SEEK_SET); - - if (headerGetEntry(h, RPMTAG_INSTALLPREFIX, NULL, (void **) &installPrefix, - NULL)) { - installPrefixEnv = alloca(strlen(installPrefix) + 30); - strcpy(installPrefixEnv, "RPM_INSTALL_PREFIX="); - strcat(installPrefixEnv, installPrefix); - } - - if (!fork()) { - if (installPrefixEnv) { - doputenv(installPrefixEnv); - } - - dup2(fd, 0); - close(fd); - - if (err != 2) dup2(err, 2); - if (out != 1) dup2(out, 1); - - /* make sure we don't close stdin/stderr/stdout by mistake! */ - if (err > 2) close (err); - if (out > 2 && out != err) close (out); - - if (strcmp(root, "/")) { - rpmMessage(RPMMESS_DEBUG, "performing chroot(%s)\n", root); - chroot(root); - chdir("/"); - } - - if (rpmIsDebug()) - execl("/bin/sh", "/bin/sh", "-x", "-s", NULL); - else - execl("/bin/sh", "/bin/sh", "-s", NULL); - exit(-1); - } - - if (out > 2) close(out); - if (err > 2) close(err); - close(fd); - if (!rpmIsVerbose()) close(out); - - wait(&status); - - if (!WIFEXITED(status) || WEXITSTATUS(status)) { - rpmError(RPMERR_SCRIPT, "execution of verify script failed"); - return 1; - } - - return 0; + return runScript(root, h, RPMTAG_VERIFYSCRIPT, RPMTAG_VERIFYSCRIPTPROG, + 0, 0, err); }