- erasures not yet strict, warn & chug on unlink(2)/rmdir(2) failure.
CVS patchset: 4723
CVS date: 2001/04/29 16:08:55
- lib/depends.c: diddle debugging messages.
- fix: readlink return value clobbered by header write.
- fix: ineeded count wrong for overlapped, created files.
+ - globalize _free(3) wrapper in rpmlib.h, consistent usage throughout.
+ - internalize locale insensitive ctype(3) in rpmio.h.
+ - boring lclint annotations and fiddles.
+ - transaction iterator(s) need to run in reverse order on pure erasures.
+ - erasures not yet strict, warn & chug on unlink(2)/rmdir(2) failure.
4.0 -> 4.0.[12]
- add doxygen and lclint annotations most everywhere.
int _fsm_debug = 0;
+/* XXX Failure to remove is not (yet) cause for failure. */
+int strict_erasures = 0;
+
rpmTransactionSet fsmGetTs(const FSM_t fsm) {
const FSMI_t iter = fsm->iter;
return (iter ? iter->ts : NULL);
break;
/* XXX common error message. */
- rpmError(RPMERR_RMDIR,
+ rpmError(
+ (strict_erasures ? RPMERR_RMDIR : RPMWARN_RMDIR),
_("%s rmdir of %s failed: Directory not empty\n"),
fiTypeString(fi), fsm->path);
break;
default:
- rpmError(RPMERR_RMDIR,
+ rpmError(
+ (strict_erasures ? RPMERR_RMDIR : RPMWARN_RMDIR),
_("%s rmdir of %s failed: %s\n"),
fiTypeString(fi), fsm->path, strerror(errno));
break;
if (!rc) break;
if (!(errno == ENOENT && (fsm->fflags & RPMFILE_MISSINGOK)))
rpmError(RPMERR_UNLINK,
+ (strict_erasures ? RPMERR_UNLINK : RPMWARN_UNLINK),
_("%s unlink of %s failed: %s\n"),
fiTypeString(fi), fsm->path, strerror(errno));
}
}
+ /* XXX Failure to remove is not (yet) cause for failure. */
+ if (!strict_erasures) rc = 0;
break;
}
iter = xcalloc(1, sizeof(*iter));
iter->ts = ts;
- iter->oc = ((ts->transFlags & RPMTRANS_FLAG_REVERSE)
- ? (ts->orderCount - 1) : 0);
+ iter->reverse = ((ts->transFlags & RPMTRANS_FLAG_REVERSE) ? 1 : 0);
+ iter->oc = (iter->reverse ? (ts->orderCount - 1) : 0);
iter->ocsave = iter->oc;
return iter;
}
#define _em(_e) \
(((_e) << 16) | RPMLOG_MAKEPRI(RPMLOG_ERRMSG, RPMLOG_ERR))
-#define _en(_e) \
+#define _wm(_e) \
+ (((_e) << 16) | RPMLOG_MAKEPRI(RPMLOG_ERRMSG, RPMLOG_WARNING))
+#define _nm(_e) \
(((_e) << 16) | RPMLOG_MAKEPRI(RPMLOG_ERRMSG, RPMLOG_NOTICE))
+#define _im(_e) \
+ (((_e) << 16) | RPMLOG_MAKEPRI(RPMLOG_ERRMSG, RPMLOG_INFO))
+#define _dm(_e) \
+ (((_e) << 16) | RPMLOG_MAKEPRI(RPMLOG_ERRMSG, RPMLOG_DEBUG))
/**
* Tokens used by rpmError().
RPMERR_FREAD = _em(134), /*!< %s: Fread failed: %s */
RPMERR_READLEAD = _em(135), /*!< %s: readLead failed */
RPMERR_WRITELEAD = _em(136), /*!< %s: writeLead failed: %s */
- RPMERR_QUERYINFO = _en(137), /*!< */
- RPMERR_MANIFEST = _en(138), /*!< %s: read manifest failed: %s */
+ RPMERR_QUERYINFO = _nm(137), /*!< */
+ RPMERR_MANIFEST = _nm(138), /*!< %s: read manifest failed: %s */
RPMERR_BADSIGTYPE = _em(200), /*!< Unknown signature type */
RPMERR_SIGGEN = _em(201), /*!< Error generating signature */
- RPMERR_SIGVFY = _en(202) /*!< */
+ RPMERR_SIGVFY = _nm(202), /*!< */
+
+ RPMWARN_UNLINK = _wm(512+16), /*!< unlink(2) failed */
+ RPMWARN_RMDIR = _wm(512+17) /*!< rmdir(2) failed */
} rpmerrCode;
/**