Todo List

Global Access (const char *path, int amode)
  Implement remotely.
Global addChangelogEntry (Header h, time_t time, const char *name, const char *text)
  addChangelogEntry should be static.
Global argerror (const char *desc)
  (CLI embedding) Use rpmlog/rpmlog instead of fprintf, remove exit.
Global armorFormat (HE_t he, const char **av)
  Permit selectable display formats (i.e. binary).
Global base64Format (HE_t he, const char **av)
  Permit selectable display formats (i.e. binary).
File buildio.h
  Eliminate, merge into rpmlib.
Global Chmod (const char *path, mode_t mode)
  Implement remotely.
Global Chown (const char *path, uid_t owner, gid_t group)
  Implement remotely.
Global Chroot (const char *path)
  Implement remotely.
Global copyEntry (const indexEntry entry, HE_t he, int minMem)
  Permit retrieval of regions other than HEADER_IMUTABLE.
Global cpio_doio (FD_t fdo, Header h, CSA_t csa, const char *payload_format, const char *fmodeMacro)
  Create transaction set much earlier.
Global cvtfmode (const char *m, char *stdio, size_t nstdio, char *other, size_t nother, const char **end, int *f)
  glibc also supports ",ccs="
Global dbiFindByLabel (dbiIndex dbi, DBC *dbcursor, DBT *key, DBT *data, const char *arg, dbiIndexSet *matches)
  Name must be an exact match, as name is a db key.
Page Dependencies
  per-interpreter dependency generators are not located in subdirectories.
Global deptypeFormat (HE_t he, const char **av)
  There's more sense bits, and the bits are attributes, not exclusive.
Global doSetupMacro (Spec spec, const char *line)
  FIXME: Option -q broken when not immediately after setup.
Global expandMacro (MacroBuf mb)
  Dynamically reallocate target buffer.
Global expandMacros (void *spec, MacroContext mc, char *sbuf, size_t slen)
  Eliminate from API.
Global Fchmod (FD_t fd, mode_t mode)
  Implement remotely.
Global Fchown (FD_t fd, uid_t owner, gid_t group)
  Implement remotely.
Global fingerPrint
  Convert to pointer and make abstract.
Global genCpioListAndHeader (FileList fl, rpmfi *fip, Header h, int isSrc)

  Should directories have doc/config attributes? (#14531)

  Remove RPMTAG_OLDFILENAMES, add dirname/basename instead.

Global getFilesystemList (void)
  determine rdonly for non-linux file systems.
Global getGidS (const char *gname)
  Implement using hash.
Global getGname (gid_t gid)
  Implement using hash.
Global getGnameS (const char *gname)
  Implement using hash.
Global getOutputFrom (const char *dir, ARGV_t argv, const char *writePtr, size_t writeBytesLeft, int failNonZero)
  Use poll(2) rather than select(2), if available.
Global getUidS (const char *uname)
  Implement using hash.
Global getUname (uid_t uid)
  Implement using hash.
Global getUnameS (const char *uname)
  Implement using hash.
Global grabArgs (MacroBuf mb, const MacroEntry me, const char *se, const char *lastc)
  Use popt rather than getopt to parse args.
Global headerMergeLegacySigs (Header h, const Header sigh)
  Remove headerSort() through headerInitIterator() modifies sig.
Global headerRegenSigHeader (const Header h, int noArchiveSize)
  Remove headerSort() through headerInitIterator() modifies h.
Page Immutable header regions in rpm-4.0.1 and later
  Either concatenated/nested regions may be used to implement a metarpm, aka a package of packages, dunno how, when, or even if, yet.
Global Lchown (const char *path, uid_t owner, gid_t group)
  Implement remotely.
Global Lseek (int fdno, off_t offset, int whence)
  Implement SEEK_HOLE/SEEK_DATA.
Global Mkfifo (const char *path, mode_t mode)
  Implement remotely.
Global Mknod (const char *path, mode_t mode, dev_t dev)
  Implement remotely.
Global Open (const char *path, int flags, mode_t mode)
  Implement remotely.
Global pgpExtractPubkeyFingerprint (const char *b64pkt, rpmuint8_t *keyid)
  V3 non-RSA public keys not implemented.
Global pgpHashAlgo
  Add SHA256.
Global pgpHashAlgo
  Add SHA256.
Global pgpHexStr (const rpmuint8_t *p, size_t plen)
  Remove static buffer.
Global pgpMpiStr (const rpmuint8_t *p)
  Remove static buffer.
Global pgpPubkeyFingerprint (const rpmuint8_t *pkt, size_t pktlen, rpmuint8_t *keyid)
  V3 non-RSA public keys not implemented.
Global printHash (const rpmuint64_t amount, const rpmuint64_t total)
  Unsnarl isatty(STDOUT_FILENO) from the control flow.
Global readFile (FD_t fd, const char *fn)
  If the GPG key was known available, the md5 digest could be skipped.
Global Readlink (const char *path, char *buf, size_t bufsiz)
  Implement remotely.
Global relocateFileList (const rpmts ts, rpmfi fi, Header origH, iosmFileAction *actions)
  multilib file dispositions need to be checked.
Global rpm_machtable_e
  Eliminate in rpm-5.1.
Global rpmalSatisfiesDepend (const rpmal al, const rpmds ds, alKey *keyp)
  Eliminate.
Global rpmcliImportPubkey (const rpmts ts, const unsigned char *pkt, ssize_t pktlen)
  Implicit –update policy for gpg-pubkey headers.
Global rpmcliImportPubkeys (const rpmts ts, QVA_t qva, const char **argv)
  Implicit –update policy for gpg-pubkey headers.
Global rpmcliInstall (rpmts ts, QVA_t ia, const char **argv)
  Use rpmdsCompare rather than rpmVersionCompare.
Global rpmcliQuery (rpmts ts, QVA_t qva, const char **argv)
  hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?
Global rpmcliVerify (rpmts ts, QVA_t qva, const char **argv)
  hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?
Global rpmdbNew (const char *root, const char *home, int mode, int perms, int flags)
  document rpmdbNew
Global rpmdbOpenDatabase (const char *prefix, const char *dbpath, int _dbapi, rpmdb *dbp, int mode, int perms, int flags)
  document rpmdbOpenDatabase
Global rpmDefineMacro (MacroContext mc, const char *macro, int level)
  Document.
Global rpmdepFlags
  Move to rpmts.h.
Global rpmdepFlags
  Move to rpmts.h.
Global rpmdsLdconfig (rpmPRCO PRCO, const char *fn)
  Add dependency colors, and attach to file.
Global rpmfcPrint (const char *msg, rpmfc fc, FILE *fp)
  Remove debugging routine.
Global rpmgiLoadReadHeader (rpmgi gi)

  An empty file read as manifest truncates argv returning RPMRC_NOTFOUND.

  Errors, e.g. non-existent path in manifest, will terminate iteration.

  Chained manifests lose an arg someplace.

Global rpmgiOpen (const char *path, const char *fmode)
  There are two error messages printed on header, then manifest failures.
Global rpmInstallSourcePackage (rpmts ts, void *_fd, const char **specFilePtr, const char **cookie)
  Eliminate in rpm-5.1, insturment rpmtsRun() state machine instead.
Class rpmlead
  Don't use any information from lead.
Global rpmlogClose (void)
  Implement.
Global rpmlogOpen (const char *ident, int option, int facility)
  Implement.
Global rpmprobFilterFlags
  Generalize filter mechanism.
Global rpmprobFilterFlags
  Generalize filter mechanism.
Global rpmProblemGetStr (rpmProblem prob)
  needs a better name
Global rpmpsmStage (rpmpsm psm, pkgStage stage)
  Packages w/o files never get a callback, hence don't get displayed on install with -v.
Global rpmQueryFlags
  Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs?.
Global rpmQueryFlags
  Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs?.
Global rpmQVSources
  Reassign to tag values.
Global rpmQVSources
  Reassign to tag values.
Global rpmReadPackageFile (rpmts ts, FD_t fd, const char *fn, Header *hdrp)

  Implement disable/enable/warn/error/anal policy.

  The rpmts either needs to become void *, or changed to -lrpmdb scope.

Global rpmReadPackageManifest (FD_t fd, int *argcPtr, const char ***argvPtr)
  Infinite loops through manifest files exist, operator error for now.
Global rpmRollback (rpmts ts, QVA_t ia, const char **argv)
  Transaction handling, more, needs work.
Global rpmSetTables (int archTable, int osTable)
  Eliminate in rpm-5.1. #
Global rpmSetVerbosity (_lvl)
  These convenience macros belong somewhere else.
Global rpmShowProgress (const void *arg, const rpmCallbackType what, const rpmuint64_t amount, const rpmuint64_t total, fnpyKey key, void *data)
  Remove headerSprintf() from the progress callback.
Global rpmsqWaitUnregister (rpmsq sq)
  Rewrite to use waitpid on helper thread.
Global rpmtePkgFileSize (rpmte te)
  Signature header is estimated at 256b.
Global rpmtransFlags
  Move to rpmts.h.
Global rpmtransFlags
  Move to rpmts.h.
Global rpmts_AddErase (rpmtsObject *s, PyObject *args, PyObject *kwds)
  Permit finer control (i.e. not just –allmatches) of deleted elments.
Global rpmts_iternext (rpmtsObject *s)
  Add TR_ADDED filter to iterator.
Global rpmts_Next (rpmtsObject *s)
  Add TR_ADDED filter to iterator.
Global rpmtsiFi (const rpmtsi tsi)
  Take a rpmfi refcount here.
Global rpmUndefineMacro (MacroContext mc, const char *macro)
  Document.
Global rpmVerifyFile (const rpmts ts, const rpmfi fi, rpmVerifyAttrs *res, rpmVerifyAttrs omitMask)
  gnorpm and python bindings prevent this from being static.
Global rpmVerifyFlags
  Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs values?.
Global rpmVerifyFlags
  Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs values?.
Global rpmVerifyScript (QVA_t qva, rpmts ts, rpmfi fi, FD_t scriptFd)
  malloc/free/refcount handling is fishy here.
Global rpmVersionCompare (Header A, Header B)
  Eliminate in rpm-5.1.
Global showQueryPackage (QVA_t qva, rpmts ts, Header h)
  Devise a meaningful return code.
Global Symlink (const char *oldpath, const char *newpath)
  Implement remotely.
Global tagMacros []
  Should other macros be added from header when installing a package?
Global tagMacros []
  Should other macros be added from header when installing a package?
Global tagType (rpmTag tag)
  Return rpmTagType-like, not unsigned int. There's no clear typedef yet.
Global Utimes (const char *path, const struct timeval *times)
  Implement remotely.
Global xrealloc (void *ptr, size_t size)
  Annotate ptr with returned/out.
Global XurlNew (const char *msg, const char *fn, unsigned ln)
  Remove debugging entry from the ABI.