# 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 checkHardLinks
  Only lang coloring is checked, doc et al also need doing.

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

  Remove RPMTAG_OLDFILENAMES, add dirname/basename instead.

Global domd5
  Eliminate, use beecrypt instead.

Global rpmPackageGetEntry
  Eliminate from API.

Global cpio_doio
  Create transaction set *much* earlier.

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

Global alSatisfiesDepend
  Eliminate.

Global unsatisfiedDepend
  Eliminate rpmrc provides.

Global getFilesystemList
  determine rdonly for non-linux file systems.

Global dataLength
  Remove sanity check exit's.

File header.h
  Document version2 headers.

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

Global mdbinfile
  Eliminate, use beecrypt instead.

Global mdfile
  Eliminate, use beecrypt instead.

Global rpmReadPackageInfo
  Eliminate.

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

Global rpmVerifyDigest
  Make digest check part of rpmdb iterator.

Global rpmprobFilterFlags
  Generalize filter mechanism.

Global FA_SKIPMULTILIB
  state "multilib" ???.

Global rpmVerifyScript
  gnorpm/kpackage prevents static, should be using VERIFY_SCRIPT flag.

Global RPMFILE_DONOTUSE
  (unimplemented) from donotuse.

Global RPMFILE_SPECFILE
  (unnecessary) marks 1st file in srpm.

Global RPMSENSE_SERIAL
  Legacy.

Global RPMSENSE_PREREQ
  Legacy.

Global RPMSENSE_TRIGGERPREIN
  Implement triggerprein.

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

Global relocateFileList
  multilib file dispositions need to be checked.

Global rpmVerifyScript
  gnorpm/kpackage prevents static, should be using VERIFY_SCRIPT flag.

Global fingerPrint
  Convert to pointer and make abstract.

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

Global XrpmdbNextIterator
  Remove debugging entry from the ABI.

Global expandMacro
  Dynamically reallocate target buffer.

Global expandMacros
  Eliminate from API.

Global grabArgs
  Use popt rather than getopt to parse args.

Global rpmDefineMacro
  Document.

File rpmerr.h
  Eliminate from API.

Global xrealloc
  Annotate ptr with returned/out.

File rpmmessages.h
  Eliminate from API.

Global pgpHashAlgo
  Add SHA256.

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 rpmQueryFlags
  Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs?.

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

Global showQueryPackage
  Devise a meaningful return code.

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

Global rpmQVSources
  Move to rpmcli.h

Global rpmVerifyAttrs
  Move to rpmcli.h.

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

Global rpmInstallInterfaceFlags
  Move to rpmcli.h

Global rpmInstall
  Generalize --freshen policies.

Global transactionSetHeader
  Remove, there's no headerLink refcount on the pointer.

Global getGidS
  Implement using hash.

Global getGname
  Implement using hash.

Global getGnameS
  Implement using hash.

Global getUidS
  Implement using hash.

Global getUname
  Implement using hash.

Global getUnameS
  Implement using hash.

Global freeSpecVec
  Eliminate linkage loop into librpmbuild.a

Global parseSpecVec
  Eliminate linkage loop into librpmbuild.a

Global rpm_machtable_e
  Eliminate from API.

Global rpmGetVar
  Eliminate from API.

Global rpmSetVar
  Eliminate from API.

Global rpmGetArchInfo
  Generalize to extract arch component from target_platform macro.

Global rpmGetOsInfo
  Generalize to extract os component from target_platform macro.

Global rpmMachineScore
  Rewrite to use RE's against config.guess target platform output.

Global rpmSetTables
  Eliminate from API. #

Global rpmSetMachine
  Eliminate from API.

Global rpmGetMachine
  Eliminate from API.

Global rpmFreeRpmrc
  Eliminate from API.

Global RPMTRANS_FLAG_BUILD_PROBS
  Document.

Global RPMTRANS_FLAG_KEEPOBSOLETE
  Document.

Global RPMTRANS_FLAG_MULTILIB
  Document.

Global rpmtransGetKeys
  Removed packages have no keys, returned as interleaved NULL pointers.

Global rpmdbSetIteratorVersion
  Eliminate from API.

Global rpmdbSetIteratorRelease
  Eliminate from API.

Global HDRaddorappend
  Arg "p" should have const.

Global HDRsort
  Eliminate from API.

Global HDRunsort
  Eliminate from API.

Global RPM_BIN_ARRAY_TYPE
  Implement, kinda like RPM_STRING_ARRAY_TYPE for known (but variable) length binary data.

Global RPM_XREF_TYPE
  Implement, intent is to to carry a (???,tagNum,valNum) cross reference to retrieve data from other tags.

Global copyEntry
  Permit retrieval of regions other than HEADER_IMUTABLE.

Global headerAddOrAppendEntry
  Arg "p" should have const.

Global headerAddOrAppendEntry
  Arg "p" should have const.

Global headerFreeData
  Remove from API.

Global expandRegular
  Legacy: support brokenEndian MD5 checks?

Global poptCallbackType
  Document.

Global poptCallbackType
  Document.

Global poptAddAlias
  Pass alias by reference, not value.

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

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.