diff options
author | des <des@FreeBSD.org> | 2007-12-14 10:26:58 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2007-12-14 10:26:58 +0000 |
commit | a1830118bafa4cb5662e20cb077d13f7a800d0f7 (patch) | |
tree | f8b313061d8f9a9fe0e8e1bbee4bf59f74f426cf | |
parent | 172a6bf06179f5675de365c7f2a22d25a9f9e53f (diff) | |
download | FreeBSD-src-a1830118bafa4cb5662e20cb077d13f7a800d0f7.zip FreeBSD-src-a1830118bafa4cb5662e20cb077d13f7a800d0f7.tar.gz |
Clean up namespace violations.
MFC after: 1 week
-rw-r--r-- | lib/libfetch/Makefile | 4 | ||||
-rw-r--r-- | lib/libfetch/common.c | 100 | ||||
-rw-r--r-- | lib/libfetch/common.h | 52 | ||||
-rw-r--r-- | lib/libfetch/fetch.c | 26 | ||||
-rw-r--r-- | lib/libfetch/file.c | 20 | ||||
-rw-r--r-- | lib/libfetch/ftp.c | 232 | ||||
-rw-r--r-- | lib/libfetch/http.c | 194 |
7 files changed, 314 insertions, 314 deletions
diff --git a/lib/libfetch/Makefile b/lib/libfetch/Makefile index f49c763..349eb61 100644 --- a/lib/libfetch/Makefile +++ b/lib/libfetch/Makefile @@ -28,7 +28,7 @@ WARNS?= 2 SHLIB_MAJOR= 5 ftperr.h: ftp.errors - @echo "static struct fetcherr _ftp_errlist[] = {" > ${.TARGET} + @echo "static struct fetcherr ftp_errlist[] = {" > ${.TARGET} @cat ${.ALLSRC} \ | grep -v ^# \ | sort \ @@ -39,7 +39,7 @@ ftperr.h: ftp.errors @echo "};" >> ${.TARGET} httperr.h: http.errors - @echo "static struct fetcherr _http_errlist[] = {" > ${.TARGET} + @echo "static struct fetcherr http_errlist[] = {" > ${.TARGET} @cat ${.ALLSRC} \ | grep -v ^# \ | sort \ diff --git a/lib/libfetch/common.c b/lib/libfetch/common.c index ba0d711..dc9eee0 100644 --- a/lib/libfetch/common.c +++ b/lib/libfetch/common.c @@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$"); /* * Error messages for resolver errors */ -static struct fetcherr _netdb_errlist[] = { +static struct fetcherr netdb_errlist[] = { #ifdef EAI_NODATA { EAI_NODATA, FETCH_RESOLV, "Host not found" }, #endif @@ -73,7 +73,7 @@ static const char ENDL[2] = "\r\n"; * Map error code to string */ static struct fetcherr * -_fetch_finderr(struct fetcherr *p, int e) +fetch_finderr(struct fetcherr *p, int e) { while (p->num != -1 && p->num != e) p++; @@ -84,9 +84,9 @@ _fetch_finderr(struct fetcherr *p, int e) * Set error code */ void -_fetch_seterr(struct fetcherr *p, int e) +fetch_seterr(struct fetcherr *p, int e) { - p = _fetch_finderr(p, e); + p = fetch_finderr(p, e); fetchLastErrCode = p->cat; snprintf(fetchLastErrString, MAXERRSTRING, "%s", p->string); } @@ -95,7 +95,7 @@ _fetch_seterr(struct fetcherr *p, int e) * Set error code according to errno */ void -_fetch_syserr(void) +fetch_syserr(void) { switch (errno) { case 0: @@ -155,7 +155,7 @@ default: * Emit status message */ void -_fetch_info(const char *fmt, ...) +fetch_info(const char *fmt, ...) { va_list ap; @@ -172,7 +172,7 @@ _fetch_info(const char *fmt, ...) * Return the default port for a scheme */ int -_fetch_default_port(const char *scheme) +fetch_default_port(const char *scheme) { struct servent *se; @@ -189,7 +189,7 @@ _fetch_default_port(const char *scheme) * Return the default proxy port for a scheme */ int -_fetch_default_proxy_port(const char *scheme) +fetch_default_proxy_port(const char *scheme) { if (strcasecmp(scheme, SCHEME_FTP) == 0) return (FTP_DEFAULT_PROXY_PORT); @@ -203,7 +203,7 @@ _fetch_default_proxy_port(const char *scheme) * Create a connection for an existing descriptor. */ conn_t * -_fetch_reopen(int sd) +fetch_reopen(int sd) { conn_t *conn; @@ -220,7 +220,7 @@ _fetch_reopen(int sd) * Bump a connection's reference count. */ conn_t * -_fetch_ref(conn_t *conn) +fetch_ref(conn_t *conn) { ++conn->ref; @@ -232,7 +232,7 @@ _fetch_ref(conn_t *conn) * Bind a socket to a specific local address */ int -_fetch_bind(int sd, int af, const char *addr) +fetch_bind(int sd, int af, const char *addr) { struct addrinfo hints, *res, *res0; int err; @@ -254,7 +254,7 @@ _fetch_bind(int sd, int af, const char *addr) * Establish a TCP connection to the specified port on the specified host. */ conn_t * -_fetch_connect(const char *host, int port, int af, int verbose) +fetch_connect(const char *host, int port, int af, int verbose) { conn_t *conn; char pbuf[10]; @@ -265,7 +265,7 @@ _fetch_connect(const char *host, int port, int af, int verbose) DEBUG(fprintf(stderr, "---> %s:%d\n", host, port)); if (verbose) - _fetch_info("looking up %s", host); + fetch_info("looking up %s", host); /* look up host name and set up socket address structure */ snprintf(pbuf, sizeof(pbuf), "%d", port); @@ -274,13 +274,13 @@ _fetch_connect(const char *host, int port, int af, int verbose) hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = 0; if ((err = getaddrinfo(host, pbuf, &hints, &res0)) != 0) { - _netdb_seterr(err); + netdb_seterr(err); return (NULL); } bindaddr = getenv("FETCH_BIND_ADDRESS"); if (verbose) - _fetch_info("connecting to %s:%d", host, port); + fetch_info("connecting to %s:%d", host, port); /* try to connect */ for (sd = -1, res = res0; res; sd = -1, res = res->ai_next) { @@ -288,8 +288,8 @@ _fetch_connect(const char *host, int port, int af, int verbose) res->ai_protocol)) == -1) continue; if (bindaddr != NULL && *bindaddr != '\0' && - _fetch_bind(sd, res->ai_family, bindaddr) != 0) { - _fetch_info("failed to bind to '%s'", bindaddr); + fetch_bind(sd, res->ai_family, bindaddr) != 0) { + fetch_info("failed to bind to '%s'", bindaddr); close(sd); continue; } @@ -299,12 +299,12 @@ _fetch_connect(const char *host, int port, int af, int verbose) } freeaddrinfo(res0); if (sd == -1) { - _fetch_syserr(); + fetch_syserr(); return (NULL); } - if ((conn = _fetch_reopen(sd)) == NULL) { - _fetch_syserr(); + if ((conn = fetch_reopen(sd)) == NULL) { + fetch_syserr(); close(sd); } return (conn); @@ -315,7 +315,7 @@ _fetch_connect(const char *host, int port, int af, int verbose) * Enable SSL on a connection. */ int -_fetch_ssl(conn_t *conn, int verbose) +fetch_ssl(conn_t *conn, int verbose) { #ifdef WITH_SSL @@ -373,7 +373,7 @@ _fetch_ssl(conn_t *conn, int verbose) * Read a character from a connection w/ timeout */ ssize_t -_fetch_read(conn_t *conn, char *buf, size_t len) +fetch_read(conn_t *conn, char *buf, size_t len) { struct timeval now, timeout, wait; fd_set readfds; @@ -399,7 +399,7 @@ _fetch_read(conn_t *conn, char *buf, size_t len) } if (wait.tv_sec < 0) { errno = ETIMEDOUT; - _fetch_syserr(); + fetch_syserr(); return (-1); } errno = 0; @@ -407,7 +407,7 @@ _fetch_read(conn_t *conn, char *buf, size_t len) if (r == -1) { if (errno == EINTR && fetchRestartCalls) continue; - _fetch_syserr(); + fetch_syserr(); return (-1); } } @@ -438,7 +438,7 @@ _fetch_read(conn_t *conn, char *buf, size_t len) #define MIN_BUF_SIZE 1024 int -_fetch_getln(conn_t *conn) +fetch_getln(conn_t *conn) { char *tmp; size_t tmpsize; @@ -457,7 +457,7 @@ _fetch_getln(conn_t *conn) conn->buflen = 0; do { - len = _fetch_read(conn, &c, 1); + len = fetch_read(conn, &c, 1); if (len == -1) return (-1); if (len == 0) @@ -485,13 +485,13 @@ _fetch_getln(conn_t *conn) * Write to a connection w/ timeout */ ssize_t -_fetch_write(conn_t *conn, const char *buf, size_t len) +fetch_write(conn_t *conn, const char *buf, size_t len) { struct iovec iov; iov.iov_base = __DECONST(char *, buf); iov.iov_len = len; - return _fetch_writev(conn, &iov, 1); + return fetch_writev(conn, &iov, 1); } /* @@ -499,7 +499,7 @@ _fetch_write(conn_t *conn, const char *buf, size_t len) * Note: can modify the iovec. */ ssize_t -_fetch_writev(conn_t *conn, struct iovec *iov, int iovcnt) +fetch_writev(conn_t *conn, struct iovec *iov, int iovcnt) { struct timeval now, timeout, wait; fd_set writefds; @@ -525,7 +525,7 @@ _fetch_writev(conn_t *conn, struct iovec *iov, int iovcnt) } if (wait.tv_sec < 0) { errno = ETIMEDOUT; - _fetch_syserr(); + fetch_syserr(); return (-1); } errno = 0; @@ -547,7 +547,7 @@ _fetch_writev(conn_t *conn, struct iovec *iov, int iovcnt) if (wlen == 0) { /* we consider a short write a failure */ errno = EPIPE; - _fetch_syserr(); + fetch_syserr(); return (-1); } if (wlen < 0) { @@ -574,7 +574,7 @@ _fetch_writev(conn_t *conn, struct iovec *iov, int iovcnt) * Write a line of text to a connection w/ timeout */ int -_fetch_putln(conn_t *conn, const char *str, size_t len) +fetch_putln(conn_t *conn, const char *str, size_t len) { struct iovec iov[2]; int ret; @@ -585,9 +585,9 @@ _fetch_putln(conn_t *conn, const char *str, size_t len) iov[1].iov_base = __DECONST(char *, ENDL); iov[1].iov_len = sizeof(ENDL); if (len == 0) - ret = _fetch_writev(conn, &iov[1], 1); + ret = fetch_writev(conn, &iov[1], 1); else - ret = _fetch_writev(conn, iov, 2); + ret = fetch_writev(conn, iov, 2); if (ret == -1) return (-1); return (0); @@ -598,7 +598,7 @@ _fetch_putln(conn_t *conn, const char *str, size_t len) * Close connection */ int -_fetch_close(conn_t *conn) +fetch_close(conn_t *conn) { int ret; @@ -614,7 +614,7 @@ _fetch_close(conn_t *conn) /*** Directory-related utility functions *************************************/ int -_fetch_add_entry(struct url_ent **p, int *size, int *len, +fetch_add_entry(struct url_ent **p, int *size, int *len, const char *name, struct url_stat *us) { struct url_ent *tmp; @@ -628,7 +628,7 @@ _fetch_add_entry(struct url_ent **p, int *size, int *len, tmp = realloc(*p, (*size * 2 + 1) * sizeof(**p)); if (tmp == NULL) { errno = ENOMEM; - _fetch_syserr(); + fetch_syserr(); return (-1); } *size = (*size * 2 + 1); @@ -649,7 +649,7 @@ _fetch_add_entry(struct url_ent **p, int *size, int *len, /*** Authentication-related utility functions ********************************/ static const char * -_fetch_read_word(FILE *f) +fetch_read_word(FILE *f) { static char word[1024]; @@ -662,7 +662,7 @@ _fetch_read_word(FILE *f) * Get authentication data for a URL from .netrc */ int -_fetch_netrc_auth(struct url *url) +fetch_netrc_auth(struct url *url) { char fn[PATH_MAX]; const char *word; @@ -671,7 +671,7 @@ _fetch_netrc_auth(struct url *url) if ((p = getenv("NETRC")) != NULL) { if (snprintf(fn, sizeof(fn), "%s", p) >= (int)sizeof(fn)) { - _fetch_info("$NETRC specifies a file name " + fetch_info("$NETRC specifies a file name " "longer than PATH_MAX"); return (-1); } @@ -689,39 +689,39 @@ _fetch_netrc_auth(struct url *url) if ((f = fopen(fn, "r")) == NULL) return (-1); - while ((word = _fetch_read_word(f)) != NULL) { + while ((word = fetch_read_word(f)) != NULL) { if (strcmp(word, "default") == 0) { - DEBUG(_fetch_info("Using default .netrc settings")); + DEBUG(fetch_info("Using default .netrc settings")); break; } if (strcmp(word, "machine") == 0 && - (word = _fetch_read_word(f)) != NULL && + (word = fetch_read_word(f)) != NULL && strcasecmp(word, url->host) == 0) { - DEBUG(_fetch_info("Using .netrc settings for %s", word)); + DEBUG(fetch_info("Using .netrc settings for %s", word)); break; } } if (word == NULL) goto ferr; - while ((word = _fetch_read_word(f)) != NULL) { + while ((word = fetch_read_word(f)) != NULL) { if (strcmp(word, "login") == 0) { - if ((word = _fetch_read_word(f)) == NULL) + if ((word = fetch_read_word(f)) == NULL) goto ferr; if (snprintf(url->user, sizeof(url->user), "%s", word) > (int)sizeof(url->user)) { - _fetch_info("login name in .netrc is too long"); + fetch_info("login name in .netrc is too long"); url->user[0] = '\0'; } } else if (strcmp(word, "password") == 0) { - if ((word = _fetch_read_word(f)) == NULL) + if ((word = fetch_read_word(f)) == NULL) goto ferr; if (snprintf(url->pwd, sizeof(url->pwd), "%s", word) > (int)sizeof(url->pwd)) { - _fetch_info("password in .netrc is too long"); + fetch_info("password in .netrc is too long"); url->pwd[0] = '\0'; } } else if (strcmp(word, "account") == 0) { - if ((word = _fetch_read_word(f)) == NULL) + if ((word = fetch_read_word(f)) == NULL) goto ferr; /* XXX not supported! */ } else { diff --git a/lib/libfetch/common.h b/lib/libfetch/common.h index 62e0846..2382eb0 100644 --- a/lib/libfetch/common.h +++ b/lib/libfetch/common.h @@ -68,33 +68,33 @@ struct fetcherr { const char *string; }; -/* for _fetch_writev */ +/* for fetch_writev */ struct iovec; -void _fetch_seterr(struct fetcherr *, int); -void _fetch_syserr(void); -void _fetch_info(const char *, ...); -int _fetch_default_port(const char *); -int _fetch_default_proxy_port(const char *); -int _fetch_bind(int, int, const char *); -conn_t *_fetch_connect(const char *, int, int, int); -conn_t *_fetch_reopen(int); -conn_t *_fetch_ref(conn_t *); -int _fetch_ssl(conn_t *, int); -ssize_t _fetch_read(conn_t *, char *, size_t); -int _fetch_getln(conn_t *); -ssize_t _fetch_write(conn_t *, const char *, size_t); -ssize_t _fetch_writev(conn_t *, struct iovec *, int); -int _fetch_putln(conn_t *, const char *, size_t); -int _fetch_close(conn_t *); -int _fetch_add_entry(struct url_ent **, int *, int *, +void fetch_seterr(struct fetcherr *, int); +void fetch_syserr(void); +void fetch_info(const char *, ...); +int fetch_default_port(const char *); +int fetch_default_proxy_port(const char *); +int fetch_bind(int, int, const char *); +conn_t *fetch_connect(const char *, int, int, int); +conn_t *fetch_reopen(int); +conn_t *fetch_ref(conn_t *); +int fetch_ssl(conn_t *, int); +ssize_t fetch_read(conn_t *, char *, size_t); +int fetch_getln(conn_t *); +ssize_t fetch_write(conn_t *, const char *, size_t); +ssize_t fetch_writev(conn_t *, struct iovec *, int); +int fetch_putln(conn_t *, const char *, size_t); +int fetch_close(conn_t *); +int fetch_add_entry(struct url_ent **, int *, int *, const char *, struct url_stat *); -int _fetch_netrc_auth(struct url *url); +int fetch_netrc_auth(struct url *url); -#define _ftp_seterr(n) _fetch_seterr(_ftp_errlist, n) -#define _http_seterr(n) _fetch_seterr(_http_errlist, n) -#define _netdb_seterr(n) _fetch_seterr(_netdb_errlist, n) -#define _url_seterr(n) _fetch_seterr(_url_errlist, n) +#define ftp_seterr(n) fetch_seterr(ftp_errlist, n) +#define http_seterr(n) fetch_seterr(http_errlist, n) +#define netdb_seterr(n) fetch_seterr(netdb_errlist, n) +#define url_seterr(n) fetch_seterr(url_errlist, n) #ifndef NDEBUG #define DEBUG(x) do { if (fetchDebug) { x; } } while (0) @@ -103,7 +103,7 @@ int _fetch_netrc_auth(struct url *url); #endif /* - * I don't really like exporting _http_request() and _ftp_request(), + * I don't really like exporting http_request() and ftp_request(), * but the HTTP and FTP code occasionally needs to cross-call * eachother, and this saves me from adding a lot of special-case code * to handle those cases. @@ -111,9 +111,9 @@ int _fetch_netrc_auth(struct url *url); * Note that _*_request() free purl, which is way ugly but saves us a * whole lot of trouble. */ -FILE *_http_request(struct url *, const char *, +FILE *http_request(struct url *, const char *, struct url_stat *, struct url *, const char *); -FILE *_ftp_request(struct url *, const char *, +FILE *ftp_request(struct url *, const char *, struct url_stat *, struct url *, const char *); /* diff --git a/lib/libfetch/fetch.c b/lib/libfetch/fetch.c index 403a2dba..b98fa56 100644 --- a/lib/libfetch/fetch.c +++ b/lib/libfetch/fetch.c @@ -56,7 +56,7 @@ int fetchDebug; #define URL_MALFORMED 1 #define URL_BAD_SCHEME 2 #define URL_BAD_PORT 3 -static struct fetcherr _url_errlist[] = { +static struct fetcherr url_errlist[] = { { URL_MALFORMED, FETCH_URL, "Malformed URL" }, { URL_BAD_SCHEME, FETCH_URL, "Invalid URL scheme" }, { URL_BAD_PORT, FETCH_URL, "Invalid server port" }, @@ -89,7 +89,7 @@ fetchXGet(struct url *URL, struct url_stat *us, const char *flags) return (fetchXGetHTTP(URL, us, flags)); else if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0) return (fetchXGetHTTP(URL, us, flags)); - _url_seterr(URL_BAD_SCHEME); + url_seterr(URL_BAD_SCHEME); return (NULL); } @@ -121,7 +121,7 @@ fetchPut(struct url *URL, const char *flags) return (fetchPutHTTP(URL, flags)); else if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0) return (fetchPutHTTP(URL, flags)); - _url_seterr(URL_BAD_SCHEME); + url_seterr(URL_BAD_SCHEME); return (NULL); } @@ -147,7 +147,7 @@ fetchStat(struct url *URL, struct url_stat *us, const char *flags) return (fetchStatHTTP(URL, us, flags)); else if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0) return (fetchStatHTTP(URL, us, flags)); - _url_seterr(URL_BAD_SCHEME); + url_seterr(URL_BAD_SCHEME); return (-1); } @@ -169,7 +169,7 @@ fetchList(struct url *URL, const char *flags) return (fetchListHTTP(URL, flags)); else if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0) return (fetchListHTTP(URL, flags)); - _url_seterr(URL_BAD_SCHEME); + url_seterr(URL_BAD_SCHEME); return (NULL); } @@ -264,23 +264,23 @@ fetchMakeURL(const char *scheme, const char *host, int port, const char *doc, struct url *u; if (!scheme || (!host && !doc)) { - _url_seterr(URL_MALFORMED); + url_seterr(URL_MALFORMED); return (NULL); } if (port < 0 || port > 65535) { - _url_seterr(URL_BAD_PORT); + url_seterr(URL_BAD_PORT); return (NULL); } /* allocate struct url */ if ((u = calloc(1, sizeof(*u))) == NULL) { - _fetch_syserr(); + fetch_syserr(); return (NULL); } if ((u->doc = strdup(doc ? doc : "/")) == NULL) { - _fetch_syserr(); + fetch_syserr(); free(u); return (NULL); } @@ -311,7 +311,7 @@ fetchParseURL(const char *URL) /* allocate struct url */ if ((u = calloc(1, sizeof(*u))) == NULL) { - _fetch_syserr(); + fetch_syserr(); return (NULL); } @@ -373,7 +373,7 @@ fetchParseURL(const char *URL) u->port = u->port * 10 + (*q - '0'); else { /* invalid port */ - _url_seterr(URL_BAD_PORT); + url_seterr(URL_BAD_PORT); goto ouch; } p = q; @@ -390,7 +390,7 @@ nohost: /* percent-escape whitespace. */ if ((doc = malloc(strlen(p) * 3 + 1)) == NULL) { - _fetch_syserr(); + fetch_syserr(); goto ouch; } u->doc = doc; @@ -406,7 +406,7 @@ nohost: } *doc = '\0'; } else if ((u->doc = strdup(p)) == NULL) { - _fetch_syserr(); + fetch_syserr(); goto ouch; } diff --git a/lib/libfetch/file.c b/lib/libfetch/file.c index 42ce68d..a1492ba 100644 --- a/lib/libfetch/file.c +++ b/lib/libfetch/file.c @@ -50,11 +50,11 @@ fetchXGetFile(struct url *u, struct url_stat *us, const char *flags) f = fopen(u->doc, "r"); if (f == NULL) - _fetch_syserr(); + fetch_syserr(); if (u->offset && fseeko(f, u->offset, SEEK_SET) == -1) { fclose(f); - _fetch_syserr(); + fetch_syserr(); } return (f); @@ -77,25 +77,25 @@ fetchPutFile(struct url *u, const char *flags) f = fopen(u->doc, "w+"); if (f == NULL) - _fetch_syserr(); + fetch_syserr(); if (u->offset && fseeko(f, u->offset, SEEK_SET) == -1) { fclose(f); - _fetch_syserr(); + fetch_syserr(); } return (f); } static int -_fetch_stat_file(const char *fn, struct url_stat *us) +fetch_stat_file(const char *fn, struct url_stat *us) { struct stat sb; us->size = -1; us->atime = us->mtime = 0; if (stat(fn, &sb) == -1) { - _fetch_syserr(); + fetch_syserr(); return (-1); } us->size = sb.st_size; @@ -107,7 +107,7 @@ _fetch_stat_file(const char *fn, struct url_stat *us) int fetchStatFile(struct url *u, struct url_stat *us, const char *flags __unused) { - return (_fetch_stat_file(u->doc, us)); + return (fetch_stat_file(u->doc, us)); } struct url_ent * @@ -122,7 +122,7 @@ fetchListFile(struct url *u, const char *flags __unused) int l; if ((dir = opendir(u->doc)) == NULL) { - _fetch_syserr(); + fetch_syserr(); return (NULL); } @@ -136,10 +136,10 @@ fetchListFile(struct url *u, const char *flags __unused) while ((de = readdir(dir)) != NULL) { strncpy(p, de->d_name, l - 1); p[l - 1] = 0; - if (_fetch_stat_file(fn, &us) == -1) + if (fetch_stat_file(fn, &us) == -1) /* should I return a partial result, or abort? */ break; - _fetch_add_entry(&ue, &size, &len, de->d_name, &us); + fetch_add_entry(&ue, &size, &len, de->d_name, &us); } return (ue); diff --git a/lib/libfetch/ftp.c b/lib/libfetch/ftp.c index 3613c4c..5e4f7c3 100644 --- a/lib/libfetch/ftp.c +++ b/lib/libfetch/ftp.c @@ -135,16 +135,16 @@ unmappedaddr(struct sockaddr_in6 *sin6) * Get server response */ static int -_ftp_chkerr(conn_t *conn) +ftp_chkerr(conn_t *conn) { - if (_fetch_getln(conn) == -1) { - _fetch_syserr(); + if (fetch_getln(conn) == -1) { + fetch_syserr(); return (-1); } if (isftpinfo(conn->buf)) { while (conn->buflen && !isftpreply(conn->buf)) { - if (_fetch_getln(conn) == -1) { - _fetch_syserr(); + if (fetch_getln(conn) == -1) { + fetch_syserr(); return (-1); } } @@ -155,7 +155,7 @@ _ftp_chkerr(conn_t *conn) conn->buf[conn->buflen] = '\0'; if (!isftpreply(conn->buf)) { - _ftp_seterr(FTP_PROTOCOL_ERROR); + ftp_seterr(FTP_PROTOCOL_ERROR); return (-1); } @@ -170,7 +170,7 @@ _ftp_chkerr(conn_t *conn) * Send a command and check reply */ static int -_ftp_cmd(conn_t *conn, const char *fmt, ...) +ftp_cmd(conn_t *conn, const char *fmt, ...) { va_list ap; size_t len; @@ -183,26 +183,26 @@ _ftp_cmd(conn_t *conn, const char *fmt, ...) if (msg == NULL) { errno = ENOMEM; - _fetch_syserr(); + fetch_syserr(); return (-1); } - r = _fetch_putln(conn, msg, len); + r = fetch_putln(conn, msg, len); free(msg); if (r == -1) { - _fetch_syserr(); + fetch_syserr(); return (-1); } - return (_ftp_chkerr(conn)); + return (ftp_chkerr(conn)); } /* * Return a pointer to the filename part of a path */ static const char * -_ftp_filename(const char *file, int *len, int *type) +ftp_filename(const char *file, int *len, int *type) { const char *s; @@ -225,7 +225,7 @@ _ftp_filename(const char *file, int *len, int *type) * command. */ static int -_ftp_pwd(conn_t *conn, char *pwd, size_t pwdlen) +ftp_pwd(conn_t *conn, char *pwd, size_t pwdlen) { char *src, *dst, *end; int q; @@ -261,7 +261,7 @@ _ftp_pwd(conn_t *conn, char *pwd, size_t pwdlen) * file. */ static int -_ftp_cwd(conn_t *conn, const char *file) +ftp_cwd(conn_t *conn, const char *file) { const char *beg, *end; char pwd[PATH_MAX]; @@ -270,9 +270,9 @@ _ftp_cwd(conn_t *conn, const char *file) /* If no slashes in name, no need to change dirs. */ if ((end = strrchr(file, '/')) == NULL) return (0); - if ((e = _ftp_cmd(conn, "PWD")) != FTP_WORKING_DIRECTORY || - (e = _ftp_pwd(conn, pwd, sizeof(pwd))) != FTP_OK) { - _ftp_seterr(e); + if ((e = ftp_cmd(conn, "PWD")) != FTP_WORKING_DIRECTORY || + (e = ftp_pwd(conn, pwd, sizeof(pwd))) != FTP_OK) { + ftp_seterr(e); return (-1); } for (;;) { @@ -289,10 +289,10 @@ _ftp_cwd(conn_t *conn, const char *file) /* Keep going up a dir until we have a matching prefix. */ if (pwd[i] == '\0' && (file[i - 1] == '/' || file[i] == '/')) break; - if ((e = _ftp_cmd(conn, "CDUP")) != FTP_FILE_ACTION_OK || - (e = _ftp_cmd(conn, "PWD")) != FTP_WORKING_DIRECTORY || - (e = _ftp_pwd(conn, pwd, sizeof(pwd))) != FTP_OK) { - _ftp_seterr(e); + if ((e = ftp_cmd(conn, "CDUP")) != FTP_FILE_ACTION_OK || + (e = ftp_cmd(conn, "PWD")) != FTP_WORKING_DIRECTORY || + (e = ftp_pwd(conn, pwd, sizeof(pwd))) != FTP_OK) { + ftp_seterr(e); return (-1); } } @@ -307,7 +307,7 @@ _ftp_cwd(conn_t *conn, const char *file) return (0); /* Change to the directory all in one chunk (e.g., foo/bar/baz). */ - e = _ftp_cmd(conn, "CWD %.*s", (int)(end - beg), beg); + e = ftp_cmd(conn, "CWD %.*s", (int)(end - beg), beg); if (e == FTP_FILE_ACTION_OK) return (0); #endif /* FTP_COMBINE_CWDS */ @@ -318,9 +318,9 @@ _ftp_cwd(conn_t *conn, const char *file) ++beg, ++i; for (++i; file + i < end && file[i] != '/'; ++i) /* nothing */ ; - e = _ftp_cmd(conn, "CWD %.*s", file + i - beg, beg); + e = ftp_cmd(conn, "CWD %.*s", file + i - beg, beg); if (e != FTP_FILE_ACTION_OK) { - _ftp_seterr(e); + ftp_seterr(e); return (-1); } } @@ -331,7 +331,7 @@ _ftp_cwd(conn_t *conn, const char *file) * Set transfer mode and data type */ static int -_ftp_mode_type(conn_t *conn, int mode, int type) +ftp_mode_type(conn_t *conn, int mode, int type) { int e; @@ -344,7 +344,7 @@ _ftp_mode_type(conn_t *conn, int mode, int type) default: return (FTP_PROTOCOL_ERROR); } - if ((e = _ftp_cmd(conn, "MODE %c", mode)) != FTP_OK) { + if ((e = ftp_cmd(conn, "MODE %c", mode)) != FTP_OK) { if (mode == 'S') { /* * Stream mode is supposed to be the default - so @@ -380,7 +380,7 @@ _ftp_mode_type(conn_t *conn, int mode, int type) default: return (FTP_PROTOCOL_ERROR); } - if ((e = _ftp_cmd(conn, "TYPE %c", type)) != FTP_OK) + if ((e = ftp_cmd(conn, "TYPE %c", type)) != FTP_OK) return (e); return (FTP_OK); @@ -390,7 +390,7 @@ _ftp_mode_type(conn_t *conn, int mode, int type) * Request and parse file stats */ static int -_ftp_stat(conn_t *conn, const char *file, struct url_stat *us) +ftp_stat(conn_t *conn, const char *file, struct url_stat *us) { char *ln; const char *filename; @@ -402,16 +402,16 @@ _ftp_stat(conn_t *conn, const char *file, struct url_stat *us) us->size = -1; us->atime = us->mtime = 0; - filename = _ftp_filename(file, &filenamelen, &type); + filename = ftp_filename(file, &filenamelen, &type); - if ((e = _ftp_mode_type(conn, 0, type)) != FTP_OK) { - _ftp_seterr(e); + if ((e = ftp_mode_type(conn, 0, type)) != FTP_OK) { + ftp_seterr(e); return (-1); } - e = _ftp_cmd(conn, "SIZE %.*s", filenamelen, filename); + e = ftp_cmd(conn, "SIZE %.*s", filenamelen, filename); if (e != FTP_FILE_STATUS) { - _ftp_seterr(e); + ftp_seterr(e); return (-1); } for (ln = conn->buf + 4; *ln && isspace(*ln); ln++) @@ -419,7 +419,7 @@ _ftp_stat(conn_t *conn, const char *file, struct url_stat *us) for (us->size = 0; *ln && isdigit(*ln); ln++) us->size = us->size * 10 + *ln - '0'; if (*ln && !isspace(*ln)) { - _ftp_seterr(FTP_PROTOCOL_ERROR); + ftp_seterr(FTP_PROTOCOL_ERROR); us->size = -1; return (-1); } @@ -427,9 +427,9 @@ _ftp_stat(conn_t *conn, const char *file, struct url_stat *us) us->size = -1; DEBUG(fprintf(stderr, "size: [%lld]\n", (long long)us->size)); - e = _ftp_cmd(conn, "MDTM %.*s", filenamelen, filename); + e = ftp_cmd(conn, "MDTM %.*s", filenamelen, filename); if (e != FTP_FILE_STATUS) { - _ftp_seterr(e); + ftp_seterr(e); return (-1); } for (ln = conn->buf + 4; *ln && isspace(*ln); ln++) @@ -443,13 +443,13 @@ _ftp_stat(conn_t *conn, const char *file, struct url_stat *us) ln[1] = '0'; break; default: - _ftp_seterr(FTP_PROTOCOL_ERROR); + ftp_seterr(FTP_PROTOCOL_ERROR); return (-1); } if (sscanf(ln, "%04d%02d%02d%02d%02d%02d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) { - _ftp_seterr(FTP_PROTOCOL_ERROR); + ftp_seterr(FTP_PROTOCOL_ERROR); return (-1); } tm.tm_mon--; @@ -478,13 +478,13 @@ struct ftpio { int err; /* Error code */ }; -static int _ftp_readfn(void *, char *, int); -static int _ftp_writefn(void *, const char *, int); -static fpos_t _ftp_seekfn(void *, fpos_t, int); -static int _ftp_closefn(void *); +static int ftp_readfn(void *, char *, int); +static int ftp_writefn(void *, const char *, int); +static fpos_t ftp_seekfn(void *, fpos_t, int); +static int ftp_closefn(void *); static int -_ftp_readfn(void *v, char *buf, int len) +ftp_readfn(void *v, char *buf, int len) { struct ftpio *io; int r; @@ -504,7 +504,7 @@ _ftp_readfn(void *v, char *buf, int len) } if (io->eof) return (0); - r = _fetch_read(io->dconn, buf, len); + r = fetch_read(io->dconn, buf, len); if (r > 0) return (r); if (r == 0) { @@ -517,7 +517,7 @@ _ftp_readfn(void *v, char *buf, int len) } static int -_ftp_writefn(void *v, const char *buf, int len) +ftp_writefn(void *v, const char *buf, int len) { struct ftpio *io; int w; @@ -535,7 +535,7 @@ _ftp_writefn(void *v, const char *buf, int len) errno = io->err; return (-1); } - w = _fetch_write(io->dconn, buf, len); + w = fetch_write(io->dconn, buf, len); if (w >= 0) return (w); if (errno != EINTR) @@ -544,7 +544,7 @@ _ftp_writefn(void *v, const char *buf, int len) } static fpos_t -_ftp_seekfn(void *v, fpos_t pos __unused, int whence __unused) +ftp_seekfn(void *v, fpos_t pos __unused, int whence __unused) { struct ftpio *io; @@ -558,7 +558,7 @@ _ftp_seekfn(void *v, fpos_t pos __unused, int whence __unused) } static int -_ftp_closefn(void *v) +ftp_closefn(void *v) { struct ftpio *io; int r; @@ -574,20 +574,20 @@ _ftp_closefn(void *v) errno = EBADF; return (-1); } - _fetch_close(io->dconn); + fetch_close(io->dconn); io->dir = -1; io->dconn = NULL; DEBUG(fprintf(stderr, "Waiting for final status\n")); - r = _ftp_chkerr(io->cconn); + r = ftp_chkerr(io->cconn); if (io->cconn == cached_connection && io->cconn->ref == 1) cached_connection = NULL; - _fetch_close(io->cconn); + fetch_close(io->cconn); free(io); return (r == FTP_TRANSFER_COMPLETE) ? 0 : -1; } static FILE * -_ftp_setup(conn_t *cconn, conn_t *dconn, int mode) +ftp_setup(conn_t *cconn, conn_t *dconn, int mode) { struct ftpio *io; FILE *f; @@ -600,7 +600,7 @@ _ftp_setup(conn_t *cconn, conn_t *dconn, int mode) io->dconn = dconn; io->dir = mode; io->eof = io->err = 0; - f = funopen(io, _ftp_readfn, _ftp_writefn, _ftp_seekfn, _ftp_closefn); + f = funopen(io, ftp_readfn, ftp_writefn, ftp_seekfn, ftp_closefn); if (f == NULL) free(io); return (f); @@ -610,7 +610,7 @@ _ftp_setup(conn_t *cconn, conn_t *dconn, int mode) * Transfer file */ static FILE * -_ftp_transfer(conn_t *conn, const char *oper, const char *file, +ftp_transfer(conn_t *conn, const char *oper, const char *file, int mode, off_t offset, const char *flags) { struct sockaddr_storage sa; @@ -636,10 +636,10 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, strncasecmp(s, "no", 2) != 0); /* isolate filename */ - filename = _ftp_filename(file, &filenamelen, &type); + filename = ftp_filename(file, &filenamelen, &type); /* set transfer mode and data type */ - if ((e = _ftp_mode_type(conn, 0, type)) != FTP_OK) + if ((e = ftp_mode_type(conn, 0, type)) != FTP_OK) goto ouch; /* find our own address, bind, and listen */ @@ -651,7 +651,7 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, /* open data socket */ if ((sd = socket(sa.ss_family, SOCK_STREAM, IPPROTO_TCP)) == -1) { - _fetch_syserr(); + fetch_syserr(); return (NULL); } @@ -663,17 +663,17 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, /* send PASV command */ if (verbose) - _fetch_info("setting passive mode"); + fetch_info("setting passive mode"); switch (sa.ss_family) { case AF_INET: - if ((e = _ftp_cmd(conn, "PASV")) != FTP_PASSIVE_MODE) + if ((e = ftp_cmd(conn, "PASV")) != FTP_PASSIVE_MODE) goto ouch; break; case AF_INET6: - if ((e = _ftp_cmd(conn, "EPSV")) != FTP_EPASSIVE_MODE) { + if ((e = ftp_cmd(conn, "EPSV")) != FTP_EPASSIVE_MODE) { if (e == -1) goto ouch; - if ((e = _ftp_cmd(conn, "LPSV")) != + if ((e = ftp_cmd(conn, "LPSV")) != FTP_LPASSIVE_MODE) goto ouch; } @@ -725,7 +725,7 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, /* seek to required offset */ if (offset) - if (_ftp_cmd(conn, "REST %lu", (u_long)offset) != FTP_FILE_OK) + if (ftp_cmd(conn, "REST %lu", (u_long)offset) != FTP_FILE_OK) goto sysouch; /* construct sockaddr for data socket */ @@ -760,18 +760,18 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, /* connect to data port */ if (verbose) - _fetch_info("opening data connection"); + fetch_info("opening data connection"); bindaddr = getenv("FETCH_BIND_ADDRESS"); if (bindaddr != NULL && *bindaddr != '\0' && - _fetch_bind(sd, sa.ss_family, bindaddr) != 0) + fetch_bind(sd, sa.ss_family, bindaddr) != 0) goto sysouch; if (connect(sd, (struct sockaddr *)&sa, sa.ss_len) == -1) goto sysouch; /* make the server initiate the transfer */ if (verbose) - _fetch_info("initiating transfer"); - e = _ftp_cmd(conn, "%s %.*s", oper, filenamelen, filename); + fetch_info("initiating transfer"); + e = ftp_cmd(conn, "%s %.*s", oper, filenamelen, filename); if (e != FTP_CONNECTION_ALREADY_OPEN && e != FTP_OPEN_DATA_CONNECTION) goto ouch; @@ -801,7 +801,7 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, break; } if (verbose) - _fetch_info("binding data socket"); + fetch_info("binding data socket"); if (bind(sd, (struct sockaddr *)&sa, sa.ss_len) == -1) goto sysouch; if (listen(sd, 1) == -1) @@ -815,7 +815,7 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, sin4 = (struct sockaddr_in *)&sa; a = ntohl(sin4->sin_addr.s_addr); p = ntohs(sin4->sin_port); - e = _ftp_cmd(conn, "PORT %d,%d,%d,%d,%d,%d", + e = ftp_cmd(conn, "PORT %d,%d,%d,%d,%d,%d", (a >> 24) & 0xff, (a >> 16) & 0xff, (a >> 8) & 0xff, a & 0xff, (p >> 8) & 0xff, p & 0xff); @@ -828,14 +828,14 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, if (getnameinfo((struct sockaddr *)&sa, sa.ss_len, hname, sizeof(hname), NULL, 0, NI_NUMERICHOST) == 0) { - e = _ftp_cmd(conn, "EPRT |%d|%s|%d|", 2, hname, + e = ftp_cmd(conn, "EPRT |%d|%s|%d|", 2, hname, htons(sin6->sin6_port)); if (e == -1) goto ouch; } if (e != FTP_OK) { ap = (char *)&sin6->sin6_addr; - e = _ftp_cmd(conn, + e = ftp_cmd(conn, "LPRT %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d", 6, 16, UC(ap[0]), UC(ap[1]), UC(ap[2]), UC(ap[3]), @@ -856,13 +856,13 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, /* seek to required offset */ if (offset) - if (_ftp_cmd(conn, "REST %ju", (uintmax_t)offset) != FTP_FILE_OK) + if (ftp_cmd(conn, "REST %ju", (uintmax_t)offset) != FTP_FILE_OK) goto sysouch; /* make the server initiate the transfer */ if (verbose) - _fetch_info("initiating transfer"); - e = _ftp_cmd(conn, "%s %.*s", oper, filenamelen, filename); + fetch_info("initiating transfer"); + e = ftp_cmd(conn, "%s %.*s", oper, filenamelen, filename); if (e != FTP_CONNECTION_ALREADY_OPEN && e != FTP_OPEN_DATA_CONNECTION) goto ouch; @@ -873,19 +873,19 @@ _ftp_transfer(conn_t *conn, const char *oper, const char *file, sd = d; } - if ((df = _ftp_setup(conn, _fetch_reopen(sd), mode)) == NULL) + if ((df = ftp_setup(conn, fetch_reopen(sd), mode)) == NULL) goto sysouch; return (df); sysouch: - _fetch_syserr(); + fetch_syserr(); if (sd >= 0) close(sd); return (NULL); ouch: if (e != -1) - _ftp_seterr(e); + ftp_seterr(e); if (sd >= 0) close(sd); return (NULL); @@ -895,7 +895,7 @@ ouch: * Authenticate */ static int -_ftp_authenticate(conn_t *conn, struct url *url, struct url *purl) +ftp_authenticate(conn_t *conn, struct url *url, struct url *purl) { const char *user, *pwd, *logname; char pbuf[MAXHOSTNAMELEN + MAXLOGNAME + 1]; @@ -905,18 +905,18 @@ _ftp_authenticate(conn_t *conn, struct url *url, struct url *purl) /* send user name and password */ if (url->user[0] == '\0') - _fetch_netrc_auth(url); + fetch_netrc_auth(url); user = url->user; if (*user == '\0') user = getenv("FTP_LOGIN"); if (user == NULL || *user == '\0') user = FTP_ANONYMOUS_USER; - if (purl && url->port == _fetch_default_port(url->scheme)) - e = _ftp_cmd(conn, "USER %s@%s", user, url->host); + if (purl && url->port == fetch_default_port(url->scheme)) + e = ftp_cmd(conn, "USER %s@%s", user, url->host); else if (purl) - e = _ftp_cmd(conn, "USER %s@%s@%d", user, url->host, url->port); + e = ftp_cmd(conn, "USER %s@%s@%d", user, url->host, url->port); else - e = _ftp_cmd(conn, "USER %s", user); + e = ftp_cmd(conn, "USER %s", user); /* did the server request a password? */ if (e == FTP_NEED_PASSWORD) { @@ -933,7 +933,7 @@ _ftp_authenticate(conn_t *conn, struct url *url, struct url *purl) gethostname(pbuf + len, sizeof(pbuf) - len); pwd = pbuf; } - e = _ftp_cmd(conn, "PASS %s", pwd); + e = ftp_cmd(conn, "PASS %s", pwd); } return (e); @@ -943,7 +943,7 @@ _ftp_authenticate(conn_t *conn, struct url *url, struct url *purl) * Log on to FTP server */ static conn_t * -_ftp_connect(struct url *url, struct url *purl, const char *flags) +ftp_connect(struct url *url, struct url *purl, const char *flags) { conn_t *conn; int e, direct, verbose; @@ -966,24 +966,24 @@ _ftp_connect(struct url *url, struct url *purl, const char *flags) /* check for proxy */ if (purl) { /* XXX proxy authentication! */ - conn = _fetch_connect(purl->host, purl->port, af, verbose); + conn = fetch_connect(purl->host, purl->port, af, verbose); } else { /* no proxy, go straight to target */ - conn = _fetch_connect(url->host, url->port, af, verbose); + conn = fetch_connect(url->host, url->port, af, verbose); purl = NULL; } /* check connection */ if (conn == NULL) - /* _fetch_connect() has already set an error code */ + /* fetch_connect() has already set an error code */ return (NULL); /* expect welcome message */ - if ((e = _ftp_chkerr(conn)) != FTP_SERVICE_READY) + if ((e = ftp_chkerr(conn)) != FTP_SERVICE_READY) goto fouch; /* authenticate */ - if ((e = _ftp_authenticate(conn, url, purl)) != FTP_LOGGED_IN) + if ((e = ftp_authenticate(conn, url, purl)) != FTP_LOGGED_IN) goto fouch; /* TODO: Request extended features supported, if any (RFC 3659). */ @@ -993,8 +993,8 @@ _ftp_connect(struct url *url, struct url *purl, const char *flags) fouch: if (e != -1) - _ftp_seterr(e); - _fetch_close(conn); + ftp_seterr(e); + fetch_close(conn); return (NULL); } @@ -1002,19 +1002,19 @@ fouch: * Disconnect from server */ static void -_ftp_disconnect(conn_t *conn) +ftp_disconnect(conn_t *conn) { - (void)_ftp_cmd(conn, "QUIT"); + (void)ftp_cmd(conn, "QUIT"); if (conn == cached_connection && conn->ref == 1) cached_connection = NULL; - _fetch_close(conn); + fetch_close(conn); } /* * Check if we're already connected */ static int -_ftp_isconnected(struct url *url) +ftp_isconnected(struct url *url) { return (cached_connection && (strcmp(url->host, cached_host.host) == 0) @@ -1027,28 +1027,28 @@ _ftp_isconnected(struct url *url) * Check the cache, reconnect if no luck */ static conn_t * -_ftp_cached_connect(struct url *url, struct url *purl, const char *flags) +ftp_cached_connect(struct url *url, struct url *purl, const char *flags) { conn_t *conn; int e; /* set default port */ if (!url->port) - url->port = _fetch_default_port(url->scheme); + url->port = fetch_default_port(url->scheme); /* try to use previously cached connection */ - if (_ftp_isconnected(url)) { - e = _ftp_cmd(cached_connection, "NOOP"); + if (ftp_isconnected(url)) { + e = ftp_cmd(cached_connection, "NOOP"); if (e == FTP_OK || e == FTP_SYNTAX_ERROR) - return (_fetch_ref(cached_connection)); + return (fetch_ref(cached_connection)); } /* connect to server */ - if ((conn = _ftp_connect(url, purl, flags)) == NULL) + if ((conn = ftp_connect(url, purl, flags)) == NULL) return (NULL); if (cached_connection) - _ftp_disconnect(cached_connection); - cached_connection = _fetch_ref(conn); + ftp_disconnect(cached_connection); + cached_connection = fetch_ref(conn); memcpy(&cached_host, url, sizeof(*url)); return (conn); } @@ -1057,7 +1057,7 @@ _ftp_cached_connect(struct url *url, struct url *purl, const char *flags) * Check the proxy settings */ static struct url * -_ftp_get_proxy(const char *flags) +ftp_get_proxy(const char *flags) { struct url *purl; char *p; @@ -1074,7 +1074,7 @@ _ftp_get_proxy(const char *flags) strcpy(purl->scheme, SCHEME_HTTP); } if (!purl->port) - purl->port = _fetch_default_proxy_port(purl->scheme); + purl->port = fetch_default_proxy_port(purl->scheme); if (strcasecmp(purl->scheme, SCHEME_FTP) == 0 || strcasecmp(purl->scheme, SCHEME_HTTP) == 0) return (purl); @@ -1087,7 +1087,7 @@ _ftp_get_proxy(const char *flags) * Process an FTP request */ FILE * -_ftp_request(struct url *url, const char *op, struct url_stat *us, +ftp_request(struct url *url, const char *op, struct url_stat *us, struct url *purl, const char *flags) { conn_t *conn; @@ -1096,9 +1096,9 @@ _ftp_request(struct url *url, const char *op, struct url_stat *us, /* check if we should use HTTP instead */ if (purl && strcasecmp(purl->scheme, SCHEME_HTTP) == 0) { if (strcmp(op, "STAT") == 0) - return (_http_request(url, "HEAD", us, purl, flags)); + return (http_request(url, "HEAD", us, purl, flags)); else if (strcmp(op, "RETR") == 0) - return (_http_request(url, "GET", us, purl, flags)); + return (http_request(url, "GET", us, purl, flags)); /* * Our HTTP code doesn't support PUT requests yet, so try * a direct connection. @@ -1106,18 +1106,18 @@ _ftp_request(struct url *url, const char *op, struct url_stat *us, } /* connect to server */ - conn = _ftp_cached_connect(url, purl, flags); + conn = ftp_cached_connect(url, purl, flags); if (purl) fetchFreeURL(purl); if (conn == NULL) return (NULL); /* change directory */ - if (_ftp_cwd(conn, url->doc) == -1) + if (ftp_cwd(conn, url->doc) == -1) return (NULL); /* stat file */ - if (us && _ftp_stat(conn, url->doc, us) == -1 + if (us && ftp_stat(conn, url->doc, us) == -1 && fetchLastErrCode != FETCH_PROTO && fetchLastErrCode != FETCH_UNAVAIL) return (NULL); @@ -1131,7 +1131,7 @@ _ftp_request(struct url *url, const char *op, struct url_stat *us, oflag = O_RDONLY; /* initiate the transfer */ - return (_ftp_transfer(conn, op, url->doc, oflag, url->offset, flags)); + return (ftp_transfer(conn, op, url->doc, oflag, url->offset, flags)); } /* @@ -1140,7 +1140,7 @@ _ftp_request(struct url *url, const char *op, struct url_stat *us, FILE * fetchXGetFTP(struct url *url, struct url_stat *us, const char *flags) { - return (_ftp_request(url, "RETR", us, _ftp_get_proxy(flags), flags)); + return (ftp_request(url, "RETR", us, ftp_get_proxy(flags), flags)); } /* @@ -1159,8 +1159,8 @@ FILE * fetchPutFTP(struct url *url, const char *flags) { - return (_ftp_request(url, CHECK_FLAG('a') ? "APPE" : "STOR", NULL, - _ftp_get_proxy(flags), flags)); + return (ftp_request(url, CHECK_FLAG('a') ? "APPE" : "STOR", NULL, + ftp_get_proxy(flags), flags)); } /* @@ -1171,7 +1171,7 @@ fetchStatFTP(struct url *url, struct url_stat *us, const char *flags) { FILE *f; - f = _ftp_request(url, "STAT", us, _ftp_get_proxy(flags), flags); + f = ftp_request(url, "STAT", us, ftp_get_proxy(flags), flags); if (f == NULL) return (-1); return (0); diff --git a/lib/libfetch/http.c b/lib/libfetch/http.c index 4b62b5a..1feaf4a 100644 --- a/lib/libfetch/http.c +++ b/lib/libfetch/http.c @@ -130,11 +130,11 @@ struct httpio * Get next chunk header */ static int -_http_new_chunk(struct httpio *io) +http_new_chunk(struct httpio *io) { char *p; - if (_fetch_getln(io->conn) == -1) + if (fetch_getln(io->conn) == -1) return (-1); if (io->conn->buflen < 2 || !ishexnumber(*io->conn->buf)) @@ -173,7 +173,7 @@ _http_new_chunk(struct httpio *io) * Grow the input buffer to at least len bytes */ static inline int -_http_growbuf(struct httpio *io, size_t len) +http_growbuf(struct httpio *io, size_t len) { char *tmp; @@ -191,7 +191,7 @@ _http_growbuf(struct httpio *io, size_t len) * Fill the input buffer, do chunk decoding on the fly */ static int -_http_fillbuf(struct httpio *io, size_t len) +http_fillbuf(struct httpio *io, size_t len) { if (io->error) return (-1); @@ -199,9 +199,9 @@ _http_fillbuf(struct httpio *io, size_t len) return (0); if (io->chunked == 0) { - if (_http_growbuf(io, len) == -1) + if (http_growbuf(io, len) == -1) return (-1); - if ((io->buflen = _fetch_read(io->conn, io->buf, len)) == -1) { + if ((io->buflen = fetch_read(io->conn, io->buf, len)) == -1) { io->error = 1; return (-1); } @@ -210,7 +210,7 @@ _http_fillbuf(struct httpio *io, size_t len) } if (io->chunksize == 0) { - switch (_http_new_chunk(io)) { + switch (http_new_chunk(io)) { case -1: io->error = 1; return (-1); @@ -222,9 +222,9 @@ _http_fillbuf(struct httpio *io, size_t len) if (len > io->chunksize) len = io->chunksize; - if (_http_growbuf(io, len) == -1) + if (http_growbuf(io, len) == -1) return (-1); - if ((io->buflen = _fetch_read(io->conn, io->buf, len)) == -1) { + if ((io->buflen = fetch_read(io->conn, io->buf, len)) == -1) { io->error = 1; return (-1); } @@ -233,7 +233,7 @@ _http_fillbuf(struct httpio *io, size_t len) if (io->chunksize == 0) { char endl[2]; - if (_fetch_read(io->conn, endl, 2) != 2 || + if (fetch_read(io->conn, endl, 2) != 2 || endl[0] != '\r' || endl[1] != '\n') return (-1); } @@ -247,7 +247,7 @@ _http_fillbuf(struct httpio *io, size_t len) * Read function */ static int -_http_readfn(void *v, char *buf, int len) +http_readfn(void *v, char *buf, int len) { struct httpio *io = (struct httpio *)v; int l, pos; @@ -260,7 +260,7 @@ _http_readfn(void *v, char *buf, int len) for (pos = 0; len > 0; pos += l, len -= l) { /* empty buffer */ if (!io->buf || io->bufpos == io->buflen) - if (_http_fillbuf(io, len) < 1) + if (http_fillbuf(io, len) < 1) break; l = io->buflen - io->bufpos; if (len < l) @@ -278,23 +278,23 @@ _http_readfn(void *v, char *buf, int len) * Write function */ static int -_http_writefn(void *v, const char *buf, int len) +http_writefn(void *v, const char *buf, int len) { struct httpio *io = (struct httpio *)v; - return (_fetch_write(io->conn, buf, len)); + return (fetch_write(io->conn, buf, len)); } /* * Close function */ static int -_http_closefn(void *v) +http_closefn(void *v) { struct httpio *io = (struct httpio *)v; int r; - r = _fetch_close(io->conn); + r = fetch_close(io->conn); if (io->buf) free(io->buf); free(io); @@ -305,20 +305,20 @@ _http_closefn(void *v) * Wrap a file descriptor up */ static FILE * -_http_funopen(conn_t *conn, int chunked) +http_funopen(conn_t *conn, int chunked) { struct httpio *io; FILE *f; if ((io = calloc(1, sizeof(*io))) == NULL) { - _fetch_syserr(); + fetch_syserr(); return (NULL); } io->conn = conn; io->chunked = chunked; - f = funopen(io, _http_readfn, _http_writefn, NULL, _http_closefn); + f = funopen(io, http_readfn, http_writefn, NULL, http_closefn); if (f == NULL) { - _fetch_syserr(); + fetch_syserr(); free(io); return (NULL); } @@ -362,7 +362,7 @@ static struct { * Send a formatted line; optionally echo to terminal */ static int -_http_cmd(conn_t *conn, const char *fmt, ...) +http_cmd(conn_t *conn, const char *fmt, ...) { va_list ap; size_t len; @@ -375,15 +375,15 @@ _http_cmd(conn_t *conn, const char *fmt, ...) if (msg == NULL) { errno = ENOMEM; - _fetch_syserr(); + fetch_syserr(); return (-1); } - r = _fetch_putln(conn, msg, len); + r = fetch_putln(conn, msg, len); free(msg); if (r == -1) { - _fetch_syserr(); + fetch_syserr(); return (-1); } @@ -394,11 +394,11 @@ _http_cmd(conn_t *conn, const char *fmt, ...) * Get and parse status line */ static int -_http_get_reply(conn_t *conn) +http_get_reply(conn_t *conn) { char *p; - if (_fetch_getln(conn) == -1) + if (fetch_getln(conn) == -1) return (-1); /* * A valid status line looks like "HTTP/m.n xyz reason" where m @@ -429,7 +429,7 @@ _http_get_reply(conn_t *conn) * to the beginning of the value. */ static const char * -_http_match(const char *str, const char *hdr) +http_match(const char *str, const char *hdr) { while (*str && *hdr && tolower(*str++) == tolower(*hdr++)) /* nothing */; @@ -444,11 +444,11 @@ _http_match(const char *str, const char *hdr) * Get the next header and return the appropriate symbolic code. */ static hdr_t -_http_next_header(conn_t *conn, const char **p) +http_next_header(conn_t *conn, const char **p) { int i; - if (_fetch_getln(conn) == -1) + if (fetch_getln(conn) == -1) return (hdr_syserror); while (conn->buflen && isspace(conn->buf[conn->buflen - 1])) conn->buflen--; @@ -462,7 +462,7 @@ _http_next_header(conn_t *conn, const char **p) * characters except "()<>@,;:\\\"{}". */ for (i = 0; hdr_names[i].num != hdr_unknown; i++) - if ((*p = _http_match(hdr_names[i].name, conn->buf)) != NULL) + if ((*p = http_match(hdr_names[i].name, conn->buf)) != NULL) return (hdr_names[i].num); return (hdr_unknown); } @@ -471,7 +471,7 @@ _http_next_header(conn_t *conn, const char **p) * Parse a last-modified header */ static int -_http_parse_mtime(const char *p, time_t *mtime) +http_parse_mtime(const char *p, time_t *mtime) { char locale[64], *r; struct tm tm; @@ -495,7 +495,7 @@ _http_parse_mtime(const char *p, time_t *mtime) * Parse a content-length header */ static int -_http_parse_length(const char *p, off_t *length) +http_parse_length(const char *p, off_t *length) { off_t len; @@ -513,7 +513,7 @@ _http_parse_length(const char *p, off_t *length) * Parse a content-range header */ static int -_http_parse_range(const char *p, off_t *offset, off_t *length, off_t *size) +http_parse_range(const char *p, off_t *offset, off_t *length, off_t *size) { off_t first, last, len; @@ -560,7 +560,7 @@ _http_parse_range(const char *p, off_t *offset, off_t *length, off_t *size) * Base64 encoding */ static char * -_http_base64(const char *src) +http_base64(const char *src) { static const char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" @@ -616,7 +616,7 @@ _http_base64(const char *src) * Encode username and password */ static int -_http_basic_auth(conn_t *conn, const char *hdr, const char *usr, const char *pwd) +http_basic_auth(conn_t *conn, const char *hdr, const char *usr, const char *pwd) { char *upw, *auth; int r; @@ -625,11 +625,11 @@ _http_basic_auth(conn_t *conn, const char *hdr, const char *usr, const char *pwd DEBUG(fprintf(stderr, "pwd: [%s]\n", pwd)); if (asprintf(&upw, "%s:%s", usr, pwd) == -1) return (-1); - auth = _http_base64(upw); + auth = http_base64(upw); free(upw); if (auth == NULL) return (-1); - r = _http_cmd(conn, "%s: Basic %s", hdr, auth); + r = http_cmd(conn, "%s: Basic %s", hdr, auth); free(auth); return (r); } @@ -638,7 +638,7 @@ _http_basic_auth(conn_t *conn, const char *hdr, const char *usr, const char *pwd * Send an authorization header */ static int -_http_authorize(conn_t *conn, const char *hdr, const char *p) +http_authorize(conn_t *conn, const char *hdr, const char *p) { /* basic authorization */ if (strncasecmp(p, "basic:", 6) == 0) { @@ -655,7 +655,7 @@ _http_authorize(conn_t *conn, const char *hdr, const char *p) user = str; pwd = strchr(str, ':'); *pwd++ = '\0'; - r = _http_basic_auth(conn, hdr, user, pwd); + r = http_basic_auth(conn, hdr, user, pwd); free(str); return (r); } @@ -671,7 +671,7 @@ _http_authorize(conn_t *conn, const char *hdr, const char *p) * Connect to the correct HTTP server or proxy. */ static conn_t * -_http_connect(struct url *URL, struct url *purl, const char *flags) +http_connect(struct url *URL, struct url *purl, const char *flags) { conn_t *conn; int verbose; @@ -699,15 +699,15 @@ _http_connect(struct url *URL, struct url *purl, const char *flags) return (NULL); } - if ((conn = _fetch_connect(URL->host, URL->port, af, verbose)) == NULL) - /* _fetch_connect() has already set an error code */ + if ((conn = fetch_connect(URL->host, URL->port, af, verbose)) == NULL) + /* fetch_connect() has already set an error code */ return (NULL); if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0 && - _fetch_ssl(conn, verbose) == -1) { - _fetch_close(conn); + fetch_ssl(conn, verbose) == -1) { + fetch_close(conn); /* grrr */ errno = EAUTH; - _fetch_syserr(); + fetch_syserr(); return (NULL); } @@ -718,7 +718,7 @@ _http_connect(struct url *URL, struct url *purl, const char *flags) } static struct url * -_http_get_proxy(const char *flags) +http_get_proxy(const char *flags) { struct url *purl; char *p; @@ -730,7 +730,7 @@ _http_get_proxy(const char *flags) if (!*purl->scheme) strcpy(purl->scheme, SCHEME_HTTP); if (!purl->port) - purl->port = _fetch_default_proxy_port(purl->scheme); + purl->port = fetch_default_proxy_port(purl->scheme); if (strcasecmp(purl->scheme, SCHEME_HTTP) == 0) return (purl); fetchFreeURL(purl); @@ -739,7 +739,7 @@ _http_get_proxy(const char *flags) } static void -_http_print_html(FILE *out, FILE *in) +http_print_html(FILE *out, FILE *in) { size_t len; char *line, *p, *q; @@ -788,7 +788,7 @@ _http_print_html(FILE *out, FILE *in) * XXX off into a separate function. */ FILE * -_http_request(struct url *URL, const char *op, struct url_stat *us, +http_request(struct url *URL, const char *op, struct url_stat *us, struct url *purl, const char *flags) { conn_t *conn; @@ -831,18 +831,18 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, /* check port */ if (!url->port) - url->port = _fetch_default_port(url->scheme); + url->port = fetch_default_port(url->scheme); /* were we redirected to an FTP URL? */ if (purl == NULL && strcmp(url->scheme, SCHEME_FTP) == 0) { if (strcmp(op, "GET") == 0) - return (_ftp_request(url, "RETR", us, purl, flags)); + return (ftp_request(url, "RETR", us, purl, flags)); else if (strcmp(op, "HEAD") == 0) - return (_ftp_request(url, "STAT", us, purl, flags)); + return (ftp_request(url, "STAT", us, purl, flags)); } /* connect to server or proxy */ - if ((conn = _http_connect(url, purl, flags)) == NULL) + if ((conn = http_connect(url, purl, flags)) == NULL) goto ouch; host = url->host; @@ -852,7 +852,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, host = hbuf; } #endif - if (url->port != _fetch_default_port(url->scheme)) { + if (url->port != fetch_default_port(url->scheme)) { if (host != hbuf) { strcpy(hbuf, host); host = hbuf; @@ -863,38 +863,38 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, /* send request */ if (verbose) - _fetch_info("requesting %s://%s%s", + fetch_info("requesting %s://%s%s", url->scheme, host, url->doc); if (purl) { - _http_cmd(conn, "%s %s://%s%s HTTP/1.1", + http_cmd(conn, "%s %s://%s%s HTTP/1.1", op, url->scheme, host, url->doc); } else { - _http_cmd(conn, "%s %s HTTP/1.1", + http_cmd(conn, "%s %s HTTP/1.1", op, url->doc); } /* virtual host */ - _http_cmd(conn, "Host: %s", host); + http_cmd(conn, "Host: %s", host); /* proxy authorization */ if (purl) { if (*purl->user || *purl->pwd) - _http_basic_auth(conn, "Proxy-Authorization", + http_basic_auth(conn, "Proxy-Authorization", purl->user, purl->pwd); else if ((p = getenv("HTTP_PROXY_AUTH")) != NULL && *p != '\0') - _http_authorize(conn, "Proxy-Authorization", p); + http_authorize(conn, "Proxy-Authorization", p); } /* server authorization */ if (need_auth || *url->user || *url->pwd) { if (*url->user || *url->pwd) - _http_basic_auth(conn, "Authorization", url->user, url->pwd); + http_basic_auth(conn, "Authorization", url->user, url->pwd); else if ((p = getenv("HTTP_AUTH")) != NULL && *p != '\0') - _http_authorize(conn, "Authorization", p); + http_authorize(conn, "Authorization", p); else if (fetchAuthMethod && fetchAuthMethod(url) == 0) { - _http_basic_auth(conn, "Authorization", url->user, url->pwd); + http_basic_auth(conn, "Authorization", url->user, url->pwd); } else { - _http_seterr(HTTP_NEED_AUTH); + http_seterr(HTTP_NEED_AUTH); goto ouch; } } @@ -902,19 +902,19 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, /* other headers */ if ((p = getenv("HTTP_REFERER")) != NULL && *p != '\0') { if (strcasecmp(p, "auto") == 0) - _http_cmd(conn, "Referer: %s://%s%s", + http_cmd(conn, "Referer: %s://%s%s", url->scheme, host, url->doc); else - _http_cmd(conn, "Referer: %s", p); + http_cmd(conn, "Referer: %s", p); } if ((p = getenv("HTTP_USER_AGENT")) != NULL && *p != '\0') - _http_cmd(conn, "User-Agent: %s", p); + http_cmd(conn, "User-Agent: %s", p); else - _http_cmd(conn, "User-Agent: %s " _LIBFETCH_VER, getprogname()); + http_cmd(conn, "User-Agent: %s " _LIBFETCH_VER, getprogname()); if (url->offset > 0) - _http_cmd(conn, "Range: bytes=%lld-", (long long)url->offset); - _http_cmd(conn, "Connection: close"); - _http_cmd(conn, ""); + http_cmd(conn, "Range: bytes=%lld-", (long long)url->offset); + http_cmd(conn, "Connection: close"); + http_cmd(conn, ""); /* * Force the queued request to be dispatched. Normally, one @@ -931,7 +931,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, sizeof(val)); /* get reply */ - switch (_http_get_reply(conn)) { + switch (http_get_reply(conn)) { case HTTP_OK: case HTTP_PARTIAL: /* fine */ @@ -950,12 +950,12 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, * We already sent out authorization code, * so there's nothing more we can do. */ - _http_seterr(conn->err); + http_seterr(conn->err); goto ouch; } /* try again, but send the password this time */ if (verbose) - _fetch_info("server requires authorization"); + fetch_info("server requires authorization"); break; case HTTP_NEED_PROXY_AUTH: /* @@ -963,7 +963,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, * our proxy authorization code, so there's * nothing more we can do. */ - _http_seterr(conn->err); + http_seterr(conn->err); goto ouch; case HTTP_BAD_RANGE: /* @@ -975,10 +975,10 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, case HTTP_PROTOCOL_ERROR: /* fall through */ case -1: - _fetch_syserr(); + fetch_syserr(); goto ouch; default: - _http_seterr(conn->err); + http_seterr(conn->err); if (!verbose) goto ouch; /* fall through so we can get the full error message */ @@ -986,21 +986,21 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, /* get headers */ do { - switch ((h = _http_next_header(conn, &p))) { + switch ((h = http_next_header(conn, &p))) { case hdr_syserror: - _fetch_syserr(); + fetch_syserr(); goto ouch; case hdr_error: - _http_seterr(HTTP_PROTOCOL_ERROR); + http_seterr(HTTP_PROTOCOL_ERROR); goto ouch; case hdr_content_length: - _http_parse_length(p, &clength); + http_parse_length(p, &clength); break; case hdr_content_range: - _http_parse_range(p, &offset, &length, &size); + http_parse_range(p, &offset, &length, &size); break; case hdr_last_modified: - _http_parse_mtime(p, &mtime); + http_parse_mtime(p, &mtime); break; case hdr_location: if (!HTTP_REDIRECT(conn->err)) @@ -1008,7 +1008,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, if (new) free(new); if (verbose) - _fetch_info("%d redirect to %s", conn->err, p); + fetch_info("%d redirect to %s", conn->err, p); if (*p == '/') /* absolute path */ new = fetchMakeURL(url->scheme, url->host, url->port, p, @@ -1048,7 +1048,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, if (conn->err == HTTP_NEED_AUTH) { e = conn->err; need_auth = 1; - _fetch_close(conn); + fetch_close(conn); conn = NULL; continue; } @@ -1061,7 +1061,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, conn->err = HTTP_OK; break; } else { - _http_seterr(conn->err); + http_seterr(conn->err); goto ouch; } } @@ -1073,7 +1073,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, /* all other cases: we got a redirect */ e = conn->err; need_auth = 0; - _fetch_close(conn); + fetch_close(conn); conn = NULL; if (!new) { DEBUG(fprintf(stderr, "redirect with no new location\n")); @@ -1086,7 +1086,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, /* we failed, or ran out of retries */ if (conn == NULL) { - _http_seterr(e); + http_seterr(e); goto ouch; } @@ -1097,7 +1097,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, /* check for inconsistencies */ if (clength != -1 && length != -1 && clength != length) { - _http_seterr(HTTP_PROTOCOL_ERROR); + http_seterr(HTTP_PROTOCOL_ERROR); goto ouch; } if (clength == -1) @@ -1105,7 +1105,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, if (clength != -1) length = offset + clength; if (length != -1 && size != -1 && length != size) { - _http_seterr(HTTP_PROTOCOL_ERROR); + http_seterr(HTTP_PROTOCOL_ERROR); goto ouch; } if (size == -1) @@ -1119,7 +1119,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, /* too far? */ if (URL->offset > 0 && offset > URL->offset) { - _http_seterr(HTTP_PROTOCOL_ERROR); + http_seterr(HTTP_PROTOCOL_ERROR); goto ouch; } @@ -1128,8 +1128,8 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, URL->length = clength; /* wrap it up in a FILE */ - if ((f = _http_funopen(conn, chunked)) == NULL) { - _fetch_syserr(); + if ((f = http_funopen(conn, chunked)) == NULL) { + fetch_syserr(); goto ouch; } @@ -1139,7 +1139,7 @@ _http_request(struct url *URL, const char *op, struct url_stat *us, fetchFreeURL(purl); if (HTTP_ERROR(conn->err)) { - _http_print_html(stderr, f); + http_print_html(stderr, f); fclose(f); f = NULL; } @@ -1152,7 +1152,7 @@ ouch: if (purl) fetchFreeURL(purl); if (conn != NULL) - _fetch_close(conn); + fetch_close(conn); return (NULL); } @@ -1167,7 +1167,7 @@ ouch: FILE * fetchXGetHTTP(struct url *URL, struct url_stat *us, const char *flags) { - return (_http_request(URL, "GET", us, _http_get_proxy(flags), flags)); + return (http_request(URL, "GET", us, http_get_proxy(flags), flags)); } /* @@ -1197,7 +1197,7 @@ fetchStatHTTP(struct url *URL, struct url_stat *us, const char *flags) { FILE *f; - f = _http_request(URL, "HEAD", us, _http_get_proxy(flags), flags); + f = http_request(URL, "HEAD", us, http_get_proxy(flags), flags); if (f == NULL) return (-1); fclose(f); |