From 1f6614e61efc520d2da0c09604d4ee1c06117073 Mon Sep 17 00:00:00 2001 From: jbj Date: Thu, 18 Nov 1999 18:07:46 +0000 Subject: [PATCH] The death of lib/ftp.c, merged into lib/rpmio.c. Start composting the rpmio API. Preliminary (not working) support for HTTP PUT. build.c: Check fd for NULL and use Ferror() for Fopen return. build/parseSpec.c: ditto build/pack.c: Use fdGetFP() rather than fpio->ffileno(). build/parseSpec.c: ditto build/pack.c: Use Stat/Mkdir wrappers. build/pack.c: Do Fflush before fdDup so that writes can remain buffered. lib/install.c: ditto build/parsePrep.c: Skip over URL leadin when writing %prep scriptlet. lib/misc.c: Rewrite to use simpler urlPath(). Restore checks on local fs. lib/rpmchecksig.c: Open with "r+" rather than "w" to avoid truncation. lib/url.c: Do lazy malloc of u->buf in rpmio.c checkResponse(). lib/rpmio.c: Make persist/contentLength per-fd rather than per-url. lib/rpmio.c: Add wr_chunked method for HTTP PUT (still broken). lib/rpmio.c: ftpAbort() should use timedRead. lib/rpmio.c: Add Fflush(). lib/url.c: urlPath() should return something ("/") on url = NULL (paranoia). lib/url.c: urlSplit() should return something ("/") on url w/o path. CVS patchset: 3429 CVS date: 1999/11/18 18:07:46 --- build.c | 3 +- build/build.c | 16 +- build/pack.c | 5 +- build/parsePrep.c | 11 +- build/parseSpec.c | 5 +- lib/Makefile.am | 2 +- lib/ftp.c | 663 ------------------------------------------------------ lib/install.c | 5 + lib/misc.c | 74 +++--- lib/rpmchecksig.c | 2 +- lib/rpmio.h | 31 ++- lib/rpmurl.h | 30 +-- lib/url.c | 24 +- po/POTFILES.in | 1 - po/rpm.pot | 185 ++++++++------- 15 files changed, 198 insertions(+), 859 deletions(-) delete mode 100644 lib/ftp.c diff --git a/build.c b/build.c index 654f5b2..4eb6266 100644 --- a/build.c +++ b/build.c @@ -60,8 +60,7 @@ static int isSpecFile(const char *specfile) int checking; fd = Fopen(specfile, "r.ufdio"); - if (Ferror(fd)) { - /* XXX Fstrerror */ + if (fd == NULL || Ferror(fd)) { fprintf(stderr, _("Unable to open spec file %s: %s\n"), specfile, Fstrerror(fd)); return 0; } diff --git a/build/build.c b/build/build.c index e11bfed..f07ea0c 100644 --- a/build/build.c +++ b/build/build.c @@ -50,6 +50,7 @@ int doScript(Spec spec, int what, const char *name, StringBuf sb, int test) int pid; int status; char buf[BUFSIZ]; + FILE * fp = NULL; switch (what) { case RPMBUILD_PREP: @@ -93,29 +94,30 @@ int doScript(Spec spec, int what, const char *name, StringBuf sb, int test) #else xfd = Fdopen(fd, "w.fpio"); #endif + fp = fdGetFp(fd); strcpy(buf, _preScriptEnvironment); expandMacros(spec, spec->macros, buf, sizeof(buf)); strcat(buf, "\n"); - fputs(buf, fpio->ffileno(xfd)); + fputs(buf, fp); - fprintf(fpio->ffileno(xfd), rpmIsVerbose() ? "set -x\n\n" : "exec > /dev/null\n\n"); + fprintf(fp, rpmIsVerbose() ? "set -x\n\n" : "exec > /dev/null\n\n"); /* XXX umask 022; cd %{_builddir} */ strcpy(buf, _preScriptChdir); expandMacros(spec, spec->macros, buf, sizeof(buf)); - fputs(buf, fpio->ffileno(xfd)); + fputs(buf, fp); if (what != RPMBUILD_PREP && what != RPMBUILD_RMBUILD) { if (spec->buildSubdir) - fprintf(fpio->ffileno(xfd), "cd %s\n", spec->buildSubdir); + fprintf(fp, "cd %s\n", spec->buildSubdir); } if (what == RPMBUILD_RMBUILD) { if (spec->buildSubdir) - fprintf(fpio->ffileno(xfd), "rm -rf %s\n", spec->buildSubdir); + fprintf(fp, "rm -rf %s\n", spec->buildSubdir); } else - fprintf(fpio->ffileno(xfd), "%s", getStringBuf(sb)); - fprintf(fpio->ffileno(xfd), "\nexit 0\n"); + fprintf(fp, "%s", getStringBuf(sb)); + fprintf(fp, "\nexit 0\n"); Fclose(xfd); diff --git a/build/pack.c b/build/pack.c index 3612c54..aa16e43 100644 --- a/build/pack.c +++ b/build/pack.c @@ -137,10 +137,10 @@ int packageBinaries(Spec spec) const char *dn; *binDir = '\0'; dn = rpmGetPath("%{_rpmdir}/", binRpm, NULL); - if (stat(dn, &st) < 0) { + if (Stat(dn, &st) < 0) { switch(errno) { case ENOENT: - if (mkdir(dn, 0755) == 0) + if (Mkdir(dn, 0755) == 0) break; /*@fallthrough@*/ default: @@ -433,6 +433,7 @@ static int cpio_doio(FD_t fdo, CSA_t * csa, const char * fmode) int rc; const char *failedFile = NULL; + (void) Fflush(fdo); #ifndef DYING cfd = Fdopen(fdDup(Fileno(fdo)), fmode); #else diff --git a/build/parsePrep.c b/build/parsePrep.c index 5e12a72..9830f6b 100644 --- a/build/parsePrep.c +++ b/build/parsePrep.c @@ -276,9 +276,14 @@ static int doSetupMacro(Spec spec, char *line) poptFreeContext(optCon); /* cd to the build dir */ - strcpy(buf, "cd %{_builddir}"); - expandMacros(spec, spec->macros, buf, sizeof(buf)); - appendLineStringBuf(spec->prep, buf); + { const char * buildURL = rpmGenPath(spec->rootdir, "%{_builddir}", ""); + const char *buildDir; + + (void) urlPath(buildURL, &buildDir); + sprintf(buf, "cd %s", buildDir); + appendLineStringBuf(spec->prep, buf); + xfree(buildURL); + } /* delete any old sources */ if (!leaveDirs) { diff --git a/build/parseSpec.c b/build/parseSpec.c index 1080063..b74ab00 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -169,7 +169,8 @@ int readLine(Spec spec, int strip) retry: /* Make sure the current file is open */ if (ofi->fd == NULL) { - if ((ofi->fd = Fopen(ofi->fileName, "r.fpio")) == NULL) { + ofi->fd = Fopen(ofi->fileName, "r.fpio"); + if (ofi->fd == NULL || Ferror(ofi->fd)) { /* XXX Fstrerror */ rpmError(RPMERR_BADSPEC, _("Unable to open %s: %s\n"), ofi->fileName, Fstrerror(ofi->fd)); @@ -180,7 +181,7 @@ retry: /* Make sure we have something in the read buffer */ if (!(ofi->readPtr && *(ofi->readPtr))) { - if (!fgets(ofi->readBuf, BUFSIZ, fpio->ffileno(ofi->fd))) { + if (!fgets(ofi->readBuf, BUFSIZ, fdGetFp(ofi->fd))) { /* EOF */ if (spec->readStack->next) { rpmError(RPMERR_UNMATCHEDIF, _("Unclosed %%if")); diff --git a/lib/Makefile.am b/lib/Makefile.am index 5b3049d..a8bd2de 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -25,7 +25,7 @@ mylibs= $(top_builddir)/lib/.libs/librpm.a \ lib_LTLIBRARIES = librpm.la librpm_la_SOURCES = \ cpio.c dbindex.c depends.c falloc.c \ - formats.c fprint.c fs.c ftp.c hash.c header.c install.c \ + formats.c fprint.c fs.c hash.c header.c install.c \ lookup.c macro.c md5.c md5sum.c \ messages.c misc.c oldheader.c package.c problems.c query.c \ rebuilddb.c rpmchecksig.c rpmdb.c rpmerr.c rpminstall.c \ diff --git a/lib/ftp.c b/lib/ftp.c deleted file mode 100644 index da60d2c..0000000 --- a/lib/ftp.c +++ /dev/null @@ -1,663 +0,0 @@ -#include "system.h" - -#include - -#if !defined(HAVE_CONFIG_H) -#define HAVE_MACHINE_TYPES_H 1 -#define HAVE_ALLOCA_H 1 -#define HAVE_NETINET_IN_SYSTM_H 1 -#define HAVE_SYS_SOCKET_H 1 -#endif - -#if ! HAVE_HERRNO -extern int h_errno; -#endif - -#include - -#ifdef __LCLINT__ -#define ntohl(_x) (_x) -#define ntohs(_x) (_x) -#define htonl(_x) (_x) -#define htons(_x) (_x) -typedef unsigned int uint32_t; -#define INADDR_ANY ((uint32_t) 0x00000000) -#define IPPROTO_IP 0 -extern int h_errno; - -#else /* __LCLINT__ */ - -#if HAVE_MACHINE_TYPES_H -# include -#endif - -#if HAVE_NETINET_IN_SYSTM_H -# include -# include -#endif - -#include -#include -#include -#include -#endif /* __LCLINT__ */ - -#include - -#if !defined(HAVE_INET_ATON) -int inet_aton(const char *cp, struct in_addr *inp); -#endif - -#if defined(USE_ALT_DNS) && USE_ALT_DNS -#include "dns.h" -#endif - -#include -/*@access urlinfo@*/ - -#ifdef __MINT__ -# ifndef EAGAIN -# define EAGAIN EWOULDBLOCK -# endif -# ifndef O_NONBLOCK -# define O_NONBLOCK O_NDELAY -# endif -#endif - -int _ftp_debug = 0; -#define DBG(_f, _x) if ((_ftp_debug | (_f))) fprintf _x - -static int checkResponse(urlinfo u, /*@out@*/ int *ecp, /*@out@*/ char ** str) -{ - char *buf; - size_t bufAlloced; - int bufLength = 0; - const char *s; - char *se; - int ec = 0; - int moretodo = 1; - char errorCode[4]; - - URLSANE(u); - buf = u->buf; - bufAlloced = u->bufAlloced; - *buf = '\0'; - - errorCode[0] = '\0'; - - do { - int rc; - - /* - * Read next line from server. - */ - se = buf + bufLength; - *se = '\0'; - rc = fdRdline(u->ctrl, se, (bufAlloced - bufLength)); - if (rc < 0) { - ec = FTPERR_BAD_SERVER_RESPONSE; - continue; - } else if (rc == 0 || fdWritable(u->ctrl, 0) < 1) - moretodo = 0; - - /* - * Process next line from server. - */ - for (s = se; *s != '\0'; s = se) { - const char *e; - - while (*se && *se != '\n') se++; - - if (se > s && se[-1] == '\r') - se[-1] = '\0'; - if (*se == '\0') - break; - - DBG(0, (stderr, "<- %s\n", s)); - - /* HTTP: header termination on empty line */ - if (*s == '\0') { - moretodo = 0; - break; - } - *se++ = '\0'; - - /* HTTP: look for "HTTP/1.1 123 ..." */ - if (!strncmp(s, "HTTP", sizeof("HTTP")-1)) { - u->httpContentLength = -1; - if ((e = strchr(s, '.')) != NULL) { - e++; - u->httpVersion = *e - '0'; - if (u->httpVersion < 1 || u->httpVersion > 2) - u->httpPersist = u->httpVersion = 0; - else - u->httpPersist = 1; - } - if ((e = strchr(s, ' ')) != NULL) { - e++; - if (strchr("0123456789", *e)) - strncpy(errorCode, e, 3); - errorCode[3] = '\0'; - } - continue; - } - - /* HTTP: look for "token: ..." */ - for (e = s; *e && !(*e == ' ' || *e == ':'); e++) - ; - if (e > s && *e++ == ':') { - size_t ne = (e - s); - while (*e && *e == ' ') e++; -#if 0 - if (!strncmp(s, "Date:", ne)) { - } else - if (!strncmp(s, "Server:", ne)) { - } else - if (!strncmp(s, "Last-Modified:", ne)) { - } else - if (!strncmp(s, "ETag:", ne)) { - } else -#endif - if (!strncmp(s, "Accept-Ranges:", ne)) { - if (!strcmp(e, "bytes")) - u->httpHasRange = 1; - if (!strcmp(e, "none")) - u->httpHasRange = 0; - } else - if (!strncmp(s, "Content-Length:", ne)) { - if (strchr("0123456789", *e)) - u->httpContentLength = atoi(e); - } else - if (!strncmp(s, "Connection:", ne)) { - if (!strcmp(e, "close")) - u->httpPersist = 0; - } else -#if 0 - if (!strncmp(s, "Content-Type:", ne)) { - } else - if (!strncmp(s, "Transfer-Encoding:", ne)) { - } else - if (!strncmp(s, "Allow:", ne)) { - } else -#endif - ; - continue; - } - - /* HTTP: look for "501 ... " */ - if (!strncmp(s, "", sizeof("<TITLE>")-1)) - s += sizeof("<TITLE>") - 1; - - /* FTP: look for "123-" and/or "123 " */ - if (strchr("0123456789", *s)) { - if (errorCode[0]) { - if (!strncmp(s, errorCode, sizeof("123")-1) && s[3] == ' ') - moretodo = 0; - } else { - strncpy(errorCode, s, sizeof("123")-1); - errorCode[3] = '\0'; - if (s[3] != '-') - moretodo = 0; - } - } - } - - if (moretodo && se > s) { - bufLength = se - s - 1; - if (s != buf) - memcpy(buf, s, bufLength); - } else { - bufLength = 0; - } - } while (moretodo && ec == 0); - - if (str) *str = buf; - if (ecp) *ecp = atoi(errorCode); - - return ec; -} - -int ftpCheckResponse(urlinfo u, /*@out@*/ char ** str) -{ - int ec = 0; - int rc; - - URLSANE(u); - rc = checkResponse(u, &ec, str); - - switch (ec) { - case 550: - return FTPERR_FILE_NOT_FOUND; - /*@notreached@*/ break; - case 552: - return FTPERR_NIC_ABORT_IN_PROGRESS; - /*@notreached@*/ break; - default: - if (ec >= 400 && ec <= 599) - return FTPERR_BAD_SERVER_RESPONSE; - break; - } - return rc; -} - -int ftpCommand(urlinfo u, ...) -{ - va_list ap; - int len = 0; - const char * s, * t; - char * te; - int rc; - - URLSANE(u); - va_start(ap, u); - while ((s = va_arg(ap, const char *)) != NULL) { - if (len) len++; - len += strlen(s); - } - len += sizeof("\r\n")-1; - va_end(ap); - - t = te = alloca(len + 1); - - va_start(ap, u); - while ((s = va_arg(ap, const char *)) != NULL) { - if (te > t) *te++ = ' '; - te = stpcpy(te, s); - } - te = stpcpy(te, "\r\n"); - va_end(ap); - - DBG(0, (stderr, "-> %s", t)); - if (fdio->write(u->ctrl, t, (te-t)) != (te-t)) - return FTPERR_SERVER_IO_ERROR; - - rc = ftpCheckResponse(u, NULL); - return rc; -} - -#if !defined(USE_ALT_DNS) || !USE_ALT_DNS -static int mygethostbyname(const char * host, struct in_addr * address) -{ - struct hostent * hostinfo; - - hostinfo = /*@-unrecog@*/ gethostbyname(host) /*@=unrecog@*/; - if (!hostinfo) return 1; - - memcpy(address, hostinfo->h_addr_list[0], sizeof(*address)); - return 0; -} -#endif - -static int getHostAddress(const char * host, struct in_addr * address) -{ - if (isdigit(host[0])) { - if (! /*@-unrecog@*/ inet_aton(host, address) /*@=unrecog@*/ ) { - return FTPERR_BAD_HOST_ADDR; - } - } else { - if (mygethostbyname(host, address)) { - errno = h_errno; - return FTPERR_BAD_HOSTNAME; - } - } - - return 0; -} - -static int tcpConnect(FD_t ctrl, const char *host, int port) -{ - struct sockaddr_in sin; - int fdno = -1; - int rc; - - sin.sin_family = AF_INET; - sin.sin_port = htons(port); - sin.sin_addr.s_addr = INADDR_ANY; - - do { - if ((rc = getHostAddress(host, &sin.sin_addr)) < 0) - break; - - if ((fdno = socket(sin.sin_family, SOCK_STREAM, IPPROTO_IP)) < 0) { - rc = FTPERR_FAILED_CONNECT; - break; - } - - if (connect(fdno, (struct sockaddr *) &sin, sizeof(sin))) { - rc = FTPERR_FAILED_CONNECT; - break; - } - } while (0); - - if (rc < 0) - goto errxit; - - DBG(0, (stderr,"++ connect %s:%d on fdno %d\n", - /*@-unrecog@*/ inet_ntoa(sin.sin_addr) /*@=unrecog@*/ , - ntohs(sin.sin_port), fdno)); - - return fdno; - -errxit: - fdSetSyserrno(ctrl, errno, ftpStrerror(rc)); - if (fdno >= 0) - close(fdno); - return rc; -} - -int httpOpen(urlinfo u, FD_t ctrl, const char *httpcmd) -{ - const char *host; - const char *path; - int port; - int rc; - char *req; - size_t len; - int retrying = 0; - - URLSANE(u); - assert(ctrl != NULL); - - if (((host = (u->proxyh ? u->proxyh : u->host)) == NULL)) - return FTPERR_BAD_HOSTNAME; - - if ((port = (u->proxyp > 0 ? u->proxyp : u->port)) < 0) port = 80; - path = (u->proxyh || u->proxyp > 0) ? u->url : u->path; - -reopen: - if (fdio->fileno(ctrl) >= 0 && (rc = fdWritable(ctrl, 0)) < 1) { -if (_ftp_debug) -fprintf(stderr, "*** httpOpen closing ctrl fdno %d rc %d\n", fdio->fileno(ctrl), rc); - fdio->close(ctrl); - } - - if (fdio->fileno(ctrl) < 0) { - rc = tcpConnect(ctrl, host, port); - fdSetFdno(ctrl, (rc >= 0 ? rc : -1)); - if (rc < 0) - goto errxit2; - - ctrl = fdLink(ctrl, "open ctrl (httpOpen)"); - } - - len = sizeof("\ -req x HTTP/1.0\r\n\ -User-Agent: rpm/3.0.4\r\n\ -Host: y:z\r\n\ -Accept: text/plain\r\n\ -\r\n\ -") + strlen(httpcmd) + strlen(path) + sizeof(VERSION) + strlen(host) + 20; - - req = alloca(len); - *req = '\0'; - - sprintf(req, "\ -%s %s HTTP/1.%d\r\n\ -User-Agent: rpm/%s\r\n\ -Host: %s:%d\r\n\ -Accept: text/plain\r\n\ -\r\n\ -", httpcmd, path, (u->httpVersion ? 1 : 0), VERSION, host, port); - - DBG(0, (stderr, "-> %s", req)); - - if (fdio->write(ctrl, req, len) != len) { - rc = FTPERR_SERVER_IO_ERROR; - goto errxit; - } - - { int ec = 0; - rc = checkResponse(u, &ec, NULL); - -if (_ftp_debug && !(rc == 0 && ec == 200)) -fprintf(stderr, "*** httpOpen: rc %d ec %d\n", rc, ec); - - switch (rc) { - case 0: - if (ec == 200) - break; - /*@fallthrough@*/ - default: - if (!retrying) { /* not HTTP_OK */ -if (_ftp_debug) -fprintf(stderr, "*** httpOpen ctrl %p reopening ...\n", ctrl); - retrying = 1; - fdio->close(ctrl); - goto reopen; - } - rc = FTPERR_FILE_NOT_FOUND; - goto errxit; - /*@notreached@*/ break; - } - } - - ctrl = fdLink(ctrl, "open data (httpOpen)"); - return fdio->fileno(ctrl); - -errxit: - fdSetSyserrno(ctrl, errno, ftpStrerror(rc)); -errxit2: - if (fdio->fileno(ctrl) >= 0) - fdio->close(ctrl); - return rc; -} - -int ftpOpen(urlinfo u) -{ - const char * host; - const char * user; - const char * password; - int port; - int rc; - - URLSANE(u); - if (((host = (u->proxyh ? u->proxyh : u->host)) == NULL)) { - rc = FTPERR_BAD_HOSTNAME; - goto errxit; - } - - if ((port = (u->proxyp > 0 ? u->proxyp : u->port)) < 0) port = IPPORT_FTP; - - if ((user = (u->proxyu ? u->proxyu : u->user)) == NULL) - user = "anonymous"; - - if ((password = u->password) == NULL) { - if (getuid()) { - struct passwd * pw = getpwuid(getuid()); - char *myp = alloca(strlen(pw->pw_name) + sizeof("@")); - strcpy(myp, pw->pw_name); - strcat(myp, "@"); - password = myp; - } else { - password = "root@"; - } - } - - if (fdio->fileno(u->ctrl) >= 0 && fdWritable(u->ctrl, 0) < 1) - fdio->close(u->ctrl); - - if (fdio->fileno(u->ctrl) < 0) { - rc = tcpConnect(u->ctrl, host, port); - fdSetFdno(u->ctrl, (rc >= 0 ? rc : -1)); - if (rc < 0) - goto errxit2; - } - - if ((rc = ftpCheckResponse(u, NULL))) - goto errxit; - - if ((rc = ftpCommand(u, "USER", user, NULL))) - goto errxit; - - if ((rc = ftpCommand(u, "PASS", password, NULL))) - goto errxit; - - if ((rc = ftpCommand(u, "TYPE", "I", NULL))) - goto errxit; - - u->ctrl = fdLink(u->ctrl, "open ctrl"); - return fdio->fileno(u->ctrl); - -errxit: - fdSetSyserrno(u->ctrl, errno, ftpStrerror(rc)); -errxit2: - if (fdio->fileno(u->ctrl) >= 0) - fdio->close(u->ctrl); - return rc; -} - -int ftpFileDone(urlinfo u, FD_t data) -{ - int rc = 0; - int ftpFileDoneNeeded; - - URLSANE(u); - ftpFileDoneNeeded = fdGetFtpFileDoneNeeded(data); - assert(ftpFileDoneNeeded); - - if (ftpFileDoneNeeded) { - fdSetFtpFileDoneNeeded(data, 0); - u->ctrl = fdFree(u->ctrl, "open data (ftpFileDone)"); - u->ctrl = fdFree(u->ctrl, "grab data (ftpFileDone)"); - rc = ftpCheckResponse(u, NULL); - } - return rc; -} - -int ftpFileDesc(urlinfo u, const char *cmd, FD_t data) -{ - struct sockaddr_in dataAddress; - int cmdlen; - char * passReply; - char * chptr; - int rc; - int ftpFileDoneNeeded; - - URLSANE(u); - if (cmd == NULL) - return FTPERR_UNKNOWN; /* XXX W2DO? */ - - cmdlen = strlen(cmd); - -/* - * XXX When ftpFileDesc() is called, there may be a lurking - * XXX transfer complete message (if ftpFileDone() was not - * XXX called to clear that message). Detect that condition now. - */ - ftpFileDoneNeeded = fdGetFtpFileDoneNeeded(data); - assert(ftpFileDoneNeeded == 0); - -/* - * Get the ftp version of the Content-Length. - */ - if (!strncmp(cmd, "RETR", 4)) { - char * req = strcpy(alloca(cmdlen + 1), cmd); - unsigned cl; - - memcpy(req, "SIZE", 4); - DBG(0, (stderr, "-> %s", req)); - if (fdio->write(u->ctrl, req, cmdlen) != cmdlen) { - rc = FTPERR_SERVER_IO_ERROR; - goto errxit; - } - if ((rc = ftpCheckResponse(u, &passReply))) - goto errxit; - if (sscanf(passReply, "%d %u", &rc, &cl) != 2) { - rc = FTPERR_BAD_SERVER_RESPONSE; - goto errxit; - } - rc = 0; - u->httpContentLength = cl; - } - - DBG(0, (stderr, "-> PASV\n")); - if (fdio->write(u->ctrl, "PASV\r\n", 6) != 6) { - rc = FTPERR_SERVER_IO_ERROR; - goto errxit; - } - - if ((rc = ftpCheckResponse(u, &passReply))) { - rc = FTPERR_PASSIVE_ERROR; - goto errxit; - } - - chptr = passReply; - while (*chptr && *chptr != '(') chptr++; - if (*chptr != '(') return FTPERR_PASSIVE_ERROR; - chptr++; - passReply = chptr; - while (*chptr && *chptr != ')') chptr++; - if (*chptr != ')') return FTPERR_PASSIVE_ERROR; - *chptr-- = '\0'; - - while (*chptr && *chptr != ',') chptr--; - if (*chptr != ',') return FTPERR_PASSIVE_ERROR; - chptr--; - while (*chptr && *chptr != ',') chptr--; - if (*chptr != ',') return FTPERR_PASSIVE_ERROR; - *chptr++ = '\0'; - - /* now passReply points to the IP portion, and chptr points to the - port number portion */ - - { int i, j; - dataAddress.sin_family = AF_INET; - if (sscanf(chptr, "%d,%d", &i, &j) != 2) { - rc = FTPERR_PASSIVE_ERROR; - goto errxit; - } - dataAddress.sin_port = htons((((unsigned)i) << 8) + j); - } - - chptr = passReply; - while (*chptr++) { - if (*chptr == ',') *chptr = '.'; - } - - if (!inet_aton(passReply, &dataAddress.sin_addr)) { - rc = FTPERR_PASSIVE_ERROR; - goto errxit; - } - - rc = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); - fdSetFdno(data, (rc >= 0 ? rc : -1)); - if (rc < 0) { - rc = FTPERR_FAILED_CONNECT; - goto errxit; - } - data = fdLink(data, "open data (ftpFileDesc)"); - - /* XXX setsockopt SO_LINGER */ - /* XXX setsockopt SO_KEEPALIVE */ - /* XXX setsockopt SO_TOS IPTOS_THROUGHPUT */ - - while (connect(fdio->fileno(data), (struct sockaddr *) &dataAddress, - sizeof(dataAddress)) < 0) { - if (errno == EINTR) - continue; - rc = FTPERR_FAILED_DATA_CONNECT; - goto errxit; - } - - DBG(0, (stderr, "-> %s", cmd)); - if (fdio->write(u->ctrl, cmd, cmdlen) != cmdlen) { - rc = FTPERR_SERVER_IO_ERROR; - goto errxit; - } - - if ((rc = ftpCheckResponse(u, NULL))) { - goto errxit; - } - - fdSetFtpFileDoneNeeded(data, 1); - u->ctrl = fdLink(u->ctrl, "grab data (ftpFileDesc)"); - u->ctrl = fdLink(u->ctrl, "open data (ftpFileDesc)"); - return 0; - -errxit: - fdSetSyserrno(u->ctrl, errno, ftpStrerror(rc)); -errxit2: - if (fdio->fileno(data) >= 0) - fdio->close(data); - return rc; -} diff --git a/lib/install.c b/lib/install.c index a513462..1089e4d 100644 --- a/lib/install.c +++ b/lib/install.c @@ -348,7 +348,12 @@ static int installArchive(FD_t fd, struct fileInfo * files, (void)notify(h, RPMCALLBACK_INST_PROGRESS, 0, archiveSize, pkgKey, notifyData); + (void) Fflush(fd); +#ifndef DYING + cfd = Fdopen(fdDup(Fileno(fd)), "r.gzdio"); +#else cfd = Fdopen(fd, "r.gzdio"); +#endif rc = cpioInstallArchive(cfd, map, mappedFiles, ((notify && archiveSize) || specFile) ? callback : NULL, &info, &failedFile); diff --git a/lib/misc.c b/lib/misc.c index 6238f37..7b3c8a1 100644 --- a/lib/misc.c +++ b/lib/misc.c @@ -355,10 +355,11 @@ char * gidToGname(gid_t gid) { } int makeTempFile(const char * prefix, const char ** fnptr, FD_t * fdptr) { + const char * tempfn; const char * tfn; + int temput; FD_t fd; int ran; - struct stat sb, sb2; if (!prefix) prefix = ""; @@ -372,35 +373,24 @@ int makeTempFile(const char * prefix, const char ** fnptr, FD_t * fdptr) { do { char tfnbuf[64]; - const char * tempfn; #ifndef NOTYET sprintf(tfnbuf, "rpm-tmp.%d", ran++); if (tfn) xfree(tfn); - tfn = tempfn = rpmGetPath("%{_tmppath}/", tfnbuf, NULL); + tempfn = rpmGenPath(prefix, "%{_tmppath}/", tfnbuf); #else strcpy(tfnbuf, "rpm-tmp.XXXXXX"); if (tfn) xfree(tfn); - tfn = tempfn = rpmGetPath("%{_tmppath}/", mktemp(tfnbuf), NULL); + tempfn = rpmGenPath(prefix, "%{_tmppath}/", mktemp(tfnbuf)); #endif - switch (urlIsURL(tempfn)) { - case URL_IS_PATH: - tfn += sizeof("file://") - 1; - tfn = strchr(tfn, '/'); - /*@fallthrough@*/ - case URL_IS_UNKNOWN: - if (prefix && prefix[strlen(prefix) - 1] == '/') - while (*tfn == '/') tfn++; - tfn = rpmGetPath( (prefix ? prefix : ""), tfn, NULL); - xfree(tempfn); - break; - case URL_IS_FTP: + temput = urlPath(tempfn, &tfn); + switch (temput) { case URL_IS_HTTP: case URL_IS_DASH: + goto errxit; + /*@notreached@*/ break; default: - xfree(tempfn); - return 1; - /*@notreached@*/ + break; } /* XXX FIXME: build/build.c Fdopen assertion failure, makeTempFile uses fdio */ @@ -411,38 +401,42 @@ int makeTempFile(const char * prefix, const char ** fnptr, FD_t * fdptr) { #endif } while ((fd == NULL || Ferror(fd)) && errno == EEXIST); - if (!Stat(tfn, &sb) && S_ISLNK(sb.st_mode)) { - rpmError(RPMERR_SCRIPT, _("error creating temporary file %s"), tfn); - xfree(tfn); - return 1; - } - - if (sb.st_nlink != 1) { - rpmError(RPMERR_SCRIPT, _("error creating temporary file %s"), tfn); - xfree(tfn); - return 1; - } + switch(temput) { + struct stat sb, sb2; + case URL_IS_PATH: + case URL_IS_UNKNOWN: + if (!stat(tfn, &sb) && S_ISLNK(sb.st_mode)) { + rpmError(RPMERR_SCRIPT, _("error creating temporary file %s"), tfn); + goto errxit; + } -#ifndef NOTYET - if (fstat(Fileno(fd), &sb2) == 0) -#else - if (Stat(tfn, &sb2) == 0) -#endif - { - if (sb2.st_ino != sb.st_ino || sb2.st_dev != sb.st_dev) { + if (sb.st_nlink != 1) { rpmError(RPMERR_SCRIPT, _("error creating temporary file %s"), tfn); - xfree(tfn); - return 1; + goto errxit; + } + + if (fstat(Fileno(fd), &sb2) == 0) { + if (sb2.st_ino != sb.st_ino || sb2.st_dev != sb.st_dev) { + rpmError(RPMERR_SCRIPT, _("error creating temporary file %s"), tfn); + goto errxit; + } } + break; + default: + break; } if (fnptr) *fnptr = tfn; else - xfree(tfn); + xfree(tempfn); *fdptr = fd; return 0; + +errxit: + xfree(tempfn); + return 1; } char * currentDirectory(void) { diff --git a/lib/rpmchecksig.c b/lib/rpmchecksig.c index 258f5e4..ecd22e3 100644 --- a/lib/rpmchecksig.c +++ b/lib/rpmchecksig.c @@ -26,7 +26,7 @@ static int manageFile(FD_t *fdp, const char **fnp, int flags, int rc) /* open a file and set *fdp */ if (*fdp == NULL && fnp && *fnp) { - fd = Fopen(*fnp, ((flags & O_RDONLY) ? "r.ufdio" : "w.ufdio")); + fd = Fopen(*fnp, ((flags & O_RDONLY) ? "r.ufdio" : "r+.ufdio")); if (fd == NULL || Ferror(fd)) { fprintf(stderr, _("%s: open failed: %s\n"), *fnp, Fstrerror(fd)); diff --git a/lib/rpmio.h b/lib/rpmio.h index 72b6fb8..ddb5289 100644 --- a/lib/rpmio.h +++ b/lib/rpmio.h @@ -70,6 +70,7 @@ int Fclose ( /*@killref@*/ FD_t fd); FD_t Fdopen (FD_t fd, const char * fmode); FD_t Fopen (const char * path, const char * fmode); +int Fflush (FD_t fd); int Ferror (FD_t fd); int Fileno (FD_t fd); @@ -102,9 +103,6 @@ void fdSetIo (FD_t fd, FDIO_t io); int fdGetRdTimeoutSecs(FD_t fd); -int fdGetFtpFileDoneNeeded(FD_t fd); -void fdSetFtpFileDoneNeeded(FD_t fd, int ftpFileDoneNeeded); - long int fdGetCpioPos(FD_t fd); void fdSetCpioPos(FD_t fd, long int cpioPos); @@ -129,12 +127,35 @@ extern /*@null@*/ FILE *fdFdopen( /*@only@*/ void * cookie, const char * mode); #define fdOpen fdio->open #endif +int fdWritable(FD_t fd, int secs); +int fdReadable(FD_t fd, int secs); + /*@observer@*/ extern FDIO_t fdio; /*@observer@*/ extern FDIO_t fpio; /* * Support for FTP and HTTP I/O. */ +#ifndef IPPORT_FTP +#define IPPORT_FTP 21 +#endif +#ifndef IPPORT_HTTP +#define IPPORT_HTTP 80 +#endif + +#define FTPERR_BAD_SERVER_RESPONSE -1 +#define FTPERR_SERVER_IO_ERROR -2 +#define FTPERR_SERVER_TIMEOUT -3 +#define FTPERR_BAD_HOST_ADDR -4 +#define FTPERR_BAD_HOSTNAME -5 +#define FTPERR_FAILED_CONNECT -6 +#define FTPERR_FILE_IO_ERROR -7 +#define FTPERR_PASSIVE_ERROR -8 +#define FTPERR_FAILED_DATA_CONNECT -9 +#define FTPERR_FILE_NOT_FOUND -10 +#define FTPERR_NIC_ABORT_IN_PROGRESS -11 +#define FTPERR_UNKNOWN -100 + /*@dependent@*/ /*@null@*/ void * ufdGetUrlinfo(FD_t fd); /*@observer@*/ const char * urlStrerror(const char * url); @@ -162,10 +183,6 @@ const char *const ftpStrerror(int errorNumber); #define ufdUnlink ufdio->unlink #endif -int fdWritable(FD_t fd, int secs); -int fdReadable(FD_t fd, int secs); -int fdRdline(FD_t fd, /*@out@*/ char * buf, size_t len); - int timedRead(FD_t fd, /*@out@*/ void * bufptr, int length); #define timedRead ufdio->read diff --git a/lib/rpmurl.h b/lib/rpmurl.h index d75c634..f3e7708 100644 --- a/lib/rpmurl.h +++ b/lib/rpmurl.h @@ -3,26 +3,6 @@ #include <assert.h> -#ifndef IPPORT_FTP -#define IPPORT_FTP 21 -#endif -#ifndef IPPORT_HTTP -#define IPPORT_HTTP 80 -#endif - -#define FTPERR_BAD_SERVER_RESPONSE -1 -#define FTPERR_SERVER_IO_ERROR -2 -#define FTPERR_SERVER_TIMEOUT -3 -#define FTPERR_BAD_HOST_ADDR -4 -#define FTPERR_BAD_HOSTNAME -5 -#define FTPERR_FAILED_CONNECT -6 -#define FTPERR_FILE_IO_ERROR -7 -#define FTPERR_PASSIVE_ERROR -8 -#define FTPERR_FAILED_DATA_CONNECT -9 -#define FTPERR_FILE_NOT_FOUND -10 -#define FTPERR_NIC_ABORT_IN_PROGRESS -11 -#define FTPERR_UNKNOWN -100 - typedef enum { URL_IS_UNKNOWN = 0, URL_IS_DASH = 1, @@ -54,8 +34,6 @@ typedef /*@abstract@*/ /*@refcounted@*/ struct urlinfo { int openError; /* Type of open failure */ int httpVersion; int httpHasRange; - int httpContentLength; - int httpPersist; int magic; } *urlinfo; @@ -63,13 +41,7 @@ typedef /*@abstract@*/ /*@refcounted@*/ struct urlinfo { extern "C" { #endif -int ftpCheckResponse(urlinfo u, /*@out@*/ char ** str); -int ftpCommand(urlinfo u, ...); - -int httpOpen(urlinfo u, FD_t ctrl, const char * httpcmd); -int ftpOpen(urlinfo u); -int ftpFileDone(urlinfo u, FD_t data); -int ftpFileDesc(urlinfo u, const char * cmd, FD_t data); +extern int url_iobuf_size; urlinfo urlLink(urlinfo u, const char * msg); urlinfo XurlLink(urlinfo u, const char * msg, const char * file, unsigned line); diff --git a/lib/url.c b/lib/url.c index 6b3d1ba..1d068d1 100644 --- a/lib/url.c +++ b/lib/url.c @@ -16,6 +16,7 @@ /*@access urlinfo@*/ #define URL_IOBUF_SIZE 4096 +int url_iobuf_size = URL_IOBUF_SIZE; #define RPMURL_DEBUG_IO 0x40000000 #define RPMURL_DEBUG_REFS 0x20000000 @@ -50,8 +51,7 @@ urlinfo XurlNew(const char *msg, const char *file, unsigned line) u->bufAlloced = 0; u->buf = NULL; u->httpHasRange = 1; - u->httpContentLength = 0; - u->httpPersist = u->httpVersion = 0; + u->httpVersion = 0; u->nrefs = 0; u->magic = URLMAGIC; return XurlLink(u, msg, file, line); @@ -190,8 +190,6 @@ static void urlFind(urlinfo *uret, int mustAsk) uCache = xmalloc(sizeof(*uCache)); } uCache[i] = urlLink(u, "uCache (miss)"); - u->bufAlloced = URL_IOBUF_SIZE; - u->buf = xcalloc(u->bufAlloced, sizeof(char)); u = urlFree(u, "urlSplit (urlFind miss)"); } else { /* XXX Swap original url and path into the cached structure */ @@ -313,9 +311,17 @@ urltype urlIsURL(const char * url) { int urlPath(const char * url, const char ** pathp) { - const char *path = url; - int urltype = urlIsURL(url); + const char *path; + int urltype; + if (url == NULL) { /* XXX paranoia */ + if (pathp) + *pathp = xstrdup("/"); + return URL_IS_UNKNOWN; + } + + path = url; + urltype = urlIsURL(url); switch (urltype) { case URL_IS_FTP: path += sizeof("ftp://") - 1; @@ -364,14 +370,16 @@ int urlSplit(const char * url, urlinfo *uret) while (1) { /* Point to end of next item */ while (*se && *se != '/') se++; +#ifdef DYING if (*se == '\0') { /* XXX can't find path */ if (myurl) free(myurl); u = urlFree(u, "urlSplit (error #2)"); return -1; } +#endif /* Item was service. Save service and go for the rest ...*/ - if ((se != s) && se[-1] == ':' && se[0] == '/' && se[1] == '/') { + if (*se && (se != s) && se[-1] == ':' && se[0] == '/' && se[1] == '/') { se[-1] = '\0'; u->service = xstrdup(s); se += 2; /* skip over "//" */ @@ -380,7 +388,7 @@ int urlSplit(const char * url, urlinfo *uret) } /* Item was everything-but-path. Save path and continue parse on rest */ - u->path = xstrdup(se); + u->path = xstrdup((*se ? se : "/")); *se = '\0'; break; } diff --git a/po/POTFILES.in b/po/POTFILES.in index d367da1..96f3a49 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -32,7 +32,6 @@ lib/falloc.c lib/formats.c lib/fprint.c lib/fs.c -lib/ftp.c lib/hash.c lib/header.c lib/install.c diff --git a/po/rpm.pot b/po/rpm.pot index 8a792e6..639d6ec 100644 --- a/po/rpm.pot +++ b/po/rpm.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1999-11-15 18:45-0500\n" +"POT-Creation-Date: 1999-11-18 12:30-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -23,102 +23,101 @@ msgstr "" msgid "failed build dependencies:\n" msgstr "" -#. XXX Fstrerror -#: build.c:65 +#: build.c:64 #, c-format msgid "Unable to open spec file %s: %s\n" msgstr "" -#: build.c:121 build.c:134 +#: build.c:120 build.c:133 #, c-format msgid "Failed to open tar pipe: %s\n" msgstr "" #. Give up -#: build.c:142 +#: build.c:141 #, c-format msgid "Failed to read spec file from %s\n" msgstr "" -#: build.c:170 +#: build.c:169 #, c-format msgid "Failed to rename %s to %s: %s\n" msgstr "" -#: build.c:208 +#: build.c:207 #, c-format msgid "File is not a regular file: %s\n" msgstr "" -#: build.c:214 +#: build.c:213 #, c-format msgid "File %s does not appear to be a specfile.\n" msgstr "" #. parse up the build operators -#: build.c:271 +#: build.c:270 #, c-format msgid "Building target platforms: %s\n" msgstr "" -#: build.c:286 +#: build.c:285 #, c-format msgid "Building for target %s\n" msgstr "" -#: build.c:336 +#: build.c:335 msgid "buildroot already specified" msgstr "" -#: build.c:343 +#: build.c:342 msgid "--buildarch has been obsoleted. Use the --target option instead.\n" msgstr "" -#: build.c:347 +#: build.c:346 msgid "--buildos has been obsoleted. Use the --target option instead.\n" msgstr "" -#: build.c:368 +#: build.c:367 msgid "override build architecture" msgstr "" -#: build.c:370 +#: build.c:369 msgid "override build operating system" msgstr "" -#: build.c:372 +#: build.c:371 msgid "override build root" msgstr "" -#: build.c:374 rpm.c:490 +#: build.c:373 rpm.c:490 msgid "remove build tree when done" msgstr "" -#: build.c:376 +#: build.c:375 msgid "do not execute any stages of the build" msgstr "" -#: build.c:378 +#: build.c:377 msgid "do not accept I18N msgstr's from specfile" msgstr "" -#: build.c:380 +#: build.c:379 msgid "remove sources when done" msgstr "" -#: build.c:382 +#: build.c:381 msgid "remove specfile when done" msgstr "" -#: build.c:384 rpm.c:488 +#: build.c:383 rpm.c:488 msgid "skip straight to specified stage (only for c,i)" msgstr "" -#: build.c:386 +#: build.c:385 msgid "override target platform" msgstr "" -#: build.c:388 +#: build.c:387 msgid "lookup I18N strings in specfile catalog" msgstr "" @@ -1235,21 +1234,21 @@ msgstr "" msgid "cannot re-open payload: %s\n" msgstr "" -#: build/build.c:84 build/pack.c:270 +#: build/build.c:85 build/pack.c:270 msgid "Unable to open temp file" msgstr "" -#: build/build.c:127 +#: build/build.c:129 #, c-format msgid "Executing: %s\n" msgstr "" -#: build/build.c:147 +#: build/build.c:149 #, c-format msgid "Exec of %s failed (%s)" msgstr "" -#: build/build.c:153 +#: build/build.c:155 #, c-format msgid "Bad exit status from %s (%s)" msgstr "" @@ -1417,7 +1416,7 @@ msgstr "" msgid "Could not open %%files file %s: %s" msgstr "" -#: build/files.c:1191 build/pack.c:495 +#: build/files.c:1191 build/pack.c:496 #, c-format msgid "line: %s" msgstr "" @@ -1545,47 +1544,47 @@ msgstr "" msgid "Wrote: %s\n" msgstr "" -#: build/pack.c:444 +#: build/pack.c:445 #, c-format msgid "create archive failed on file %s: %s" msgstr "" -#: build/pack.c:463 +#: build/pack.c:464 #, c-format msgid "cpio_copy write failed: %s" msgstr "" -#: build/pack.c:470 +#: build/pack.c:471 #, c-format msgid "cpio_copy read failed: %s" msgstr "" -#: build/pack.c:551 +#: build/pack.c:552 #, c-format msgid "Could not open PreIn file: %s" msgstr "" -#: build/pack.c:558 +#: build/pack.c:559 #, c-format msgid "Could not open PreUn file: %s" msgstr "" -#: build/pack.c:565 +#: build/pack.c:566 #, c-format msgid "Could not open PostIn file: %s" msgstr "" -#: build/pack.c:572 +#: build/pack.c:573 #, c-format msgid "Could not open PostUn file: %s" msgstr "" -#: build/pack.c:580 +#: build/pack.c:581 #, c-format msgid "Could not open VerifyScript file: %s" msgstr "" -#: build/pack.c:596 +#: build/pack.c:597 #, c-format msgid "Could not open Trigger script file: %s" msgstr "" @@ -1798,31 +1797,31 @@ msgstr "" msgid "line %d: Bad %%setup option %s: %s" msgstr "" -#: build/parsePrep.c:376 +#: build/parsePrep.c:381 msgid "line %d: Need arg to %%patch -b: %s" msgstr "" -#: build/parsePrep.c:384 +#: build/parsePrep.c:389 msgid "line %d: Need arg to %%patch -z: %s" msgstr "" -#: build/parsePrep.c:396 +#: build/parsePrep.c:401 msgid "line %d: Need arg to %%patch -p: %s" msgstr "" -#: build/parsePrep.c:402 +#: build/parsePrep.c:407 msgid "line %d: Bad arg to %%patch -p: %s" msgstr "" -#: build/parsePrep.c:409 +#: build/parsePrep.c:414 msgid "Too many patches!" msgstr "" -#: build/parsePrep.c:413 +#: build/parsePrep.c:418 msgid "line %d: Bad arg to %%patch: %s" msgstr "" -#: build/parsePrep.c:449 +#: build/parsePrep.c:454 msgid "line %d: second %%prep" msgstr "" @@ -1878,44 +1877,44 @@ msgid "line %d: %s" msgstr "" #. XXX Fstrerror -#: build/parseSpec.c:174 +#: build/parseSpec.c:175 #, c-format msgid "Unable to open %s: %s\n" msgstr "" -#: build/parseSpec.c:186 +#: build/parseSpec.c:187 msgid "Unclosed %%if" msgstr "" -#: build/parseSpec.c:245 +#: build/parseSpec.c:246 #, c-format msgid "%s:%d: parseExpressionBoolean returns %d" msgstr "" #. Got an else with no %if ! -#: build/parseSpec.c:253 +#: build/parseSpec.c:254 msgid "%s:%d: Got a %%else with no if" msgstr "" #. Got an end with no %if ! -#: build/parseSpec.c:264 +#: build/parseSpec.c:265 msgid "%s:%d: Got a %%endif with no if" msgstr "" -#: build/parseSpec.c:278 build/parseSpec.c:287 +#: build/parseSpec.c:279 build/parseSpec.c:288 msgid "malformed %%include statement" msgstr "" -#: build/parseSpec.c:368 +#: build/parseSpec.c:369 #, c-format msgid "Timecheck value must be an integer: %s" msgstr "" -#: build/parseSpec.c:451 +#: build/parseSpec.c:452 msgid "No buildable architectures" msgstr "" -#: build/parseSpec.c:498 +#: build/parseSpec.c:499 msgid "Package has no %%description: %s" msgstr "" @@ -2227,86 +2226,86 @@ msgstr "" #. this would probably be a good place to check if disk space #. was used up - if so, we should return a different error -#: lib/install.c:361 +#: lib/install.c:366 #, c-format msgid "unpacking of archive failed%s%s: %s" msgstr "" -#: lib/install.c:362 +#: lib/install.c:367 msgid " on file " msgstr "" -#: lib/install.c:405 +#: lib/install.c:410 msgid "installing a source package\n" msgstr "" -#: lib/install.c:416 +#: lib/install.c:421 #, c-format msgid "cannot create %s: %s" msgstr "" -#: lib/install.c:424 lib/install.c:446 +#: lib/install.c:429 lib/install.c:451 #, c-format msgid "cannot write to %s" msgstr "" -#: lib/install.c:428 +#: lib/install.c:433 #, c-format msgid "sources in: %s\n" msgstr "" -#: lib/install.c:439 +#: lib/install.c:444 #, c-format msgid "cannot create %s" msgstr "" -#: lib/install.c:450 +#: lib/install.c:455 #, c-format msgid "spec file in: %s\n" msgstr "" -#: lib/install.c:484 lib/install.c:512 +#: lib/install.c:489 lib/install.c:517 msgid "source package contains no .spec file" msgstr "" -#: lib/install.c:534 +#: lib/install.c:539 #, c-format msgid "renaming %s to %s\n" msgstr "" -#: lib/install.c:536 lib/install.c:815 lib/uninstall.c:27 +#: lib/install.c:541 lib/install.c:820 lib/uninstall.c:27 #, c-format msgid "rename of %s to %s failed: %s" msgstr "" -#: lib/install.c:627 +#: lib/install.c:632 msgid "source package expected, binary found" msgstr "" -#: lib/install.c:684 +#: lib/install.c:689 #, c-format msgid "package: %s-%s-%s files test = %d\n" msgstr "" -#: lib/install.c:745 +#: lib/install.c:750 msgid "stopping install as we're running --test\n" msgstr "" -#: lib/install.c:750 +#: lib/install.c:755 msgid "running preinstall script (if any)\n" msgstr "" -#: lib/install.c:775 +#: lib/install.c:780 #, c-format msgid "warning: %s created as %s" msgstr "" -#: lib/install.c:811 +#: lib/install.c:816 #, c-format msgid "warning: %s saved as %s" msgstr "" -#: lib/install.c:885 +#: lib/install.c:890 msgid "running postinstall scripts (if any)\n" msgstr "" @@ -2413,7 +2412,7 @@ msgstr "" msgid "internal error (rpm bug?): " msgstr "" -#: lib/misc.c:415 lib/misc.c:421 lib/misc.c:433 +#: lib/misc.c:409 lib/misc.c:414 lib/misc.c:420 #, c-format msgid "error creating temporary file %s" msgstr "" @@ -2844,7 +2843,7 @@ msgstr "" msgid "opening database mode 0x%x in %s\n" msgstr "" -#: lib/rpmdb.c:155 lib/url.c:449 +#: lib/rpmdb.c:155 lib/url.c:457 #, c-format msgid "failed to open %s: %s\n" msgstr "" @@ -3038,59 +3037,59 @@ msgstr "" msgid "Installing %s\n" msgstr "" -#: lib/rpmio.c:463 +#: lib/rpmio.c:675 msgid "Success" msgstr "" -#: lib/rpmio.c:466 +#: lib/rpmio.c:678 msgid "Bad server response" msgstr "" -#: lib/rpmio.c:469 +#: lib/rpmio.c:681 msgid "Server IO error" msgstr "" -#: lib/rpmio.c:472 +#: lib/rpmio.c:684 msgid "Server timeout" msgstr "" -#: lib/rpmio.c:475 +#: lib/rpmio.c:687 msgid "Unable to lookup server host address" msgstr "" -#: lib/rpmio.c:478 +#: lib/rpmio.c:690 msgid "Unable to lookup server host name" msgstr "" -#: lib/rpmio.c:481 +#: lib/rpmio.c:693 msgid "Failed to connect to server" msgstr "" -#: lib/rpmio.c:484 +#: lib/rpmio.c:696 msgid "Failed to establish data connection to server" msgstr "" -#: lib/rpmio.c:487 +#: lib/rpmio.c:699 msgid "IO error to local file" msgstr "" -#: lib/rpmio.c:490 +#: lib/rpmio.c:702 msgid "Error setting remote server to passive mode" msgstr "" -#: lib/rpmio.c:493 +#: lib/rpmio.c:705 msgid "File not found on server" msgstr "" -#: lib/rpmio.c:496 +#: lib/rpmio.c:708 msgid "Abort in progress" msgstr "" -#: lib/rpmio.c:500 +#: lib/rpmio.c:712 msgid "Unknown or unexpected error" msgstr "" -#: lib/rpmio.c:552 +#: lib/rpmio.c:1243 #, c-format msgid "logging into %s as %s, pw %s\n" msgstr "" @@ -3385,7 +3384,7 @@ msgstr "" msgid "removing database entry\n" msgstr "" -#: lib/uninstall.c:400 +#: lib/uninstall.c:394 msgid "execution of script failed" msgstr "" @@ -3404,22 +3403,22 @@ msgstr "" msgid "warning: uCache[%d] %p nrefs(%d) != 1 (%s %s)\n" msgstr "" -#: lib/url.c:224 +#: lib/url.c:222 #, c-format msgid "Password for %s@%s: " msgstr "" -#: lib/url.c:249 lib/url.c:275 +#: lib/url.c:247 lib/url.c:273 #, c-format msgid "error: %sport must be a number\n" msgstr "" -#: lib/url.c:413 +#: lib/url.c:421 msgid "url port must be a number\n" msgstr "" #. XXX Fstrerror -#: lib/url.c:472 +#: lib/url.c:480 #, c-format msgid "failed to create %s: %s\n" msgstr "" -- 2.7.4