rpmrpc.c | rpmrpc.c | |||
---|---|---|---|---|
skipping to change at line 910 | skipping to change at line 910 | |||
if (((S_ISLNK (st->st_mode) || | if (((S_ISLNK (st->st_mode) || | |||
(num_cols == idx + 3 && st->st_nlink > 1))) /* Maybe a hardlink? (i n extfs) */ | (num_cols == idx + 3 && st->st_nlink > 1))) /* Maybe a hardlink? (i n extfs) */ | |||
&& idx2) | && idx2) | |||
{ | { | |||
size_t tlen; | size_t tlen; | |||
char *t; | char *t; | |||
if (filename){ | if (filename){ | |||
size_t nb = column_ptr [idx2] - column_ptr [idx] - 1; | size_t nb = column_ptr [idx2] - column_ptr [idx] - 1; | |||
t = strncpy(xcalloc(1, nb+1), p_copy + column_ptr [idx], nb); | t = strncpy((char *)xcalloc(1, nb+1), p_copy + column_ptr [idx], nb); | |||
*filename = t; | *filename = t; | |||
} | } | |||
if (linkname){ | if (linkname){ | |||
t = g_strdup (p_copy + column_ptr [idx2+1]); | t = g_strdup (p_copy + column_ptr [idx2+1]); | |||
tlen = strlen (t); | tlen = strlen (t); | |||
if (t [tlen-1] == '\r' || t [tlen-1] == '\n') | if (t [tlen-1] == '\r' || t [tlen-1] == '\n') | |||
t [tlen-1] = '\0'; | t [tlen-1] = '\0'; | |||
if (t [tlen-2] == '\r' || t [tlen-2] == '\n') | if (t [tlen-2] == '\r' || t [tlen-2] == '\n') | |||
t [tlen-2] = '\0'; | t [tlen-2] = '\0'; | |||
skipping to change at line 986 | skipping to change at line 986 | |||
/** | /** | |||
*/ | */ | |||
static size_t ftpBufAlloced; | static size_t ftpBufAlloced; | |||
/** | /** | |||
*/ | */ | |||
/*@only@*/ /*@relnull@*/ | /*@only@*/ /*@relnull@*/ | |||
static char * ftpBuf; | static char * ftpBuf; | |||
#define alloca_strdup(_s) strcpy(alloca(strlen(_s)+1), (_s)) | #define alloca_strdup(_s) strcpy((char *)alloca(strlen(_s)+1), (_s)) | |||
static int ftpNLST(const char * url, ftpSysCall_t ftpSysCall, | static int ftpNLST(const char * url, ftpSysCall_t ftpSysCall, | |||
/*@out@*/ /*@null@*/ struct stat * st, | /*@out@*/ /*@null@*/ struct stat * st, | |||
/*@out@*/ /*@null@*/ char * rlbuf, size_t rlbufsiz) | /*@out@*/ /*@null@*/ char * rlbuf, size_t rlbufsiz) | |||
/*@globals ftpBufAlloced, ftpBuf, | /*@globals ftpBufAlloced, ftpBuf, | |||
h_errno, fileSystem, internalState @*/ | h_errno, fileSystem, internalState @*/ | |||
/*@modifies *st, *rlbuf, ftpBufAlloced, ftpBuf, | /*@modifies *st, *rlbuf, ftpBufAlloced, ftpBuf, | |||
fileSystem, internalState @*/ | fileSystem, internalState @*/ | |||
{ | { | |||
FD_t fd; | FD_t fd; | |||
skipping to change at line 1023 | skipping to change at line 1023 | |||
switch (ftpSysCall) { | switch (ftpSysCall) { | |||
case DO_FTP_GLOB: | case DO_FTP_GLOB: | |||
fd = ftpOpen(url, 0, 0, &u); | fd = ftpOpen(url, 0, 0, &u); | |||
if (fd == NULL || u == NULL) | if (fd == NULL || u == NULL) | |||
return -1; | return -1; | |||
u->openError = ftpReq(fd, "LIST", path); | u->openError = ftpReq(fd, "LIST", path); | |||
break; | break; | |||
default: | default: | |||
urldn = alloca_strdup(url); | urldn = alloca_strdup(url); | |||
if ((bn = strrchr(urldn, '/')) == NULL) | if ((bn = (char *) strrchr(urldn, '/')) == NULL) | |||
return -2; | return -2; | |||
else if (bn == path) | else if (bn == path) | |||
bn = "."; | bn = (char *) "."; | |||
else | else | |||
*bn++ = '\0'; | *bn++ = '\0'; | |||
nbn = strlen(bn); | nbn = strlen(bn); | |||
rc = ftpChdir(urldn); /* XXX don't care about CWD */ | rc = ftpChdir(urldn); /* XXX don't care about CWD */ | |||
if (rc < 0) | if (rc < 0) | |||
return rc; | return rc; | |||
fd = ftpOpen(url, 0, 0, &u); | fd = ftpOpen(url, 0, 0, &u); | |||
if (fd == NULL || u == NULL) | if (fd == NULL || u == NULL) | |||
skipping to change at line 1057 | skipping to change at line 1057 | |||
} | } | |||
if (u->openError < 0) { | if (u->openError < 0) { | |||
fd = fdLink(fd, "error data (ftpStat)"); | fd = fdLink(fd, "error data (ftpStat)"); | |||
rc = -2; | rc = -2; | |||
goto exit; | goto exit; | |||
} | } | |||
if (ftpBufAlloced == 0 || ftpBuf == NULL) { | if (ftpBufAlloced == 0 || ftpBuf == NULL) { | |||
ftpBufAlloced = _url_iobuf_size; | ftpBufAlloced = _url_iobuf_size; | |||
ftpBuf = xcalloc(ftpBufAlloced, sizeof(ftpBuf[0])); | ftpBuf = (char *) xcalloc(ftpBufAlloced, sizeof(ftpBuf[0])); | |||
} | } | |||
*ftpBuf = '\0'; | *ftpBuf = '\0'; | |||
bufLength = 0; | bufLength = 0; | |||
moretodo = 1; | moretodo = 1; | |||
do { | do { | |||
/* XXX FIXME: realloc ftpBuf if < ~128 chars remain */ | /* XXX FIXME: realloc ftpBuf if < ~128 chars remain */ | |||
if ((ftpBufAlloced - bufLength) < (1024+80)) { | if ((ftpBufAlloced - bufLength) < (1024+80)) { | |||
ftpBufAlloced <<= 2; | ftpBufAlloced <<= 2; | |||
assert(ftpBufAlloced < (8*1024*1024)); | assert(ftpBufAlloced < (8*1024*1024)); | |||
ftpBuf = xrealloc(ftpBuf, ftpBufAlloced); | ftpBuf = (char *) xrealloc(ftpBuf, ftpBufAlloced); | |||
} | } | |||
s = se = ftpBuf + bufLength; | s = se = ftpBuf + bufLength; | |||
*se = '\0'; | *se = '\0'; | |||
rc = fdFgets(fd, se, (ftpBufAlloced - bufLength)); | rc = fdFgets(fd, se, (ftpBufAlloced - bufLength)); | |||
if (rc <= 0) { | if (rc <= 0) { | |||
moretodo = 0; | moretodo = 0; | |||
break; | break; | |||
} | } | |||
if (ftpSysCall == DO_FTP_GLOB) { /* XXX HACK */ | if (ftpSysCall == DO_FTP_GLOB) { /* XXX HACK */ | |||
skipping to change at line 1269 | skipping to change at line 1269 | |||
struct stat * st = NULL; | struct stat * st = NULL; | |||
const char * s, * sb, * se; | const char * s, * sb, * se; | |||
int nac; | int nac; | |||
int c; | int c; | |||
int rc; | int rc; | |||
if (_ftp_debug) | if (_ftp_debug) | |||
fprintf(stderr, "*** ftpOpendir(%s)\n", path); | fprintf(stderr, "*** ftpOpendir(%s)\n", path); | |||
/* Load FTP collection into argv. */ | /* Load FTP collection into argv. */ | |||
avx = rpmavxNew(path, st); | avx = (rpmavx) rpmavxNew(path, st); | |||
if (avx == NULL) { | if (avx == NULL) { | |||
errno = ENOENT; /* Note: avx is NULL iff urlSplit() fails. */ | errno = ENOENT; /* Note: avx is NULL iff urlSplit() fails. */ | |||
return NULL; | return NULL; | |||
} | } | |||
rc = ftpNLST(path, DO_FTP_GLOB, NULL, NULL, 0); | rc = ftpNLST(path, DO_FTP_GLOB, NULL, NULL, 0); | |||
if (rc) | if (rc) | |||
return NULL; | return NULL; | |||
nac = 0; | nac = 0; | |||
skipping to change at line 1303 | skipping to change at line 1303 | |||
if (*se == '\n') se++; | if (*se == '\n') se++; | |||
sb = NULL; | sb = NULL; | |||
s = se; | s = se; | |||
/*@switchbreak@*/ break; | /*@switchbreak@*/ break; | |||
default: | default: | |||
/*@switchbreak@*/ break; | /*@switchbreak@*/ break; | |||
} | } | |||
} | } | |||
avx->av = xcalloc(nac+1, sizeof(*avx->av)); | avx->av = (const char **) xcalloc(nac+1, sizeof(*avx->av)); | |||
avx->modes = xcalloc(nac, sizeof(*avx->modes)); | avx->modes = (rpmuint16_t *) xcalloc(nac, sizeof(*avx->modes)); | |||
nac = 0; | nac = 0; | |||
sb = NULL; | sb = NULL; | |||
s = se = ftpBuf; | s = se = ftpBuf; | |||
while ((c = (int) *se) != (int) '\0') { | while ((c = (int) *se) != (int) '\0') { | |||
se++; | se++; | |||
switch (c) { | switch (c) { | |||
case '/': | case '/': | |||
sb = se; | sb = se; | |||
/*@switchbreak@*/ break; | /*@switchbreak@*/ break; | |||
skipping to change at line 1333 | skipping to change at line 1333 | |||
case 'b': avx->modes[nac] |= S_IFBLK; /*@innerbreak@*/ break ; | case 'b': avx->modes[nac] |= S_IFBLK; /*@innerbreak@*/ break ; | |||
case '-': avx->modes[nac] |= S_IFREG; /*@innerbreak@*/ break ; | case '-': avx->modes[nac] |= S_IFREG; /*@innerbreak@*/ break ; | |||
case 'l': avx->modes[nac] |= S_IFLNK; /*@innerbreak@*/ break ; | case 'l': avx->modes[nac] |= S_IFLNK; /*@innerbreak@*/ break ; | |||
case 's': avx->modes[nac] |= S_IFSOCK; /*@innerbreak@*/ brea k; | case 's': avx->modes[nac] |= S_IFSOCK; /*@innerbreak@*/ brea k; | |||
default: avx->modes[nac] |= S_IFREG; /*@innerbreak@*/ break ; | default: avx->modes[nac] |= S_IFREG; /*@innerbreak@*/ break ; | |||
} | } | |||
/*@=unrecog@*/ | /*@=unrecog@*/ | |||
for (sb = se; sb > s && sb[-1] != ' '; sb--) | for (sb = se; sb > s && sb[-1] != ' '; sb--) | |||
{}; | {}; | |||
} | } | |||
avx->av[nac++] = strncpy(xcalloc(1, (se-sb-1)+1), sb, (se-sb-1)) ; | avx->av[nac++] = strncpy((char *)xcalloc(1, (se-sb-1)+1), sb, (s e-sb-1)); | |||
if (*se == '\n') se++; | if (*se == '\n') se++; | |||
sb = NULL; | sb = NULL; | |||
s = se; | s = se; | |||
/*@switchbreak@*/ break; | /*@switchbreak@*/ break; | |||
default: | default: | |||
/*@switchbreak@*/ break; | /*@switchbreak@*/ break; | |||
} | } | |||
} | } | |||
avdir = (AVDIR) avOpendir(path, avx->av, avx->modes); | avdir = (AVDIR) avOpendir(path, avx->av, avx->modes); | |||
skipping to change at line 2279 | skipping to change at line 2279 | |||
int Glob_error(/*@unused@*/ const char * epath, | int Glob_error(/*@unused@*/ const char * epath, | |||
/*@unused@*/ int eerrno) | /*@unused@*/ int eerrno) | |||
{ | { | |||
return 1; | return 1; | |||
} | } | |||
int Glob(const char *pattern, int flags, | int Glob(const char *pattern, int flags, | |||
int errfunc(const char * epath, int eerrno), void *_pglob) | int errfunc(const char * epath, int eerrno), void *_pglob) | |||
{ | { | |||
glob_t *pglob = _pglob; | glob_t *pglob = (glob_t *) _pglob; | |||
const char * lpath; | const char * lpath; | |||
int ut = urlPath(pattern, &lpath); | int ut = urlPath(pattern, &lpath); | |||
const char *home = getenv("HOME"); | const char *home = getenv("HOME"); | |||
/*@-castfcnptr@*/ | /*@-castfcnptr@*/ | |||
if (_rpmio_debug) | if (_rpmio_debug) | |||
fprintf(stderr, "*** Glob(%s,0x%x,%p,%p)\n", pattern, (unsigned)flags, (voi d *)errfunc, pglob); | fprintf(stderr, "*** Glob(%s,0x%x,%p,%p)\n", pattern, (unsigned)flags, (voi d *)errfunc, pglob); | |||
/*@=castfcnptr@*/ | /*@=castfcnptr@*/ | |||
switch (ut) { | switch (ut) { | |||
case URL_IS_HTTPS: | case URL_IS_HTTPS: | |||
case URL_IS_HTTP: | case URL_IS_HTTP: | |||
case URL_IS_FTP: | case URL_IS_FTP: | |||
/*@-type@*/ | /*@-type@*/ | |||
pglob->gl_closedir = (void *) Closedir; | pglob->gl_closedir = (void (*)(void *)) Closedir; | |||
pglob->gl_readdir = (void *) Readdir; | pglob->gl_readdir = (struct dirent * (*)(void *)) Readdir; | |||
pglob->gl_opendir = (void *) Opendir; | pglob->gl_opendir = (void * (*)(const char *)) Opendir; | |||
pglob->gl_lstat = Lstat; | pglob->gl_lstat = Lstat; | |||
pglob->gl_stat = Stat; | pglob->gl_stat = Stat; | |||
/*@=type@*/ | /*@=type@*/ | |||
flags |= GLOB_ALTDIRFUNC; | flags |= GLOB_ALTDIRFUNC; | |||
flags &= ~GLOB_TILDE; | flags &= ~GLOB_TILDE; | |||
break; | break; | |||
case URL_IS_PATH: | case URL_IS_PATH: | |||
pattern = lpath; | pattern = lpath; | |||
/*@fallthrough@*/ | /*@fallthrough@*/ | |||
case URL_IS_UNKNOWN: | case URL_IS_UNKNOWN: | |||
skipping to change at line 2323 | skipping to change at line 2323 | |||
case URL_IS_MONGO: /* XXX FIXME */ | case URL_IS_MONGO: /* XXX FIXME */ | |||
default: | default: | |||
return -2; | return -2; | |||
/*@notreached@*/ break; | /*@notreached@*/ break; | |||
} | } | |||
return glob(pattern, flags, errfunc, pglob); | return glob(pattern, flags, errfunc, pglob); | |||
} | } | |||
void Globfree(void *_pglob) | void Globfree(void *_pglob) | |||
{ | { | |||
glob_t *pglob = _pglob; | glob_t *pglob = (glob_t *) _pglob; | |||
if (_rpmio_debug) | if (_rpmio_debug) | |||
fprintf(stderr, "*** Globfree(%p)\n", pglob); | fprintf(stderr, "*** Globfree(%p)\n", pglob); | |||
globfree(pglob); | globfree(pglob); | |||
} | } | |||
char * Realpath(const char * path, /*@null@*/ char * resolved_path) | char * Realpath(const char * path, /*@null@*/ char * resolved_path) | |||
{ | { | |||
const char * lpath; | const char * lpath; | |||
int ut = urlPath(path, &lpath); | int ut = urlPath(path, &lpath); | |||
char * rpath = NULL; | char * rpath = NULL; | |||
End of changes. 12 change blocks. | ||||
15 lines changed or deleted | 15 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |