Panu Matilainen [Thu, 9 Jun 2011 08:32:39 +0000 (11:32 +0300)]
If key not specified, use DB_NEXT cursor mode (DB_SET wouldn't make sense)
Panu Matilainen [Thu, 9 Jun 2011 08:26:32 +0000 (11:26 +0300)]
Only honor keylen if keyp is also specified
Panu Matilainen [Thu, 9 Jun 2011 08:07:21 +0000 (11:07 +0300)]
Make it an error to call dbiGetToSet() with NULL keyp
- All current callers always supply non-NULL keyp, and requiring
this gives useful possibilities elsewhere
Panu Matilainen [Wed, 8 Jun 2011 16:01:13 +0000 (19:01 +0300)]
Move the remaining DBT's in rpmdbInitIterator() to (more) local scope
Panu Matilainen [Wed, 8 Jun 2011 15:59:20 +0000 (18:59 +0300)]
Error/notfound case is handled the same for both these cases
Panu Matilainen [Wed, 8 Jun 2011 15:52:30 +0000 (18:52 +0300)]
Take advantage of dbiCursorGetToSet() in dbiFindByLabel() & friends
- Reduces the number of arguments to somewhat saner level and
eliminates another reincarnation of the dbt2set() + error handling
code littered all over the place.
Panu Matilainen [Wed, 8 Jun 2011 15:46:45 +0000 (18:46 +0300)]
Split actual cursor get + set-conversion to separate function
- Allows multiple retrieves on a single cursor instance, dbiGetToSet()
is just a convenience wrapper around dbiCursorGetToSet() now.
- Creating and tearing down cursors isn't exactly terrifyingly
expensive but still measurable when lots of lookups are done.
Panu Matilainen [Wed, 8 Jun 2011 15:44:39 +0000 (18:44 +0300)]
Add cursor method for retrieving the underlying db index handle
Panu Matilainen [Wed, 8 Jun 2011 11:53:36 +0000 (14:53 +0300)]
Add tests for the most common nvra query combinations
Panu Matilainen [Wed, 8 Jun 2011 10:33:41 +0000 (13:33 +0300)]
Use dbiGetToSet() in rpmdbFindByFile(), lose now unnecessary arguments
Panu Matilainen [Wed, 8 Jun 2011 10:27:35 +0000 (13:27 +0300)]
Use dbiGetToSet() for the common case in rpmdbInitIterator()
Panu Matilainen [Wed, 8 Jun 2011 10:15:02 +0000 (13:15 +0300)]
Simplify + cleanup rpmdbExtendIterator()
- Use the new dbiGetToSet() for doing the actual work, reducing
fluff considerably
- Don't bother checking for NULLs where the lower levels do it
already (mi and keyp NULL-checks are necessary here though)
Panu Matilainen [Wed, 8 Jun 2011 10:02:28 +0000 (13:02 +0300)]
Simplify + cleanup rpmdbCountPackages()
- Use the new dbiGetToSet() for doing the actual work, reducing
fluff considerably
- Dont bother checking for NULL db, rpmdbOpenIndex() does this anyway
- Return an error, not 0 (ie "not found") for NULL db and name
- Remove redundant dbtag variable, this is always RPMDBI_NAME
Panu Matilainen [Wed, 8 Jun 2011 09:52:12 +0000 (12:52 +0300)]
Add a helper function to convert cursor retrievals to dbiIndexSets
- This stuff is repeated in rpmdb.c all over the place, to some
this suggests making it into a function:
- Hide the DBTs inside the function
- Handle keylen fixups, set conversions and error logging centrally
Panu Matilainen [Wed, 8 Jun 2011 09:32:48 +0000 (12:32 +0300)]
Rename dbiFreeIndexSet() to dbiIndexSetFree() for naming style consistency
Panu Matilainen [Wed, 8 Jun 2011 08:57:14 +0000 (11:57 +0300)]
Minor cleanup to rpmdbFindByFile()
- Pass the dbi we already opened in rpmdbInitIterator() as argument
instead of unnecessarily reopening in rpmdbFindByFile()
- Adjust the argument order to match that of dbiFindByLabel()
for consistency
- Remove redundant error code assignment, we are already assuming error
Panu Matilainen [Wed, 8 Jun 2011 08:48:37 +0000 (11:48 +0300)]
Push cursor init+free down to dbiFindByLabel()
- The cursor is fully local to dbiFindByLabel() so there's no
point passing it as an argument
Panu Matilainen [Wed, 8 Jun 2011 08:00:40 +0000 (11:00 +0300)]
Handle EINTR on the spot instead of restarting the entire loop
- The previous code was violating the "golden rules of select()" by
possibly skipping processing of fd's that were included in the
select() set. Also restarting the entire loop should not be
necessary in case of EINTR select(), our conditions do not change
in that situation.
Panu Matilainen [Wed, 8 Jun 2011 07:06:15 +0000 (10:06 +0300)]
Kick out self-pipe trick from depgen helper
- As we're not actually /doing/ anything with signals here, the self-pipe
is not needed: select() will get interrupted and re-evaluated when the
child exits so we can't get stuck there.
- Free "I spotted a classic dailywtf overcomplication" t-shirt goes to
Michael Schroeder for pointing this out.
Panu Matilainen [Wed, 8 Jun 2011 07:01:14 +0000 (10:01 +0300)]
Abort depgen output reading on EOF, not child exiting
- There could, at least in theory, still be data to read after
we receive SIGCHLD. Stop the loop on EOF on read instead.
Thanks to Michael Schroeder for pointing this out.
Panu Matilainen [Mon, 6 Jun 2011 10:10:32 +0000 (13:10 +0300)]
Return explicit NULL from dbiFreeIndexSet()
- Explicit NULL is much more obvious here, also eliminate the (now)
dead NULL-assignments and add a trash-n-burn memset() just in case
Panu Matilainen [Mon, 6 Jun 2011 10:09:15 +0000 (13:09 +0300)]
Cosmetics: function blocks start on a new line
Panu Matilainen [Wed, 1 Jun 2011 10:29:03 +0000 (13:29 +0300)]
Lift Dijkstra algorithm out of collectSCC() to separate function
- This splits outs nicely, moving queue allocation into separate
scope and making collectSCC() less of an heavy-weight.
No functional changes.
Panu Matilainen [Wed, 1 Jun 2011 09:40:55 +0000 (12:40 +0300)]
Eliminate struct copy in collectSCC(), use a pointer instead
- collectSCC() doesn't actually modify the SCC struct it looks at
so operating on a copy is harmless, but using a (const) pointer
to the original makes the idea more clear (we're not modifying
the scc struct here, only its members)
Panu Matilainen [Wed, 1 Jun 2011 08:31:55 +0000 (11:31 +0300)]
Clean up + simplify pgpsigFormat()
- Don't do manually what the computer can do for you, let rasprintf()
calculate the string sizes
- Handle possible date conversion errors: if we can't format the
date correctly then at least show the integer value along with
a complaint
Panu Matilainen [Wed, 1 Jun 2011 07:00:04 +0000 (10:00 +0300)]
Split the --replacepkgs hack to a helper function and document it
- Makes the huge rpmpsmStage() that little bit smaller, this
special-case code does not belong inline there. Also gets rid
of couple of dead assignments and unnecessary variable.
- Don't bother unless RPMPROB_FILTER_REPLACEPKG is set, it's not
terribly expensive but its also wholly unnecessary in the normal case
- Document how the dang thing "works"
Panu Matilainen [Wed, 1 Jun 2011 06:35:47 +0000 (09:35 +0300)]
Make test-case for --replacepkgs stricter
- Actually verify we got the expected result, ie exactly one instance
of the pkg installed after successful reinstall.
Panu Matilainen [Wed, 1 Jun 2011 06:01:24 +0000 (09:01 +0300)]
Reset cli configured flag on rpmcliFini() (RhBug:709421)
Panu Matilainen [Tue, 31 May 2011 12:32:44 +0000 (15:32 +0300)]
Cleanup rpmpsmNew() and rpmpsmFree()
- Remove redundant checks and other fluff, including dead
NULL-assignments on free
Panu Matilainen [Tue, 31 May 2011 09:43:15 +0000 (12:43 +0300)]
Remove reamining dead assignments from rpmtsiFree() in transaction code
- Not all of these are at the end of local scope and in many cases
the iterator pointer is reused, but the logic in all these is
straightforward enough (no jumps etc) that there's no much
chance of mistakenly using already freed iterator.
Panu Matilainen [Tue, 31 May 2011 09:35:18 +0000 (12:35 +0300)]
Remove dead NULL-assignment before reassign
Panu Matilainen [Tue, 31 May 2011 09:27:58 +0000 (12:27 +0300)]
Remove superfluous localtime() call
- The tm pointer is reset to localtime(&when) before accessed,
this is nothing but a dead call and assignment
Panu Matilainen [Tue, 31 May 2011 08:57:45 +0000 (11:57 +0300)]
Remove dead keyp & keylen assignments in rpmdbNextIterator()
- Both get assigned to their values earlier in the loop and neither
is used beyond this point in the loop .. so these are useless.
Panu Matilainen [Tue, 31 May 2011 08:38:38 +0000 (11:38 +0300)]
Clean up + clarify popMacro() a bit
- Actually protect against NULL mep (shouldn't happen but...)
- Remove bogus comment + add actually relevant comments
- Make the *mep reassignment more obvious by taking it out of
the if where its easily missed
- Replace dead NULL-assignments with a trash-n-burn memset()
- Fixup indentation to match general rpm style
Panu Matilainen [Tue, 31 May 2011 07:38:17 +0000 (10:38 +0300)]
Use popMacro() when freeing the entire macro table
- We already have a function to free macro entries, use it to
remove code duplication
Panu Matilainen [Tue, 31 May 2011 06:02:29 +0000 (09:02 +0300)]
Pass dbiClose() flags down to db->close()
- BDB of old might not have taken flags there but current ones
do accept DB_NOSYNC to be specified (not that we use it but...)
- As a side-effect this eliminates another dead assignment
Panu Matilainen [Tue, 31 May 2011 05:59:21 +0000 (08:59 +0300)]
Return an explicit NULL from dbiFree(), remove dead assignment
Panu Matilainen [Tue, 31 May 2011 05:38:09 +0000 (08:38 +0300)]
Remove bogus condition on provide checking in query
- RPMQV_WHATPROVIDES only falls through to RPMQV_PATH on absolute
paths, so the only place checking for provides_checked value would
never be reached in the case it was set.
- Add a comment about the fallthrough case
Panu Matilainen [Mon, 30 May 2011 14:13:51 +0000 (17:13 +0300)]
Eliminate dead NULL-assignment by avoiding unnecessary allocation
- cpioHeaderRead() only needs to alloc after successfully reading
the next filename from the cpio header, delay alloc until
we know the read was successful.
Panu Matilainen [Mon, 30 May 2011 12:54:16 +0000 (15:54 +0300)]
Fix a logic error leading to unlink(NULL) call, oops.
- If writing the scriptlet to a file fails, its possible to
end up with non-NULL script but with NULL fn and kaboom in unlink()
Panu Matilainen [Mon, 30 May 2011 12:50:29 +0000 (15:50 +0300)]
Eliminate bunch of dead assignments on ts vsflags
- The common pattern here is grabbing current flags to a local
variable, modifying them for an operation and then restoring,
which is fine... but we dont care about the previous flags
when we're restoring them.
Panu Matilainen [Mon, 30 May 2011 09:38:13 +0000 (12:38 +0300)]
Eliminate dead assignment(s) on rpmfsFree(), memset() wipeout instead
Panu Matilainen [Mon, 30 May 2011 09:37:06 +0000 (12:37 +0300)]
rpmgiFree() cleanup to remove an exit point and dead assignment(s)
Panu Matilainen [Mon, 30 May 2011 09:25:04 +0000 (12:25 +0300)]
Remove trailing dead NULL-assignments from sepoltransFree()
- Replace assignments with a memset() to blast away the contents instead,
taking care of other members too
Panu Matilainen [Mon, 30 May 2011 09:12:24 +0000 (12:12 +0300)]
Minor cleanups to sepolLoadPolicies() in sepolicy plugin
- Having an err label which we fall through on success too seems
a bit funny, rename the label to exit
- Initialize the sepoltrans at declaration already
- Remove redundant RPMRC_FAIL assignment on sepoltransNew() fail
case, this already assumes failure
- Remove redundant jump to exit from sepoltransCommit() error
- Eliminate trailing dead NULL assignment of the local pt variable
Panu Matilainen [Mon, 30 May 2011 09:04:18 +0000 (12:04 +0300)]
Return explicit NULL on sepoltransNew() failure
Panu Matilainen [Mon, 30 May 2011 08:45:41 +0000 (11:45 +0300)]
Remove possibility of abusing freed iterator by moving to local scope
- Eliminates another dead NULL-assignment + makes it "safer"
Panu Matilainen [Mon, 30 May 2011 08:25:51 +0000 (11:25 +0300)]
Eliminate obvious dead NULL-assignment at headerLoad() error exit
Panu Matilainen [Mon, 30 May 2011 08:22:30 +0000 (11:22 +0300)]
Eliminate dead NULL-assignment on lua scriptlet execution
- alloc the luavar on entry, free on exit to remove any abuse
possibilities
Panu Matilainen [Mon, 30 May 2011 08:00:31 +0000 (11:00 +0300)]
Eliminate a few dead NULL-assignment eliminations in rpmgraph
- There are more but leaving the rest as a reminder to clean
up rpmGraph() someday when bored enough...
Panu Matilainen [Mon, 30 May 2011 07:44:43 +0000 (10:44 +0300)]
Spring-cleaning for rpmdeps
- Depgen helpers take nno args, their input comes from stdin. Eliminates
popt vs ARGV_t mismatch which would've caused us to blow up if
it weren't for a memleak on the generated argv.
- Another memleak on the file classifier in case rpmfcClassify()
or rpmfcApply() fails - just free all allocated resources at exit.
- Remove fluff: fgets() is guaranteed to \0-terminate non-NULL returns,
eliminate unused/useless variables
- Fixup indentation where busted
Panu Matilainen [Mon, 30 May 2011 06:36:03 +0000 (09:36 +0300)]
Eliminate dead NULL-assignments at scope-end in main cli utils
Panu Matilainen [Sun, 29 May 2011 10:10:42 +0000 (13:10 +0300)]
A few more dead NULL-assignment eliminations in low-level header code
Panu Matilainen [Sun, 29 May 2011 09:03:56 +0000 (12:03 +0300)]
Move db cursor to local scopes, remove dead NULL-assignments
Panu Matilainen [Sun, 29 May 2011 08:52:17 +0000 (11:52 +0300)]
Eliminate dead NULL-assignments at scope-end in librpmsign
Panu Matilainen [Sat, 28 May 2011 19:30:41 +0000 (22:30 +0300)]
Eliminate dead NULL-assignments at scope-end in librpm, part VI
- Remove NULL-assignments of local variables at the end of scope
in "cli-level" code
Panu Matilainen [Sat, 28 May 2011 19:29:58 +0000 (22:29 +0300)]
Eliminate dead NULL-assignments at scope-end in librpm, part V
- Remove NULL-assignments of local variables at the end of scope
in transaction and database code
Panu Matilainen [Sat, 28 May 2011 19:28:53 +0000 (22:28 +0300)]
Eliminate dead NULL-assignments at scope-end in librpm, part IV
- Remove NULL-assignments of local variables at the end of scope
in the higher level package-related "objects": rpmds, rpmfi, rpmte
Panu Matilainen [Sat, 28 May 2011 19:26:39 +0000 (22:26 +0300)]
Eliminate dead NULL-assignments at scope-end in librpm, part III
- Remove NULL-assignments of local variables at the end of scope
from the low-level helper machinery: fsm, psm, rpmscript and rpmrc
Panu Matilainen [Sat, 28 May 2011 19:24:37 +0000 (22:24 +0300)]
Eliminate dead NULL-assignments at scope-end in librpm, part II
- Remove NULL-assignments of local variables at the end of scope
in package+signature manipulation code
Panu Matilainen [Sat, 28 May 2011 19:12:37 +0000 (22:12 +0300)]
Eliminate dead NULL-assignments at scope-end in librpm, part I
- Remove NULL-assignments of local variables at the end of scope
in header + tag- and format-extension code. While this
NULL-on-free idiom of rpm codebase is harmless as such, these
unnecessary NULL-assignments have the effect of hiding real problems
in the amount of noise they generate on code analysis.
- While the changes are supposedly trivial, doing this in smaller parts
to make bisecting easier in case a some regression slips through.
Panu Matilainen [Sat, 28 May 2011 16:45:07 +0000 (19:45 +0300)]
Eliminate dead NULL-assignments from rpmio fd close functions
Panu Matilainen [Sat, 28 May 2011 16:43:52 +0000 (19:43 +0300)]
Eliminate bunch of obvious dead NULL-assignments around librpmio
Panu Matilainen [Sat, 28 May 2011 16:42:54 +0000 (19:42 +0300)]
Eliminate dead NULL-assignments on argvFree() and argiFree()
Panu Matilainen [Sat, 28 May 2011 14:30:16 +0000 (17:30 +0300)]
Clean up spec %files -f <manifest> processing
- Split the manifest reading into a helper function
- Fix filename memleak when the file couldn't be opened and
also check for ferror() on return from the fgets() loop - fgets()
returns NULL on both EOF and error, previously an error would've
gone silently unnoticed.o
Panu Matilainen [Sat, 28 May 2011 08:34:51 +0000 (11:34 +0300)]
Remove pointless variable and a dead assignment to it
Panu Matilainen [Sat, 28 May 2011 08:30:55 +0000 (11:30 +0300)]
Clean up checkFiles() a bit
- Initialize variables on declaration, eliminate dead rc assignment
Panu Matilainen [Fri, 27 May 2011 13:46:23 +0000 (16:46 +0300)]
Eliminate bunch of obvious dead NULL-assingments from misc build parts
Panu Matilainen [Fri, 27 May 2011 13:27:34 +0000 (16:27 +0300)]
Rip hysterical hoop-jumping on spec/pkg cpiolist freeing
- Just call rpmfiFree() directly, wtf?
Panu Matilainen [Fri, 27 May 2011 13:20:45 +0000 (16:20 +0300)]
Eliminate dead NULL-assignments on parsePolicies() exit
Panu Matilainen [Fri, 27 May 2011 12:49:09 +0000 (15:49 +0300)]
Eliminate bunch of obvious dead NULL-assignments from build script code
Panu Matilainen [Fri, 27 May 2011 12:38:54 +0000 (15:38 +0300)]
Eliminate bunch of obvious dead NULL-assignments from rpm generation
Panu Matilainen [Fri, 27 May 2011 11:44:03 +0000 (14:44 +0300)]
Eliminate dead NULL-assignments in parseFiles()
Panu Matilainen [Fri, 27 May 2011 11:37:44 +0000 (14:37 +0300)]
Eliminate dead NULL-assignments from rpmSpecFree()
Panu Matilainen [Fri, 27 May 2011 11:35:14 +0000 (14:35 +0300)]
Eliminate dead NULL-assignments on OFI frees on spec parsing
Panu Matilainen [Fri, 27 May 2011 11:25:59 +0000 (14:25 +0300)]
Move build restriction header copying to local scope
- Eliminates accidental use of the variables, eliminating any
need for NULL'ing the iterator
Panu Matilainen [Fri, 27 May 2011 11:12:55 +0000 (14:12 +0300)]
Clean up + plug memleak in parseDescription()
- Eliminate dead NULL-assignments of local variables on exit
- Move stringbuf free to exit, previously error on readLine() leaked
memory here
Panu Matilainen [Fri, 27 May 2011 11:10:51 +0000 (14:10 +0300)]
Eliminate dead NULL-assignments on exit from parseScript()
Panu Matilainen [Fri, 27 May 2011 10:59:05 +0000 (13:59 +0300)]
Clean up + fix memleaks in readIcon()
- Assume failure and use single point of exit where all allocations
are freed without dumb dead-assignments. Also fixes a
leak from icon allocation when Fread() fails.
Panu Matilainen [Fri, 27 May 2011 10:53:36 +0000 (13:53 +0300)]
Eliminate bunch of obvious dead NULL assignments in preamble parsing
Panu Matilainen [Fri, 27 May 2011 10:45:58 +0000 (13:45 +0300)]
More dead NULL assignments of local variables in filelist processing
Panu Matilainen [Fri, 27 May 2011 10:33:00 +0000 (13:33 +0300)]
Eliminate dead NULL assignments on processMetadataFile() exit
Panu Matilainen [Fri, 27 May 2011 10:25:32 +0000 (13:25 +0300)]
Minor cleanup to doUntar() to eliminate dead assignments on free()
Panu Matilainen [Fri, 27 May 2011 09:50:54 +0000 (12:50 +0300)]
Clean up rpmfcGenerateDependsHelper() (aka external depgen) a bit
- Remove redundant NULL check, rpmfiNext() handles it
- Move variables to local scope(s) from function scope where
appropriate, remove dead NULL-assignments on free
- Log the "Finding ..." messages /before/ executing the (possibly
long-running) dependency generation helpers
- rpmExpand() never returns NULL, don't bother testing for it
Panu Matilainen [Fri, 27 May 2011 09:36:47 +0000 (12:36 +0300)]
Eliminate a few more dead rpmdsFree() NULL assignments
- No real chance of accidental misuse of freed data here...
Panu Matilainen [Fri, 27 May 2011 09:31:01 +0000 (12:31 +0300)]
Don't bother NULL'ing everything on rpmfcFree()
- Replace umphteen dead NULL-assignments with a trash-n-burn memset()
- Since we're already testing for NULL, dont free NULL fc (not
that it matters)
Panu Matilainen [Fri, 27 May 2011 09:23:55 +0000 (12:23 +0300)]
Minor cleanup to rpmfcExec()
- remove redundant xav re-initialization
- dont bother NULL'ing local variables on exit
Panu Matilainen [Fri, 27 May 2011 09:09:15 +0000 (12:09 +0300)]
Minor cleanups to rpmfcGenerateDepends()
- init genConfigDeps on declaration
- remove redundant NULL-checks: rpmfiNext() and rpmdsNext() check
for and handle NULL cleanly, no need to test here.
- remove pointless local fileattr variable
Panu Matilainen [Fri, 27 May 2011 08:55:31 +0000 (11:55 +0300)]
Eliminate some dead assignments on rpmdsFree()
- Move ds declaration to local scope so there's no chance of
accidental use of already freed data, ds is not needed at
function scope.
Panu Matilainen [Fri, 27 May 2011 08:52:27 +0000 (11:52 +0300)]
Add a helper function for creation namespaced dependency sets, use it
Panu Matilainen [Fri, 27 May 2011 08:23:37 +0000 (11:23 +0300)]
Minor cleanups to rpmfcHelper()
- If runCmd() returns NULL there's no point in further processing,
rearrange things to avoid extra work in that case. As a side-effect
this also silences a false-positive NULL-deference warning from clang.
Panu Matilainen [Fri, 27 May 2011 08:05:15 +0000 (11:05 +0300)]
Eliminate dead assignment, early exit means failure already
Panu Matilainen [Fri, 27 May 2011 07:59:44 +0000 (10:59 +0300)]
Cosmetics: rewrap/indent to fit 80 columns
Panu Matilainen [Fri, 27 May 2011 07:45:28 +0000 (10:45 +0300)]
Sanitize handlePreambleTag() error returns
- Single point of exit, assume failure. There are plenty of calls
here which can fail, each with different int/rpmRC return code
styles when we simply want an RPMRC_OK/RPMRC_FAIL for the return.
Also eliminates some dead rc assignments.
Panu Matilainen [Fri, 27 May 2011 06:59:55 +0000 (09:59 +0300)]
Eliminate a couple more dead increments in spec parsing code
Panu Matilainen [Fri, 27 May 2011 06:47:38 +0000 (09:47 +0300)]
Eliminate bunch of dead increments in spec filelist parsing
Panu Matilainen [Fri, 27 May 2011 06:40:23 +0000 (09:40 +0300)]
Clean up rpmrc include processing a bit
- Eliminate pointless switch-case when we only care about one
possibility here. Also eliminate a dead-increment which becomes
more obvious now with the surroundings unobfuscated.
Panu Matilainen [Fri, 27 May 2011 06:35:22 +0000 (09:35 +0300)]
Eliminate two dead increments in rpmrc platform processing
Panu Matilainen [Fri, 27 May 2011 06:02:38 +0000 (09:02 +0300)]
Handle readlink() failure in genCpioListAndHeader() correctly
- It might be a rare condition but it /can/ happen, and previously
that would cause '\0' written out of bounds (at negative array offset).
Also leave room for the terminating '\0' at the end of buffer when
calling readlink(), previously a link exactly the size of buffer
would've been silently truncated.
Panu Matilainen [Thu, 26 May 2011 11:24:46 +0000 (14:24 +0300)]
Add test-cases for three RhBug:705115 scenarios