lib/psm.c File Reference

Package state machine to handle a package from a transaction set. More...

#include "system.h"
#include <rpmio_internal.h>
#include <rpmcb.h>
#include <rpmmacro.h>
#include <rpmurl.h>
#include <rpmlua.h>
#include <rpmtag.h>
#include <rpmlib.h>
#include "cpio.h"
#include "fsm.h"
#include "psm.h"
#include <rpmsq.h>
#include "rpmds.h"
#include "rpmte.h"
#include "rpmts.h"
#include <pkgio.h>
#include "misc.h"
#include "rpmdb.h"
#include "signature.h"
#include "debug.h"
Include dependency graph for psm.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define _RPMFI_INTERNAL
#define _RPMSQ_INTERNAL
#define _RPMEVR_INTERNAL
#define _RPMTE_INTERNAL
#define _RPMTS_INTERNAL
#define _PSM_DEBUG   0

Functions

int rpmVersionCompare (Header first, Header second)
 Compare headers to determine which header is "newer".
static rpmRC markReplacedFiles (const rpmpsm psm)
 Mark files in database shared with this package as "replaced".
rpmRC rpmInstallSourcePackage (rpmts ts, void *_fd, const char **specFilePtr, const char **cookie)
 Install source package.
static const char * tag2sln (int tag)
 Return scriptlet name from tag.
static rpmScriptID tag2slx (int tag)
 Return scriptlet id from tag.
static pid_t psmWait (rpmpsm psm)
 Wait for child process to be reaped.
static rpmRC runScript (rpmpsm psm, Header h, const char *sln, int progArgc, const char **progArgv, const char *script, int arg1, int arg2)
 Run scriptlet with args.
static rpmRC runInstScript (rpmpsm psm)
 Retrieve and run scriptlet from header.
static rpmRC handleOneTrigger (const rpmpsm psm, Header sourceH, Header triggeredH, int arg2, unsigned char *triggersAlreadyRun)
 Execute triggers.
static rpmRC runTriggers (rpmpsm psm)
 Run trigger scripts in the database that are fired by this header.
static rpmRC runImmedTriggers (rpmpsm psm)
 Run triggers from this header that are fired by headers in the database.
static const char * pkgStageString (pkgStage a)
rpmpsm XrpmpsmUnlink (rpmpsm psm, const char *msg, const char *fn, unsigned ln)
rpmpsm XrpmpsmLink (rpmpsm psm, const char *msg, const char *fn, unsigned ln)
rpmpsm rpmpsmFree (rpmpsm psm)
 Destroy a package state machine.
rpmpsm rpmpsmNew (rpmts ts, rpmte te, rpmfi fi)
 Create and load a package state machine.
static uint32_t hLoadTID (Header h, rpmTag tag)
 Load a transaction id from a header.
static int hCopyTag (Header sh, Header th, rpmTag tag)
 Copy a tag from a source to a target header.
static int hSaveBlinks (Header h, const struct rpmChainLink_s *blink)
 Save backward link(s) of an upgrade chain into a header.
static int hSaveFlinks (Header h, const struct rpmChainLink_s *flink)
 Save forward link(s) of an upgrade chain into a header.
static int populateInstallHeader (const rpmts ts, const rpmte te, rpmfi fi)
 Add per-transaction data to an install header.
static int postPopulateInstallHeader (const rpmts ts, const rpmte te, rpmfi fi)
 Add fi->states to an install header.
static int rpmpsmNext (rpmpsm psm, pkgStage nstage)
rpmRC rpmpsmStage (rpmpsm psm, pkgStage stage)
 Package state machine driver.

Variables

int _psm_debug = 0
int _psm_threads = 0
static char * SCRIPT_PATH = "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin"
static int ldconfig_done = 0
static const char * ldconfig_path = "/sbin/ldconfig"

Detailed Description

Package state machine to handle a package from a transaction set.

Definition in file psm.c.


Define Documentation

#define _PSM_DEBUG   0

Definition at line 37 of file psm.c.

#define _RPMEVR_INTERNAL

Definition at line 22 of file psm.c.

#define _RPMFI_INTERNAL

Definition at line 17 of file psm.c.

#define _RPMSQ_INTERNAL

Definition at line 19 of file psm.c.

#define _RPMTE_INTERNAL

Definition at line 25 of file psm.c.

#define _RPMTS_INTERNAL

Definition at line 28 of file psm.c.


Function Documentation

static rpmRC handleOneTrigger ( const rpmpsm  psm,
Header  sourceH,
Header  triggeredH,
int  arg2,
unsigned char *  triggersAlreadyRun 
) [static]

Execute triggers.

Todo:
Trigger on any provides, not just package NVR.
Parameters:
psm package state machine data
sourceH 
triggeredH 
arg2 
triggersAlreadyRun 
Returns:

Definition at line 1048 of file psm.c.

References _free(), alloca(), rpmDataType_u::argv, rpmpsm_s::countCorrection, headerGet(), _HE_s::p, rpmdbCountPackages(), rpmdsAnyMatchesDep(), rpmdsFlags(), rpmdsFree(), rpmdsInit(), rpmdsN(), rpmdsNew(), rpmdsNext(), rpmdsSetNoPromote(), RPMRC_FAIL, RPMRC_OK, rpmtsGetRdb(), runScript(), rpmpsm_s::sense, rpmDataType_u::str, _HE_s::tag, rpmpsm_s::ts, and rpmDataType_u::ui32p.

Referenced by runImmedTriggers(), and runTriggers().

static int hCopyTag ( Header  sh,
Header  th,
rpmTag  tag 
) [static]

Copy a tag from a source to a target header.

Parameters:
sh source header
th target header
tag tag to copy
Returns:
0 always

Definition at line 1406 of file psm.c.

References _free(), alloca(), _HE_s::c, headerGet(), headerPut(), _HE_s::p, rpmDataType_u::ptr, and _HE_s::tag.

Referenced by rpmpsmStage().

static uint32_t hLoadTID ( Header  h,
rpmTag  tag 
) [static]

Load a transaction id from a header.

Parameters:
h header
tag tag to load
Returns:
tag value (0 on failure)

Definition at line 1385 of file psm.c.

References _free(), alloca(), headerGet(), _HE_s::p, rpmDataType_u::ptr, _HE_s::tag, and rpmDataType_u::ui32p.

Referenced by rpmpsmStage().

static int hSaveBlinks ( Header  h,
const struct rpmChainLink_s *  blink 
) [static]

Save backward link(s) of an upgrade chain into a header.

Parameters:
h header
*blink backward links
Returns:
0 always

Definition at line 1425 of file psm.c.

References alloca(), rpmDataType_u::argv, argvCount(), argvData(), _HE_s::c, headerPut(), _HE_s::p, RPM_STRING_ARRAY_TYPE, RPMTE_CHAIN_END, _HE_s::t, and _HE_s::tag.

Referenced by populateInstallHeader().

static int hSaveFlinks ( Header  h,
const struct rpmChainLink_s *  flink 
) [static]

Save forward link(s) of an upgrade chain into a header.

Parameters:
h header
*flink forward links
Returns:
0 always

Definition at line 1480 of file psm.c.

References alloca(), rpmDataType_u::argv, argvCount(), argvData(), _HE_s::c, headerPut(), _HE_s::p, RPM_STRING_ARRAY_TYPE, RPMTE_CHAIN_END, _HE_s::t, and _HE_s::tag.

Referenced by rpmpsmStage().

static rpmRC markReplacedFiles ( const rpmpsm  psm  )  [static]
static const char* pkgStageString ( pkgStage  a  )  [static]
static int populateInstallHeader ( const rpmts  ts,
const rpmte  te,
rpmfi  fi 
) [static]

Add per-transaction data to an install header.

Parameters:
ts transaction set
te transaction element
fi file info set
Returns:
0 always

Definition at line 1547 of file psm.c.

References alloca(), _HE_s::c, headerGetOrigin(), headerPut(), hSaveBlinks(), _HE_s::p, RPM_STRING_TYPE, RPM_UINT32_TYPE, rpmfiFC(), rpmteColor(), RPMTRANS_TYPE_ROLLBACK, rpmtsColor(), rpmtsType(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, and rpmDataType_u::ui32p.

Referenced by rpmpsmStage().

static int postPopulateInstallHeader ( const rpmts  ts,
const rpmte  te,
rpmfi  fi 
) [static]

Add fi->states to an install header.

Parameters:
ts transaction set
te transaction element
fi file info set
Returns:
0 always

Definition at line 1602 of file psm.c.

References alloca(), _HE_s::c, headerPut(), _HE_s::p, RPM_UINT8_TYPE, rpmfiFC(), _HE_s::t, _HE_s::tag, and rpmDataType_u::ui8p.

Referenced by rpmpsmStage().

static pid_t psmWait ( rpmpsm  psm  )  [static]

Wait for child process to be reaped.

Parameters:
psm package state machine data
Returns:

Definition at line 486 of file psm.c.

References D_, rpmlog(), RPMLOG_DEBUG, RPMSCRIPT_STATE_REAPED, rpmsqWait(), rpmswAdd(), RPMTS_OP_SCRIPTLETS, rpmtsOp(), rpmpsm_s::scriptTag, rpmpsm_s::sq, rpmpsm_s::sstates, rpmpsm_s::stepName, tag2slx(), and rpmpsm_s::ts.

Referenced by runScript().

rpmRC rpmInstallSourcePackage ( rpmts  ts,
void *  _fd,
const char **  specFilePtr,
const char **  cookie 
)

Install source package.

Deprecated:
This routine needs to DIE! DIE! DIE!.
Todo:
Eliminate in rpm-5.1, insturment rpmtsRun() state machine instead.
Parameters:
ts transaction set
_fd file handle
Return values:
specFilePtr address of spec file name (or NULL)
cookie address of cookie pointer (or NULL)
Returns:
rpmRC return code

Definition at line 184 of file psm.c.

References _, _free(), Access(), alloca(), rpmDataType_u::argv, CPIO_MAP_GID, CPIO_MAP_MODE, CPIO_MAP_PATH, CPIO_MAP_UID, FA_CREATE, Fclose(), fdLink, headerFree(), headerGet(), headerIsEntry(), headerLink(), headerMacrosLoad(), _HE_s::p, PSM_FINI, PSM_PKGINSTALL, PSM_PROCESS, rpmExpand(), rpmfiFree(), RPMFILE_SPECFILE, rpmfiLink, rpmfiNew(), rpmGenPath(), rpmlog(), RPMLOG_ERR, rpmMkdirPath(), rpmpsmStage(), RPMRC_FAIL, RPMRC_NOKEY, RPMRC_NOTTRUSTED, RPMRC_OK, rpmReadPackageFile(), rpmteSetHeader(), rpmtsAddInstallElement(), rpmtsClean(), rpmtsElement(), rpmtsFree(), rpmtsLink, rpmtsRootDir(), stpcpy(), rpmDataType_u::str, _HE_s::tag, W_OK, and xmalloc().

Referenced by rpmInstallSource().

rpmpsm rpmpsmFree ( rpmpsm  psm  ) 

Destroy a package state machine.

Parameters:
psm package state machine
Returns:
NULL always

Definition at line 1326 of file psm.c.

References _free(), rpmpsm_s::fi, rpmpsm_s::nrefs, rpmfiFree(), rpmpsmUnlink, rpmteFree(), rpmtsFree(), rpmpsm_s::sstates, rpmpsm_s::te, and rpmpsm_s::ts.

Referenced by _processFailedPackage(), rpmtsRun(), and rpmVerifyScript().

rpmpsm rpmpsmNew ( rpmts  ts,
rpmte  te,
rpmfi  fi 
)

Create and load a package state machine.

Parameters:
ts transaction set
te transaction set element
fi file info set
Returns:
new package state machine

Definition at line 1359 of file psm.c.

References rpmpsm_s::fi, rpmfiLink, rpmpsmLink, RPMSCRIPT_MAX, rpmtsLink, rpmpsm_s::sstates, rpmpsm_s::te, rpmpsm_s::ts, and xcalloc().

Referenced by _processFailedPackage(), rpmtsRun(), and rpmVerifyScript().

static int rpmpsmNext ( rpmpsm  psm,
pkgStage  nstage 
) [static]

Definition at line 1632 of file psm.c.

References _psm_threads, rpmpsm_s::nstage, rpmpsmStage(), rpmsqJoin(), and rpmsqThread().

Referenced by rpmpsmStage().

rpmRC rpmpsmStage ( rpmpsm  psm,
pkgStage  stage 
)

Package state machine driver.

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

Definition at line 1649 of file psm.c.

References _, _free(), alloca(), rpmpsm_s::amount, rpmDataType_u::argv, _HE_s::c, rpmpsm_s::cfd, Chdir(), Chroot(), rpmpsm_s::chrootDone, rpmpsm_s::countCorrection, CPIO_MAP_GID, CPIO_MAP_MODE, CPIO_MAP_PATH, CPIO_MAP_UID, CPIO_SBIT_CHECK, cpioStrerror(), D_, dbiOpen(), errno, FA_COPYOUT, rpmpsm_s::failedFile, Fclose(), rpmpsm_s::fd, fdDup(), Fdopen(), FDSTAT_DIGEST, fdstat_op(), FDSTAT_READ, FDSTAT_WRITE, Ferror(), Fflush(), rpmpsm_s::fi, Fileno(), Fopen(), FSM_PKGBUILD, FSM_PKGCOMMIT, FSM_PKGERASE, FSM_PKGINSTALL, fsmSetup(), fsmTeardown(), Fstrerror(), rpmpsm_s::goal, hCopyTag(), headerCopyLoad(), headerFini(), headerFree(), headerGet(), headerGetInstance(), headerInit(), headerIsEntry(), headerLink(), headerNew(), headerNext(), headerPut(), headerRegenSigHeader(), headerReload(), headerSetInstance(), headerSprintf(), hLoadTID(), hSaveFlinks(), markReplacedFiles(), rpmpsm_s::mi, rpmpsm_s::npkgs_installed, rpmpsm_s::oh, _HE_s::p, rpmpsm_s::payload_format, rpmpsm_s::pkgfn, pkgStageString(), rpmpsm_s::pkgURL, populateInstallHeader(), postPopulateInstallHeader(), rpmpsm_s::progTag, PSM_CHROOT_IN, PSM_CHROOT_OUT, PSM_COMMIT, PSM_CREATE, PSM_DESTROY, PSM_FINI, PSM_IMMED_TRIGGERS, PSM_INIT, PSM_NOTIFY, PSM_PKGCOMMIT, PSM_PKGERASE, PSM_PKGINSTALL, PSM_PKGSAVE, PSM_POST, PSM_PRE, PSM_PROCESS, PSM_RPMDB_ADD, PSM_RPMDB_LOAD, PSM_RPMDB_REMOVE, PSM_RPMIO_FLAGS, PSM_SCRIPT, PSM_TRIGGERS, PSM_UNDO, PSM_UNKNOWN, rpmDataType_u::ptr, rpmpsm_s::rc, RPM_STRING_TYPE, RPM_UINT32_TYPE, RPMCALLBACK_CPIO_ERROR, RPMCALLBACK_INST_PROGRESS, RPMCALLBACK_INST_START, RPMCALLBACK_UNINST_START, RPMCALLBACK_UNINST_STOP, RPMCALLBACK_UNPACK_ERROR, rpmdbAdd(), rpmdbCountPackages(), rpmdbFreeIterator(), rpmdbGetIteratorOffset(), RPMDBI_PACKAGES, rpmdbNextIterator(), rpmdbRemove(), rpmdbSetIteratorRE(), rpmfiFC(), RPMFILE_STATE_NORMAL, rpmGenPath(), rpmGetPath(), rpmHeaderFormats, rpmpsm_s::rpmio_flags, rpmlog(), RPMLOG_DEBUG, RPMLOG_ERR, RPMLOG_INFO, rpmMkdirPath(), rpmpkgSizeof(), rpmpkgWrite(), rpmpsmNext(), RPMRC_FAIL, RPMRC_OK, rpmswAdd(), rpmswEnter(), rpmswExit(), RPMTAG_HEADERIMAGE, RPMTAG_HEADERIMMUTABLE, RPMTAG_HEADERSIGNATURES, rpmteA(), rpmteE(), rpmteFd(), rpmteHdrid(), rpmteN(), rpmteNEVR(), rpmteO(), rpmteR(), rpmteSetDBInstance(), rpmteSetHeader(), rpmteV(), RPMTRANS_FLAG_APPLYONLY, RPMTRANS_FLAG_JUSTDB, RPMTRANS_FLAG_NOPOST, RPMTRANS_FLAG_NOPOSTUN, RPMTRANS_FLAG_NOPRE, RPMTRANS_FLAG_NOPREUN, RPMTRANS_FLAG_NOTRIGGERIN, RPMTRANS_FLAG_NOTRIGGERPOSTUN, RPMTRANS_FLAG_NOTRIGGERPREIN, RPMTRANS_FLAG_NOTRIGGERUN, RPMTRANS_FLAG_PKGCOMMIT, RPMTRANS_FLAG_TEST, RPMTRANS_TYPE_AUTOROLLBACK, RPMTRANS_TYPE_ROLLBACK, RPMTS_OP_COMPRESS, RPMTS_OP_DBADD, RPMTS_OP_DBREMOVE, RPMTS_OP_DIGEST, RPMTS_OP_UNCOMPRESS, rpmtsChrootDone(), rpmtsColor(), rpmtsCurrDir(), rpmtsFlags(), rpmtsGetRdb(), rpmtsGetTid(), rpmtsInitIterator(), rpmtsNotify(), rpmtsOp(), rpmtsRootDir(), rpmtsSetChrootDone(), rpmtsType(), rpmtsVSFlags(), RPMVSF_NOHDRCHK, runImmedTriggers(), runInstScript(), runTriggers(), rpmpsm_s::scriptArg, rpmpsm_s::scriptTag, rpmpsm_s::sense, snprintf(), rpmpsm_s::stepName, stpcpy(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, tag2sln(), rpmpsm_s::te, rpmpsm_s::total, rpmpsm_s::ts, rpmDataType_u::ui32p, urlPath(), rpmpsm_s::what, xmalloc(), and xstrdup().

Referenced by _processFailedPackage(), rpmInstallSourcePackage(), rpmpsmNext(), rpmtsRun(), and rpmVerifyScript().

int rpmVersionCompare ( Header  first,
Header  second 
)

Compare headers to determine which header is "newer".

Deprecated:
Use rpmdsCompare instead.
Todo:
Eliminate in rpm-5.1.
Parameters:
first 1st header
second 2nd header
Returns:
result of comparison

Definition at line 54 of file psm.c.

References _free(), alloca(), headerGet(), _HE_s::p, rpmDataType_u::ptr, rpmvercmp, rpmDataType_u::str, _HE_s::tag, and rpmDataType_u::ui32p.

Referenced by hdr_compare(), and rpmcliInstall().

static rpmRC runImmedTriggers ( rpmpsm  psm  )  [static]

Run triggers from this header that are fired by headers in the database.

Parameters:
psm package state machine data
Returns:
0 on success

Definition at line 1199 of file psm.c.

References _free(), alloca(), rpmDataType_u::argv, _HE_s::c, rpmpsm_s::fi, handleOneTrigger(), headerGet(), rpmpsm_s::mi, _HE_s::p, rpmdbFreeIterator(), rpmdbGetIteratorCount(), rpmdbNextIterator(), RPMRC_OK, rpmtsInitIterator(), _HE_s::tag, rpmpsm_s::ts, and rpmDataType_u::ui32p.

Referenced by rpmpsmStage().

static rpmRC runInstScript ( rpmpsm  psm  )  [static]

Retrieve and run scriptlet from header.

Parameters:
psm package state machine data
Returns:
rpmRC return code

Definition at line 991 of file psm.c.

References _free(), alloca(), rpmDataType_u::argv, _HE_s::c, rpmpsm_s::fi, headerGet(), _HE_s::p, rpmpsm_s::progTag, rpmDataType_u::ptr, RPM_STRING_TYPE, rpmExpand(), RPMRC_OK, runScript(), rpmpsm_s::scriptArg, rpmpsm_s::scriptTag, stpcpy(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, tag2sln(), and xmalloc().

Referenced by rpmpsmStage().

static rpmRC runScript ( rpmpsm  psm,
Header  h,
const char *  sln,
int  progArgc,
const char **  progArgv,
const char *  script,
int  arg1,
int  arg2 
) [static]

Run scriptlet with args.

Run a script with an interpreter. If the interpreter is not specified, /bin/sh will be used. If the interpreter is /bin/sh, then the args from the header will be ignored, passing instead arg1 and arg2.

Parameters:
psm package state machine data
h header
sln name of scriptlet section
progArgc no. of args from header
progArgv args from header, progArgv[0] is the interpreter to use
script scriptlet from header
arg1 no. instances of package installed after scriptlet exec (-1 is no arg)
arg2 ditto, but for the target package
Returns:
0 on success

Definition at line 651 of file psm.c.

References _, _free(), alloca(), rpmDataType_u::argv, body(), _HE_s::c, Chdir(), Chroot(), D_, doputenv(), errno, Fclose(), rpmpsm_s::fd, fdDup(), Ferror(), Fileno(), Fopen(), Fwrite(), headerGet(), _HE_s::p, psmWait(), rpmDataType_u::ptr, rpm_execcon, RPMCALLBACK_SCRIPT_ERROR, rpmExpand(), rpmIsDebug, rpmIsVerbose, rpmlog(), RPMLOG_DEBUG, RPMLOG_ERR, RPMRC_FAIL, RPMRC_OK, RPMSCRIPT_STATE_EXEC, RPMSCRIPT_STATE_SELINUX, RPMSCRIPT_STATE_UNKNOWN, rpmsqFork(), rpmTempFile(), rpmtsChrootDone(), rpmtsNotify(), rpmtsRootDir(), rpmtsScriptFd(), rpmtsSELinuxEnabled(), SCRIPT_PATH, rpmpsm_s::scriptTag, rpmpsm_s::sq, rpmpsm_s::sstates, rpmpsm_s::stepName, stpcpy(), rpmDataType_u::str, _HE_s::tag, tag2sln(), tag2slx(), rpmpsm_s::te, rpmpsm_s::ts, Unlink(), rpmpsm_s::unorderedSuccessor, unsetenv(), and xmalloc().

Referenced by handleOneTrigger(), and runInstScript().

static rpmRC runTriggers ( rpmpsm  psm  )  [static]

Run trigger scripts in the database that are fired by this header.

Parameters:
psm package state machine data
Returns:
0 on success

Definition at line 1157 of file psm.c.

References rpmpsm_s::countCorrection, rpmpsm_s::fi, handleOneTrigger(), rpmpsm_s::mi, rpmdbCountPackages(), rpmdbFreeIterator(), rpmdbNextIterator(), RPMRC_NOTFOUND, RPMRC_OK, rpmteN(), rpmtsGetRdb(), rpmtsInitIterator(), rpmpsm_s::te, and rpmpsm_s::ts.

Referenced by rpmpsmStage().

static const char* tag2sln ( int  tag  )  [static]

Return scriptlet name from tag.

Parameters:
tag scriptlet tag
Returns:
name of scriptlet

Definition at line 436 of file psm.c.

Referenced by rpmpsmStage(), runInstScript(), and runScript().

static rpmScriptID tag2slx ( int  tag  )  [static]

Return scriptlet id from tag.

Parameters:
tag scriptlet tag
Returns:
id of scriptlet

Definition at line 461 of file psm.c.

References RPMSCRIPT_POSTIN, RPMSCRIPT_POSTTRANS, RPMSCRIPT_POSTUN, RPMSCRIPT_PREIN, RPMSCRIPT_PRETRANS, RPMSCRIPT_PREUN, RPMSCRIPT_SANITYCHECK, RPMSCRIPT_TRIGGERIN, RPMSCRIPT_TRIGGERPOSTUN, RPMSCRIPT_TRIGGERPREIN, RPMSCRIPT_TRIGGERUN, RPMSCRIPT_UNKNOWN, and RPMSCRIPT_VERIFY.

Referenced by psmWait(), and runScript().

rpmpsm XrpmpsmLink ( rpmpsm  psm,
const char *  msg,
const char *  fn,
unsigned  ln 
)
Todo:
Remove debugging entry from the ABI.

Definition at line 1313 of file psm.c.

References _psm_debug, and rpmpsm_s::nrefs.

rpmpsm XrpmpsmUnlink ( rpmpsm  psm,
const char *  msg,
const char *  fn,
unsigned  ln 
)
Todo:
Remove debugging entry from the ABI.

Definition at line 1302 of file psm.c.

References _psm_debug, and rpmpsm_s::nrefs.


Variable Documentation

int _psm_debug = 0

Definition at line 39 of file psm.c.

Referenced by XrpmpsmLink(), and XrpmpsmUnlink().

int _psm_threads = 0

Definition at line 41 of file psm.c.

Referenced by rpmpsmNext().

int ldconfig_done = 0 [static]

Definition at line 628 of file psm.c.

const char* ldconfig_path = "/sbin/ldconfig" [static]

Definition at line 631 of file psm.c.

char* SCRIPT_PATH = "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin" [static]

Definition at line 429 of file psm.c.

Referenced by runScript().

Generated on Tue Mar 9 11:39:40 2010 for rpm by  doxygen 1.6.3