Panu Matilainen [Thu, 12 Jun 2008 08:04:33 +0000 (11:04 +0300)]
Dumb thinko in header data allocation
Jindrich Novy [Wed, 11 Jun 2008 14:13:18 +0000 (16:13 +0200)]
Use rpm_loff_t in printFileInfo()
- and use snprintf
Panu Matilainen [Wed, 11 Jun 2008 09:26:52 +0000 (12:26 +0300)]
Add headerGet() flag to force allocation of returned data
- earlier there was no way for caller to know if returned data or parts
of it pointed to header memory (other than "know" how rpm behaves on
given types), this allows consistent behavior for callers (ie you
always "own" the returned data, not depending on header) when needed
- if HEADERGET_ALLOC flag is set, all returned data is malloced, instead
of possibly pointing to header memory depending on type
- HEADERGET_ALLOC overrides HEADERGET_MINMEM if both specified
- adjust various header internal callers to accept flags instead of just
minmem argument
- TODO: make sure tag extensions honor this too (all but fsnamesTag
currently allocate anyway)
Panu Matilainen [Wed, 11 Jun 2008 07:31:14 +0000 (10:31 +0300)]
Make rpmps generic number field 64bit, rename getter method
- rename the parameters + internal use to more generic "number"
- rename ugly and dumb rpmProblemGetLong() to rpmProblemGetDiskNeed()
and return rpm_loff_t
- the number field is used for some other purposes too (whether dep problem
is for installed package), work around this for now by just defining
rpmProblemGetDiskNeed() result value as undefined on non-disk related
problems ;)
Panu Matilainen [Wed, 11 Jun 2008 06:25:02 +0000 (09:25 +0300)]
Enable rpmDoDigest() to pass large file sizes
- should probably be off_t instead of rpm_loff_t as this is lowlevel io
business and only verification code cares about the size reported by
it, otoh forcing 64bit always avoids having to deal with variable
off_t type on printing.. shrug
Panu Matilainen [Tue, 10 Jun 2008 15:11:32 +0000 (18:11 +0300)]
Add new tag extension to retrieve filesizes as 64bit types
- convert old 32bit sizes to 64bit if large sizes aren't present in header
- if large sizes are present, we malloc + copy the result to have consistent
behavior for rpmfi
Panu Matilainen [Tue, 10 Jun 2008 13:00:33 +0000 (16:00 +0300)]
Minimally convert rpmfiBuildFNames() to new headerGet()
Panu Matilainen [Tue, 10 Jun 2008 12:05:31 +0000 (15:05 +0300)]
Callers are now well known, require non-NULL arguments
Jindrich Novy [Tue, 10 Jun 2008 13:33:24 +0000 (15:33 +0200)]
Add 64bit filesizes to header on build
Jindrich Novy [Tue, 10 Jun 2008 12:42:50 +0000 (14:42 +0200)]
rpmtsUpdateDSI now uses rpm_loff_t for fileSize
Jindrich Novy [Tue, 10 Jun 2008 12:41:10 +0000 (14:41 +0200)]
Use 64bit data types in diskspaceInfo_s
Jindrich Novy [Tue, 10 Jun 2008 12:37:52 +0000 (14:37 +0200)]
Create RPMTAG_LONGFILESIZES to hold 64bit filesizes
Panu Matilainen [Tue, 10 Jun 2008 11:36:12 +0000 (14:36 +0300)]
Eliminate rpmfiBuildFNames() from the API
- headerGet() with extensions enabled provides a nicer interface to
the data, no need to expose it
Panu Matilainen [Tue, 10 Jun 2008 11:31:43 +0000 (14:31 +0300)]
Eliminate rpmfiBuildFNames() use in psm
Panu Matilainen [Tue, 10 Jun 2008 11:29:30 +0000 (14:29 +0300)]
Add RPMTAG_ORIGFILENAMES tag extension
Panu Matilainen [Tue, 10 Jun 2008 11:24:57 +0000 (14:24 +0300)]
Eliminate rpmfiBuildFNames() use in python
Panu Matilainen [Tue, 10 Jun 2008 10:40:51 +0000 (13:40 +0300)]
Use rpmFileHasSuffix() instead of doing it manually
Panu Matilainen [Tue, 10 Jun 2008 10:35:20 +0000 (13:35 +0300)]
Convert psm rpmInstallSourcePackage() to new headerGet()
Panu Matilainen [Tue, 10 Jun 2008 10:08:11 +0000 (13:08 +0300)]
Convert psm markReplacedFiles() to new headerGet() interface
Panu Matilainen [Tue, 10 Jun 2008 07:04:52 +0000 (10:04 +0300)]
fwrite() returns size_t, use correct type
Panu Matilainen [Tue, 10 Jun 2008 07:02:52 +0000 (10:02 +0300)]
Use correct type for strlen()
Panu Matilainen [Tue, 10 Jun 2008 06:59:09 +0000 (09:59 +0300)]
Silly signedness mismatch in pgpMpiSet()
Panu Matilainen [Tue, 10 Jun 2008 06:54:51 +0000 (09:54 +0300)]
Use nlink_t for hardlink count types
- avoids some signed vs unsigned comparisons
Panu Matilainen [Mon, 9 Jun 2008 16:00:37 +0000 (19:00 +0300)]
Change tag extension returns codes to match headerGet()
Panu Matilainen [Mon, 9 Jun 2008 12:42:24 +0000 (15:42 +0300)]
FD_t contentLength field is useless for us too...
Panu Matilainen [Mon, 9 Jun 2008 12:38:28 +0000 (15:38 +0300)]
Lose bunch of unused fields from FD_t
- leftovers from times of internal http/dav etc transports..
Panu Matilainen [Mon, 9 Jun 2008 12:33:27 +0000 (15:33 +0300)]
Use 64bit type for fdSet/GetCpioPos() in rpmio
Panu Matilainen [Mon, 9 Jun 2008 09:58:43 +0000 (12:58 +0300)]
Use 64bit type internally for printing size when reading sig header
Panu Matilainen [Mon, 9 Jun 2008 09:48:34 +0000 (12:48 +0300)]
Use 64bit type for rpmte package size reporting
- RPMTAG_SIGSIZE limits to 32bit in practise currently
Panu Matilainen [Mon, 9 Jun 2008 09:36:19 +0000 (12:36 +0300)]
Use 64bit type internally for total file size counting in build
- ensure we don't overflow RPMTAG_SIZE which is 32bit for now
Panu Matilainen [Mon, 9 Jun 2008 09:29:07 +0000 (12:29 +0300)]
Use 64bit type internally for package archive size & offset
- 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
Panu Matilainen [Mon, 9 Jun 2008 09:00:12 +0000 (12:00 +0300)]
Use rpm_loff_t for transaction callback amount+total arguments
- ought to be safe as data is only ever automatically converted to larger
type on notify calls
Panu Matilainen [Mon, 9 Jun 2008 06:31:00 +0000 (09:31 +0300)]
Handle NULL in str2hge()
- at least apt-rpm expects to pass empty version as NULL to rpmdsSingle(),
don't blow up...
Panu Matilainen [Sat, 7 Jun 2008 10:17:52 +0000 (13:17 +0300)]
rpmtdCount() knows how to handle BIN types, use it..
Panu Matilainen [Sat, 7 Jun 2008 08:43:54 +0000 (11:43 +0300)]
Couple of more 64bit format types
Panu Matilainen [Sat, 7 Jun 2008 08:32:02 +0000 (11:32 +0300)]
Remove unused variable
Panu Matilainen [Sat, 7 Jun 2008 08:31:32 +0000 (11:31 +0300)]
Handle 64bit type in headerMergeLegacySigs()
- not that any legacy tags have 64bit type but shuts up gcc..
Panu Matilainen [Sat, 7 Jun 2008 08:29:16 +0000 (11:29 +0300)]
Use inttypes.h formats in stringFormat()
- add 64bit type while at it
Panu Matilainen [Sat, 7 Jun 2008 07:51:53 +0000 (10:51 +0300)]
Teach rpmdb about 64bit types
Panu Matilainen [Fri, 6 Jun 2008 20:47:37 +0000 (23:47 +0300)]
Add access methods for 64bit integer types to rpmtd
Panu Matilainen [Fri, 6 Jun 2008 15:53:44 +0000 (18:53 +0300)]
Fix typo in sqlite backend preventing it from building
Jindrich Novy [Fri, 6 Jun 2008 13:15:01 +0000 (15:15 +0200)]
Introduce 64bit rpm_loff_t
Jindrich Novy [Fri, 6 Jun 2008 13:10:57 +0000 (15:10 +0200)]
Teach sqlite backend 64bit handling
Jindrich Novy [Fri, 6 Jun 2008 13:04:25 +0000 (15:04 +0200)]
Handle RPM_INT64_TYPE in header functions
Jindrich Novy [Fri, 6 Jun 2008 13:03:19 +0000 (15:03 +0200)]
Introduce htonll()
Jindrich Novy [Fri, 6 Jun 2008 12:57:05 +0000 (14:57 +0200)]
Introduce RPM_INT64_TYPE
Panu Matilainen [Tue, 3 Jun 2008 11:26:34 +0000 (14:26 +0300)]
Unexport file state machine internals
- fsmGetTs(), fsmGetFi(), fileStageString(), fileActionString(),
fsmMapPath(), fsmMapAttrs() and fsmStage() aren't needed outside fsm,
make 'em static to avoid leaking to symbol space
Panu Matilainen [Tue, 3 Jun 2008 10:51:57 +0000 (13:51 +0300)]
Rip doputenv() for good
Panu Matilainen [Tue, 3 Jun 2008 10:48:57 +0000 (13:48 +0300)]
Use setenv() for preparing scriptlet environ
- setenv() allocates memory as needed, no need to leak it
- setenv() is nicer interface for the purpose anyway
Panu Matilainen [Tue, 3 Jun 2008 10:39:07 +0000 (13:39 +0300)]
Rip dosetenv()
- just use regular setenv() instead
- we already carry setenv() in misc/ for platforms that don't have it
Panu Matilainen [Tue, 3 Jun 2008 09:11:05 +0000 (12:11 +0300)]
Unexport rpmsqCaught now that nothing needs it
Panu Matilainen [Tue, 3 Jun 2008 09:10:02 +0000 (12:10 +0300)]
Use rpmsqIsCaught() instead of directly accessing rpmsqCaught sigset
Panu Matilainen [Tue, 3 Jun 2008 09:04:57 +0000 (12:04 +0300)]
Add rpmsqIsCaught() for testing if a signal has been caught
Panu Matilainen [Tue, 3 Jun 2008 08:44:20 +0000 (11:44 +0300)]
Unexpose signal queue and direct manipulation functions
- nothing outside rpmsq needs to fiddle with the queue directly
Panu Matilainen [Tue, 3 Jun 2008 06:09:00 +0000 (09:09 +0300)]
Don't leak memory on python fi.Digest() calls
Panu Matilainen [Mon, 2 Jun 2008 13:10:19 +0000 (16:10 +0300)]
Change rpmTagGetNames() interface to more like that of headerGet()
- instead of returning a newly allocated rpmtd, take container to use
as argument
- return number of tags found, 0 on error (pretty arbitrary, just to
return something...)
Panu Matilainen [Mon, 2 Jun 2008 10:05:46 +0000 (13:05 +0300)]
Remove bogus comment on rpmDoDigest() ignoring algorithm
Panu Matilainen [Mon, 2 Jun 2008 10:02:54 +0000 (13:02 +0300)]
Permit non-md5 digests on --fileid queries
- the used algorithm is not known at this point so we can only do some
"seems to be in the ballbark" checks on the digest
- dynamically allocate memory for binary conversion as needed
Panu Matilainen [Mon, 2 Jun 2008 09:20:22 +0000 (12:20 +0300)]
Check that digest type is actually supported before enabling it
- we don't necessarily support all types listed in pgpHashAlgo_e, it
depends on what NSS happens to support
Panu Matilainen [Mon, 2 Jun 2008 09:18:23 +0000 (12:18 +0300)]
Enable build-time configuration of non-MD5 file checksum digest algorithms
- if not specified (or 0), quietly assume MD5
- otherwise check for supported digest type, complain and fall back to
md5 on invalid
- if non-md5 algorithm is used, add rpmlib() feature dependency to package
Panu Matilainen [Mon, 2 Jun 2008 08:48:22 +0000 (11:48 +0300)]
Document rpmDigestLength() error behavior
Panu Matilainen [Mon, 2 Jun 2008 07:53:38 +0000 (10:53 +0300)]
Eliminate ugly static conversion buffer on rpmdbAdd/Remove
- dynamically allocate on heap when hex to binary conversion is done,
add new parameter to td2key() to communicate this back to caller
- adjust rpmdbAdd+Remove to free key data if signalled by td2key()
Panu Matilainen [Fri, 30 May 2008 11:45:13 +0000 (14:45 +0300)]
Make rpmfiNew() use header specified file digest algo if present
- if not present or unknown algorithm specified, fall back to md5
Panu Matilainen [Fri, 30 May 2008 11:14:17 +0000 (14:14 +0300)]
Use RPMTAG_FILEDIGESTS instead of MD5S internally
- no functional changes
Panu Matilainen [Fri, 30 May 2008 10:57:47 +0000 (13:57 +0300)]
Bring back RPMTAG_FILEDIGESTS now that we're a bit more ready for it
- this reverts commit
6db2a8ec03c057850a0349537c705556068b9d32.
Panu Matilainen [Fri, 30 May 2008 10:16:23 +0000 (13:16 +0300)]
We don't want per-file digest algorithms, just per package...
- rename RPMTAG_FILEDIGESTALGOS to RPMTAG_FILEDIGESTALGO
- change type from integer array to single integer value
Panu Matilainen [Fri, 30 May 2008 09:28:29 +0000 (12:28 +0300)]
rpmfiFDigestHex() instead of manual hex conversion
- showQueryPackage() and python rpmfi_Digest() at least..
Panu Matilainen [Fri, 30 May 2008 09:21:48 +0000 (12:21 +0300)]
Add rpmfiFDigestHex() for converting the binary digest to hex
- conversion (back to) hex presentation is done manually in several places,
might as well have a function to do it...
Panu Matilainen [Fri, 30 May 2008 09:11:16 +0000 (12:11 +0300)]
Mark rpmfiMD5() deprecated
Panu Matilainen [Fri, 30 May 2008 09:06:40 +0000 (12:06 +0300)]
On a second thought, rename rpmfiDigest() to rpmfiFDigest() for consistency
- it operates on current file of the set, not on the entire set so while
changing API, name it similarly to other things that operate on current file
Panu Matilainen [Fri, 30 May 2008 09:02:21 +0000 (12:02 +0300)]
Add fi.Digest() method to python bindings
- use same code for creating the digest object on iteration and method call
- fi.MD5() left around as alias for fi.Digest(), dunno if that's the best
thing to do but it's just a python string so returned size isn't that
critical..
Panu Matilainen [Fri, 30 May 2008 06:22:21 +0000 (09:22 +0300)]
Convert showQueryPackage() to use rpmfiDigest()
Panu Matilainen [Thu, 29 May 2008 17:41:21 +0000 (20:41 +0300)]
Make rpmVerifyFile() honor rpmfi digest algorithm
Panu Matilainen [Thu, 29 May 2008 13:39:11 +0000 (16:39 +0300)]
Use new style headerGet() + rpmtd iteration for rpmfi digest population
Panu Matilainen [Thu, 29 May 2008 13:26:21 +0000 (16:26 +0300)]
Lose unused fdigests array from rpmfi struct
- 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
Panu Matilainen [Thu, 29 May 2008 12:48:40 +0000 (15:48 +0300)]
Make handleOverlappedFiles() honor rpmfi digest algorithm
Panu Matilainen [Thu, 29 May 2008 12:33:44 +0000 (15:33 +0300)]
Teach fsm internals to honor rpmfi digest type
Panu Matilainen [Thu, 29 May 2008 12:26:12 +0000 (15:26 +0300)]
Make rpmfiDecideFate() honor rpmfi digest algorithms
- this gets into trouble if digest algorithm differs between packages,
can't be helped (same is true of rpmfiCompare() too)
Panu Matilainen [Thu, 29 May 2008 12:20:05 +0000 (15:20 +0300)]
Make rpmfiConfigConflict() honor fi digest algorithm
Panu Matilainen [Thu, 29 May 2008 12:16:45 +0000 (15:16 +0300)]
Make rpmfiCompare() use rpmfiDigest() instead of rpmfiMD5()
Panu Matilainen [Thu, 29 May 2008 12:09:58 +0000 (15:09 +0300)]
Make rpmfi initialization honor used digest length
Panu Matilainen [Thu, 29 May 2008 12:04:46 +0000 (15:04 +0300)]
More preliminaries for non-md5 file checksums
- 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()
Panu Matilainen [Thu, 29 May 2008 09:29:23 +0000 (12:29 +0300)]
Rename rpmfi internals to talk about digest rather than md5
- no functional changes
Panu Matilainen [Thu, 29 May 2008 08:48:00 +0000 (11:48 +0300)]
Rename rpmfi and fsm checksum md5-sum fields to refer to digest
- no functional changes
- groundwork for supporting other than md5 checksums
Panu Matilainen [Mon, 2 Jun 2008 06:48:41 +0000 (09:48 +0300)]
Unbreak handling of packages without epoch
- rpmtdToString() returned NULL on empty data, rpmtdFormat() returns
(unknown type) which isn't exactly appropriate value for epoch...
Panu Matilainen [Sat, 31 May 2008 10:28:05 +0000 (13:28 +0300)]
More generic iterators replaced with safer string iterators
- additionally ensure rasprintf() will never get passed NULL where string
is expected in doScriptExec()
Panu Matilainen [Sat, 31 May 2008 10:20:21 +0000 (13:20 +0300)]
Use safer per-datatype iterator instead of generic one
Panu Matilainen [Sat, 31 May 2008 10:18:19 +0000 (13:18 +0300)]
Replace couple of generic td iterators with safer string iteration
Jindrich Novy [Thu, 29 May 2008 07:48:16 +0000 (09:48 +0200)]
Make Group: tag not mandatory in spec
Panu Matilainen [Wed, 28 May 2008 06:53:30 +0000 (09:53 +0300)]
Move key size fixups from rpmdbAdd & Remove to td2key()
Panu Matilainen [Wed, 28 May 2008 06:42:31 +0000 (09:42 +0300)]
Don't bother with rpmtdInit(), headerGet() resets index anyway
Panu Matilainen [Wed, 28 May 2008 06:41:34 +0000 (09:41 +0300)]
Eliminate ill-indented block obfuscating the code
Panu Matilainen [Wed, 28 May 2008 06:35:13 +0000 (09:35 +0300)]
Unify rpmdbAdd() and rpmdbRemove() debug logging
- move the debugging out of the loop, we only print once for a given tag
anyway
- dumb helper function for prepping the actual output
Panu Matilainen [Wed, 28 May 2008 06:04:31 +0000 (09:04 +0300)]
Unify rpmdbAdd() and rpmdbRemove() tag data to key "conversion"
- the tag container contains everything needed for converting
- ugly static buffer for holding data from binary conversions needed,
figure a better way...
Panu Matilainen [Wed, 28 May 2008 05:20:19 +0000 (08:20 +0300)]
dbi->dbi_rpmtag had better be the same as rpmtag here...
Panu Matilainen [Wed, 28 May 2008 04:52:19 +0000 (07:52 +0300)]
Convert rpmdbAdd() to new headerGet() + friends
Panu Matilainen [Tue, 27 May 2008 18:49:02 +0000 (21:49 +0300)]
Remove RPMTAG_BASENAMES special casing from rpmdbAdd()
- no longer needed as we don't support uncompressed filelists in the db
anyway (commit
30bb2ba4c8e481dd1c18e6ce8cd6c563fb42e23b)
Panu Matilainen [Tue, 27 May 2008 18:33:28 +0000 (21:33 +0300)]
Eliminate ill-indented block obfuscating the code
Panu Matilainen [Tue, 27 May 2008 18:27:20 +0000 (21:27 +0300)]
Convert rpmdbRemoev() to take advantage of new interfaces
- use headerGet() and rpmtd iterator on the result
- eliminates breaking out of loop kludgery
- allows all filemd5s fiddling to be done in one spot
Panu Matilainen [Tue, 27 May 2008 17:16:17 +0000 (20:16 +0300)]
Turn silly one-case switches into if's