- fix: fsm reads/writes now return error on partial I/O.
- fix: Ferror returned spurious error for gzdio/bzdio.
CVS patchset: 4874
CVS date: 2001/06/17 15:19:26
%post -p "/sbin/ldconfig -n /usr/lib"
incompatibilities.
- popt: add POPT_ARGFLAG_SHOW_DEFAULT to display initial values(#32558).
+ - popt: add POPT_CONTEXT_ARG_OPTS for all opts to return 1 (#30912).
+ - fix: fsm reads/writes now return error on partial I/O.
+ - fix: Ferror returned spurious error for gzdio/bzdio.
4.0 -> 4.0.[12]
- add doxygen and lclint annotations most everywhere.
cur, (fsm->wrbuf == fsm->wrb ? "wrbuf" : "mmap"),
(int)fsm->wrlen, (int)fsm->rdnb);
if (fsm->rdnb != fsm->wrlen) fprintf(stderr, "*** short read, had %d, got %d\n", (int)fsm->rdnb, (int)fsm->wrlen);
-#ifdef NOTYET
- if (Ferror(fsm->rfd))
+ if (fsm->rdnb != fsm->wrlen || Ferror(fsm->cfd))
rc = CPIOERR_READ_FAILED;
-#endif
if (fsm->rdnb > 0)
fdSetCpioPos(fsm->cfd, fdGetCpioPos(fsm->cfd) + fsm->rdnb);
break;
cur, (fsm->rdbuf == fsm->rdb ? "rdbuf" : "mmap"),
(int)fsm->rdnb, (int)fsm->wrnb);
if (fsm->rdnb != fsm->wrnb) fprintf(stderr, "*** short write, had %d, got %d\n", (int)fsm->rdnb, (int)fsm->wrnb);
-#ifdef NOTYET
- if (Ferror(fsm->wfd))
+ if (fsm->rdnb != fsm->wrnb || Ferror(fsm->cfd))
rc = CPIOERR_WRITE_FAILED;
-#endif
if (fsm->wrnb > 0)
fdSetCpioPos(fsm->cfd, fdGetCpioPos(fsm->cfd) + fsm->wrnb);
break;
rpmMessage(RPMMESS_DEBUG, " %8s (rdbuf, %d, rfd)\trdnb %d\n",
cur, (int)fsm->rdlen, (int)fsm->rdnb);
if (fsm->rdnb != fsm->rdlen) fprintf(stderr, "*** short read, had %d, got %d\n", (int)fsm->rdnb, (int)fsm->rdlen);
-#ifdef NOTYET
- if (Ferror(fsm->rfd))
+ if (fsm->rdnb != fsm->rdlen || Ferror(fsm->rfd))
rc = CPIOERR_READ_FAILED;
-#endif
break;
case FSM_RCLOSE:
if (fsm->rfd) {
rpmMessage(RPMMESS_DEBUG, " %8s (wrbuf, %d, wfd)\twrnb %d\n",
cur, (int)fsm->rdnb, (int)fsm->wrnb);
if (fsm->rdnb != fsm->wrnb) fprintf(stderr, "*** short write: had %d, got %d\n", (int)fsm->rdnb, (int)fsm->wrnb);
-#ifdef NOTYET
- if (Ferror(fsm->wfd))
+ if (fsm->rdnb != fsm->wrnb || Ferror(fsm->wfd))
rc = CPIOERR_WRITE_FAILED;
-#endif
break;
case FSM_WCLOSE:
if (fsm->wfd) {
return POPT_ERROR_BADOPT;
if (con->restLeftover || *origOptString != '-') {
- if (con->leftovers != NULL) /* XXX can't happen */
- con->leftovers[con->numLeftovers++] = origOptString;
if (con->flags & POPT_CONTEXT_POSIXMEHARDER)
con->restLeftover = 1;
+ if (con->flags & POPT_CONTEXT_ARG_OPTS) {
+ con->os->nextArg = xstrdup(origOptString);
+ return 0;
+ }
+ if (con->leftovers != NULL) /* XXX can't happen */
+ con->leftovers[con->numLeftovers++] = origOptString;
continue;
}
cleanOSE(con->os--);
}
if (con->os->next == con->os->argc) {
- if (opt->argInfo & POPT_ARGFLAG_OPTIONAL)
- con->os->nextArg = NULL;
- else
+ if (!(opt->argInfo & POPT_ARGFLAG_OPTIONAL))
+ /*@-compdef@*/ /* FIX: con->os->argv not defined */
return POPT_ERROR_NOARG;
+ /*@=compdef@*/
+ con->os->nextArg = NULL;
} else {
/*
#define POPT_CONTEXT_NO_EXEC (1 << 0) /*!< ignore exec expansions */
#define POPT_CONTEXT_KEEP_FIRST (1 << 1) /*!< pay attention to argv[0] */
#define POPT_CONTEXT_POSIXMEHARDER (1 << 2) /*!< options can't follow args */
+#define POPT_CONTEXT_ARG_OPTS (1 << 4) /*!< return args as options with value 0 */
/*@}*/
/** \ingroup popt
static /*@only@*/ /*@null@*/ char * singleOptionDefaultValue(int lineLength,
const struct poptOption * opt,
- /*@null@*/ const char *translation_domain)
+ /*@-paramuse@*/ /* FIX: i18n macros disable with lclint */
+ /*@null@*/ const char * translation_domain)
+ /*@=paramuse@*/
/*@*/
{
const char * defstr = D_(translation_domain, "default");
- char * l = malloc(4*lineLength + 1);
- char * le = l;
+ char * le = malloc(4*lineLength + 1);
+ char * l = le;
- if (l == NULL) return l; /* XXX can't happen */
+ if (l == NULL) return NULL; /* XXX can't happen */
+ *le = '\0';
*le++ = '(';
le = stpcpy(le, defstr);
*le++ = ':';
*le++ = ' ';
+ if (opt->arg) /* XXX programmer error */
switch (opt->argInfo & POPT_ARG_MASK) {
case POPT_ARG_VAL:
case POPT_ARG_INT:
default:
l = _free(l);
return NULL;
- break;
+ /*@notreached@*/ break;
}
*le++ = ')';
*le = '\0';
static void singleOptionHelp(FILE * fp, int maxLeftCol,
const struct poptOption * opt,
- /*@null@*/ const char *translation_domain)
+ /*@null@*/ const char * translation_domain)
/*@modifies *fp, fileSystem @*/
{
int indentLength = maxLeftCol + 5;
if (opt->argInfo & POPT_ARGFLAG_SHOW_DEFAULT) {
defs = singleOptionDefaultValue(lineLength, opt, translation_domain);
if (defs) {
- char * t = malloc(strlen(help) + strlen(defs) + sizeof(" "));
+ char * t = malloc((help ? strlen(help) : 0) +
+ strlen(defs) + sizeof(" "));
if (t) {
- (void) stpcpy( stpcpy( stpcpy(t, help), " "), defs);
+ char * te = t;
+ *te = '\0';
+ if (help) te = stpcpy(te, help);
+ (void) stpcpy( stpcpy( te, " "), defs);
defs = _free(defs);
}
defs = t;
ec = ferror(fdGetFILE(fd));
/*@=voidabstract =nullpass@*/
} else if (fps->io == gzdio) {
- ec = (fd->syserrno || fd->errcookie != NULL) ? -1 : 0;
+ ec = (fd->syserrno || fd->errcookie != NULL) ? -1 : 0;
+ i--; /* XXX fdio under gzdio always has fdno == -1 */
#if HAVE_BZLIB_H
} else if (fps->io == bzdio) {
ec = (fd->syserrno || fd->errcookie != NULL) ? -1 : 0;
+ i--; /* XXX fdio under bzdio always has fdno == -1 */
#endif
} else {
/* XXX need to check ufdio/gzdio/bzdio/fdio errors correctly. */