- add %verify(nofiledigest) as %verify(nomd5) file attribute alias
- reference digests as digests not checksums
- make old md5 related symbols obsolete and use newer reference
- update man page accordingly
- most packages wont have file capabilities attached at all, and even
where present, the files with capabilities are likely to be few and
far in between, avoid wasting memory
- fsm in particular wants random access to rpmfi data and there's little
reason to deny it, file info data is not going to move to linked lists
or anything like that anytime soon, permitting indexed access allows
eliminating direct accesses to rpmfi struct
- few files are actually symlinks so this is very sparse data
- per-rpmfi instead of global as link target names are not that likely
to be shared across packages
- another few megs saved...
- there's only a very limited number of language names ever present,
and most files don't have languages attached at all
- another few megs saved on memory
- User and group names contain an enormous amount of redundancy: typically
most files and directories are owned by root:root. Store the each unique
name just once into global cache and store indexes to the cache into
rpmfi user + group arrays. This saves several megabytes of memory on
a transaction of non-trivial size...
- The cache implementation is dumb, but it's not noticeably slower than
uncached version, copying megs of strings around is not cheap either.
Easy enough to replace with a hash-table or such if performace becomes
and issue...
- lazy allocation on set, otherwise there's no replaced size - the getter
deals with this transparently
- saves a fair bit of memory, by no means everything has replaced files...
- it only ever returns NULLs because there are no security contexts in
headers (and having them in headers make no sense as the context varies
based on whatever selinux policy happens to be active on the target
system)
- instead of directly accessing the array from fsm, use a helper function
which lazily allocates the state array as needed and sets state
- also fixes the silly case of non-installed packages showing their files
as "normal", ie installed (now it shows "no state" as it's not relevant)
- avoids having to separately calculate in genCpioListAndHeader()
- avoids unnecessary fnlen field in rpmfi struct
- avoids having to calculate it at all if rpmfiFN() is never called
- they were only ever set on src.rpm installation yet overridden by
package contents unless src.rpm didn't contain RPMTAG_FILEUSERNAME
(and GROUP). Which would mean rpm 1.0 packages or thereabouts, or a
malformed package. In that case we just fall back to root uid,
it hardly matters
- the psm script machinery requires the full header to do anything at
all, so the script + scriptprog were only used to check if the package
*has* such scripts, a single integer will do just fine there thank you
- new rpmfiFCaps() API to retrieve the info from rpmfi set
- fsm internals quite similar to selinux handling
- plenty of #ifdef's, another possibility would be adding cap_foo dummies to
system.h like for selinux
- stick scareFlags into rpmfi_s for now so they're available everywhere
- subtle games with how fi->dil is alloced on scareMem behavior, don't
blow up and don't leak memory either
- stuff scareFlags into rpmfi struct for now
- cpio "new" ascii format limits individual files to UINT32_MAX, no such
limit on the entire archive though
- RPMSIGTAG_PAYLOADSIZE is 32bit type atm, assert that the archive size
fits to UINT32_MAX despite internal presentation being larger
- FD_t limits the real archive to rpm_off_t still
- only used in rpmfiNew() where it's converted to binary from the header
hex presentation and free'd immediately, a local variable will do just as
well
- some useless references in fsm and psm, kill'em too
- add rpmfiDigest() method (similar to one in rpm5.org) for retrieving
file digest, algorithm and digest size
- make rpmfiMD5() just a special case of rpmfiDigest()
- permits header.h to use the tag types
- revert other includes back to header.h, more crazy #include churn...
- rpmTagTable etc in header.h for now, don't really belong there but...
- typedef'ed as int32_t for now, negative values used in some places for
error cases
- easy to grep, easy to change...
- add RPMTAG_NOT_FOUND define, used in place of -1 "magic",
- typedef'ed as uint32_t as that's the key size limit imposed by BDB,
relevant for RPM_BIN_TYPE
- easy to change to whatever later on as it's now consistent everywhere