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

Global genCpioListAndHeader (FileList fl, TFI_t *cpioList, Header h, int isSrc)
  Should directories have doc/%config attributes? (#14531)

Global genCpioListAndHeader (FileList fl, TFI_t *cpioList, Header h, int isSrc)
  Remove RPMTAG_OLDFILENAMES, add dirname/basename instead.

Global domd5 (const char *fn, unsigned char *digest, int asAscii)
  Eliminate, use beecrypt instead.

Global rpmPackageGetEntry (void *leadp, Header sigs, Header h, int_32 tag, int_32 *type, void **p, int_32 *c)
  Eliminate from API.

Global cpio_doio (FD_t fdo, Header h, CSA_t csa, const char *fmodeMacro)
  Create transaction set *much* earlier.

Global doSetupMacro (Spec spec, char *line)
  FIXME: Option -q broken when not immediately after setup.

Global alSatisfiesDepend (const availableList al, const char *keyType, const char *keyDepend, const char *keyName, const char *keyEVR, int keyFlags)
  Eliminate.

Global unsatisfiedDepend (rpmTransactionSet ts, const char *keyType, const char *keyDepend, const char *keyName, const char *keyEVR, int keyFlags, struct availablePackage ***suggestion)
  Eliminate rpmrc provides.

Global getFilesystemList (void)
  determine rdonly for non-linux file systems.

Global dataLength (int_32 type, hPTR_t p, int_32 count, int onDisk)
  Remove sanity check exit's.

File header.h
  Document version2 headers.

Global rpmReadPackageManifest (FD_t fd, int *argcPtr, const char ***argvPtr)
  Infinite loops through manifest files exist, operator error for now.

Global mdbinfile (const char *fn, unsigned char *bindigest)
  Eliminate, use beecrypt instead.

Global mdfile (const char *fn, unsigned char *digest)
  Eliminate, use beecrypt instead.

Global rpmReadPackageInfo (FD_t fd, Header *sigp, Header *hdrp)
  Eliminate.

Global psmStage (PSM_t psm, pkgStage stage)
  Packages w/o files never get a callback, hence don't get displayed on install with -v.

Global rpmVerifyDigest (Header h)
  Make digest check part of rpmdb iterator.

Global rpmprobFilterFlags
  Generalize filter mechanism.

Global FA_SKIPMULTILIB
  state "multilib" ???.

Global rpmVerifyScript (const char *rootDir, Header h, FD_t scriptFd)
  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 (FD_t fd, int siglen, int pad, int datalen)
  rpmio: use fdSize rather than fstat(2) to get file size.

Global relocateFileList (const rpmTransactionSet ts, TFI_t fi, struct availablePackage *alp, Header origH, fileAction *actions)
  multilib file dispositions need to be checked.

Global rpmVerifyScript (const char *rootDir, Header h, FD_t scriptFd)
  gnorpm/kpackage prevents static, should be using VERIFY_SCRIPT flag.

Global fingerPrint
  Convert to pointer and make abstract.

Global dbiFindByLabel (dbiIndex dbi, void *dbcursor, const char *arg, dbiIndexSet *matches)
  Name must be an exact match, as name is a db key.

Global XrpmdbNextIterator (rpmdbMatchIterator mi, const char *f, unsigned int l)
  Remove debugging entry from the ABI.

Global expandMacro (MacroBuf mb)
  Dynamically reallocate target buffer.

Global expandMacros (void *spec, MacroContext mc, char *sbuf, size_t slen)
  Eliminate from API.

Global grabArgs (MacroBuf mb, const MacroEntry me, const char *se, char lastc)
  Use popt rather than getopt to parse args.

Global rpmDefineMacro (MacroContext mc, const char *macro, int level)
  Document.

File rpmerr.h
  Eliminate from API.

Global xrealloc (void *ptr, size_t size)
  Annotate ptr with returned/out.

File rpmmessages.h
  Eliminate from API.

Global pgpHashAlgo
  Add SHA256.

Global XurlFree (urlinfo u, const char *msg, const char *file, unsigned line)
  Remove debugging entry from the ABI.

Global XurlLink (urlinfo u, const char *msg, const char *file, unsigned line)
  Remove debugging entry from the ABI.

Global XurlNew (const char *msg, const char *file, unsigned line)
  Remove debugging entry from the ABI.

Global rpmQueryFlags
  Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs?.

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

Global showQueryPackage (QVA_t qva, rpmdb db, Header h)
  Devise a meaningful return code.

Global rpmQuery (QVA_t qva, rpmQVSources source, const char *arg)
  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 (const char *root, Header h, int filenum, rpmVerifyAttrs *result, rpmVerifyAttrs omitMask)
  gnorpm and python bindings prevent this from being static.

Global rpmInstallInterfaceFlags
  Move to rpmcli.h

Global rpmInstall (const char *rootdir, const char **fileArgv, rpmtransFlags transFlags, rpmInstallInterfaceFlags interfaceFlags, rpmprobFilterFlags probFilter, rpmRelocation *relocations)
  Generalize --freshen policies.

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

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 getUidS (const char *uname)
  Implement using hash.

Global getUname (uid_t uid)
  Implement using hash.

Global getUnameS (const char *uname)
  Implement using hash.

Global freeSpecVec )(Spec spec)
  Eliminate linkage loop into librpmbuild.a

Global parseSpecVec )(Spec *specp, const char *specFile, const char *rootdir, const char *buildRoot, int recursing, const char *passPhrase, char *cookie, int anyarch, int force)
  Eliminate linkage loop into librpmbuild.a

Global rpm_machtable_e
  Eliminate from API.

Global rpmGetVar (int var)
  Eliminate from API.

Global rpmSetVar (int var, const char *val)
  Eliminate from API.

Global rpmGetArchInfo (const char **name, int *num)
  Generalize to extract arch component from target_platform macro.

Global rpmGetOsInfo (const char **name, int *num)
  Generalize to extract os component from target_platform macro.

Global rpmMachineScore (int type, const char *name)
  Rewrite to use RE's against config.guess target platform output.

Global rpmSetTables (int archTable, int osTable)
  Eliminate from API. #

Global rpmSetMachine (const char *arch, const char *os)
  Eliminate from API.

Global rpmGetMachine (const char **arch, const char **os)
  Eliminate from API.

Global rpmFreeRpmrc (void)
  Eliminate from API.

Global RPMTRANS_FLAG_BUILD_PROBS
  Document.

Global RPMTRANS_FLAG_KEEPOBSOLETE
  Document.

Global RPMTRANS_FLAG_MULTILIB
  Document.

Global rpmtransGetKeys (const rpmTransactionSet ts, const void ***ep, int *nep)
  Removed packages have no keys, returned as interleaved NULL pointers.

Global rpmdbSetIteratorVersion (rpmdbMatchIterator mi, const char *version)
  Eliminate from API.

Global rpmdbSetIteratorRelease (rpmdbMatchIterator mi, const char *release)
  Eliminate from API.

Global HDRaddorappend )(Header h, int_32 tag, int_32 type, const void *p, int_32 c)
  Arg "p" should have const.

Global HDRsort )(Header h)
  Eliminate from API.

Global HDRunsort )(Header h)
  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 (const indexEntry entry, hTYP_t type, hPTR_t *p, hCNT_t c, int minMem)
  Permit retrieval of regions other than HEADER_IMUTABLE.

Global headerAddOrAppendEntry (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
  Arg "p" should have const.

Global headerAddOrAppendEntry (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
  Arg "p" should have const.

Global headerFreeData (const void *data, rpmTagType type)
  Remove from API.

Global expandRegular (FSM_t fsm)
  Legacy: support brokenEndian MD5 checks?

Global poptCallbackType )(poptContext con, enum poptCallbackReason reason, const struct poptOption *opt, const char *arg, const void *data)
  Document.

Global poptCallbackType )(poptContext con, enum poptCallbackReason reason, const struct poptOption *opt, const char *arg, const void *data)
  Document.

Global poptAddAlias (poptContext con, struct poptAlias alias, int flags)
  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.