# Todo List

Class rpmlead
  Don't use any information from lead.

Class tagMacro
  Should other macros be added from header when installing a package?

File buildio.h
  Eliminate, merge into rpmlib.

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

  Remove RPMTAG_OLDFILENAMES, add dirname/basename instead.

Global cpio_doio
  Create transaction set *much* earlier.

Global doSetupMacro
  FIXME: Option -q broken when not immediately after setup.

Global getFilesystemList
  determine rdonly for non-linux file systems.

Global rpmReadPackageManifest
  Infinite loops through manifest files exist, operator error for now.

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

Global argerror
  (CLI embedding) Use rpmlog/rpmlog instead of fprintf, remove exit.

Global handleOneTrigger
  Trigger on any provides, not just package NVR.

Global rpmInstallSourcePackage
  Eliminate in rpm-5.1, insturment rpmtsRun() state machine instead.

Global rpmpsmStage
  Packages w/o files never get a callback, hence don't get displayed on install with -v.

Global rpmVersionCompare
  Eliminate in rpm-5.1.

Global XrpmpsmLink
  Remove debugging entry from the ABI.

Global XrpmpsmUnlink
  Remove debugging entry from the ABI.

Global rpmalSatisfiesDepend
  Eliminate.

Global readFile
  If the GPG key was known available, the md5 digest could be skipped.

Global XrpmdsLink
  Remove debugging entry from the ABI.

Global XrpmdsUnlink
  Remove debugging entry from the ABI.

Global rpmfcPrint
  Remove debugging routine.

Global relocateFileList
  multilib file dispositions need to be checked.

Global XrpmfiLink
  Remove debugging entry from the ABI.

Global XrpmfiUnlink
  Remove debugging entry from the ABI.

Global rpmgiLoadReadHeader
  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
  There are two error messages printed on header, then manifest failures.

Global XrpmgiLink
  Remove debugging entry from the ABI.

Global XrpmgiUnlink
  Remove debugging entry from the ABI.

Global printHash
  Unsnarl isatty(STDOUT_FILENO) from the control flow.

Global rpmProblemGetLong
  needs a better name

Global rpmProblemGetStr
  needs a better name

Global XrpmpsLink
  Remove debugging entry from the ABI.

Global XrpmpsUnlink
  Remove debugging entry from the ABI.

Global rpmprobFilterFlags_e
  Generalize filter mechanism.

Global XrpmsxLink
  Remove debugging entry from the ABI.

Global XrpmsxUnlink
  Remove debugging entry from the ABI.

Global XrpmtsLink
  Remove debugging entry from the ABI.

Global XrpmtsUnlink
  Remove debugging entry from the ABI.

Global rpmtsiFi
  Take a rpmfi refcount here.

Global rpmVerifyScript
  malloc/free/refcount handling is fishy here.

Global rpmts_iternext
  Add TR_ADDED filter to iterator.

Global rpmts_AddErase
  Permit finer control (i.e. not just --allmatches) of deleted elments.

Global rpmts_Next
  Add TR_ADDED filter to iterator.

Global fingerPrint
  Convert to pointer and make abstract.

Global armorFormat
  Permit selectable display formats (i.e. binary).

Global base64Format
  Permit selectable display formats (i.e. binary).

Global printSize
  rpmio: use fdSize rather than fstat(2) to get file size.

Global dbiFindByLabel
  Name must be an exact match, as name is a db key.

Global rpmdbNew
  document rpmdbNew

Global rpmdbOpenDatabase
  document rpmdbOpenDatabase

Global XrpmdbLink
  Remove debugging entry from the ABI.

Global XrpmdbUnlink
  Remove debugging entry from the ABI.

Global tagType
  Return rpmTagType-like, not unsigned int. There's no clear typedef yet.

Global expandMacro
  Dynamically reallocate target buffer.

Global expandMacros
  Eliminate from API.

Global grabArgs
  Use popt rather than getopt to parse args.

Global rpmDefineMacro
  Document.

Global rpmUndefineMacro
  Document.

Global rpmSetVerbosity
  These convenience macros belong somewhere else.

Global cvtfmode
  glibc also supports ",ccs="

Global Chroot
  Implement remotely.

Global Open
  Implement remotely.

Global Chown
  Implement remotely.

Global Lchown
  Implement remotely.

Global Chmod
  Implement remotely.

Global Mkfifo
  Implement remotely.

Global Mknod
  Implement remotely.

Global Utimes
  Implement remotely.

Global Symlink
  Implement remotely.

Global Readlink
  Implement remotely.

Global Access
  Implement remotely.

Global Lseek
  Implement SEEK_HOLE/SEEK_DATA.

Global rpmlogClose
  Implement.

Global rpmlogOpen
  Implement.

Global xrealloc
  Annotate ptr with returned/out.

Global XpgpDigLink
  Remove debugging entry from the ABI.

Global XpgpDigUnlink
  Remove debugging entry from the ABI.

Global rpmsqWaitUnregister
  Rewrite to use waitpid on helper thread.

Global XurlFree
  Remove debugging entry from the ABI.

Global XurlLink
  Remove debugging entry from the ABI.

Global XurlNew
  Remove debugging entry from the ABI.

Global rpmQVSources_e
  Reassign to tag values.

Global rpmQueryFlags_e
  Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs?.

Global rpmVerifyFlags_e
  Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs values?.

Global showQueryPackage
  Devise a meaningful return code.

Global rpmcliQuery
  hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?

Global rpmVerifyFile
  gnorpm and python bindings prevent this from being static.

Global rpmcliVerify
  hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?

Global rpmShowProgress
  Remove headerSprintf() from the progress callback.

Global rpmcliInstall
  Use rpmdsCompare rather than rpmVersionCompare.

Global rpmRollback
  Transaction handling, more, needs work.

Global rpmcliImportPubkey
  Implicit --update policy for gpg-pubkey headers.

Global rpmcliImportPubkeys
  Implicit --update policy for gpg-pubkey headers.

Global rpmtsImportPubkey
  Implicit --update policy for gpg-pubkey headers.

Global addChangelogEntry
  addChangelogEntry should be static.

Global getGidS
  Implement using hash.

Global getGname
  Implement using hash.

Global getGnameS
  Implement using hash.

Global getOutputFrom
  Use poll(2) rather than select(2), if available.

Global getUidS
  Implement using hash.

Global getUname
  Implement using hash.

Global getUnameS
  Implement using hash.

Global rpm_machtable_e
  Eliminate in rpm-5.1.

Global rpmSetTables
  Eliminate in rpm-5.1. #

Global rpmFreeRpmrc
  Eliminate in rpm-5.1. Destroy rpmrc arch/os compatibility tables.

  Eliminate from API.

Global rpmdepFlags_e
  Move to rpmts.h.

Global rpmtransFlags_e
  Move to rpmts.h.

Global RPMTRANS_FLAG_KEEPOBSOLETE
  Document.

Global rpmtePkgFileSize
  Signature header is estimated at 256b.

Global rpmdsLdconfig
  Add dependency colors, and attach to file.

Global copyEntry
  Permit retrieval of regions other than HEADER_IMUTABLE.

Global headerMergeLegacySigs
  Remove headerSort() through headerInitIterator() modifies sig.

Global headerRegenSigHeader
  Remove headerSort() through headerInitIterator() modifies h.

Global pgpHashAlgo_e
  Add SHA256.

Global pgpExtractPubkeyFingerprint
  V3 non-RSA public keys not implemented.

Global pgpHexStr
  Remove static buffer.

Global pgpMpiStr
  Remove static buffer.

Global pgpPubkeyFingerprint
  V3 non-RSA public keys not implemented.

Page Dependencies
  per-interpreter dependency generators are not located in subdirectories.

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.