4 /** \ingroup rpmcli rpmbuild
13 * Should version 3 packages be produced?
17 extern int _noDirTokens;
25 * Popt option table for options shared by all modes and executables.
28 extern struct poptOption rpmcliAllPoptTable[];
30 /*@unchecked@*/ /*@observer@*/ /*@null@*/
31 extern const char * rpmcliPipeOutput;
33 /*@unchecked@*/ /*@observer@*/ /*@null@*/
34 extern const char * rpmcliRcfile;
36 /*@unchecked@*/ /*@observer@*/ /*@null@*/
37 extern const char * rpmcliRootDir;
40 * Initialize most everything needed by an rpm CLI executable context.
41 * @param argc no. of args
42 * @param argv arg array
43 * @param optionsTable popt option table
44 * @return popt context (or NULL)
48 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable)
49 /*@globals rpmCLIMacroContext, rpmGlobalMacroContext, stderr,
50 fileSystem, internalState @*/
51 /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext, stderr,
52 fileSystem, internalState @*/;
55 * Make sure that rpm configuration has been read.
56 * @warning Options like --rcfile and --verbose must precede callers option.
59 void rpmcliConfigured(void)
60 /*@globals rpmCLIMacroContext, rpmGlobalMacroContext,
61 fileSystem, internalState @*/
62 /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext,
63 fileSystem, internalState @*/;
66 * Destroy most everything needed by an rpm CLI executable context.
67 * @param optCon popt context
71 rpmcliFini(/*@only@*/ /*@null@*/ poptContext optCon)
72 /*@modifies optCon @*/;
75 * Common/global popt tokens used for command line option tables.
77 #define RPMCLI_POPT_NODEPS -1025
78 #define RPMCLI_POPT_FORCE -1026
79 #define RPMCLI_POPT_NOMD5 -1027
80 #define RPMCLI_POPT_NOSCRIPTS -1028
81 #define RPMCLI_POPT_NOSIGNATURE -1029
82 #define RPMCLI_POPT_NODIGEST -1030
83 #define RPMCLI_POPT_NOHDRCHK -1031
85 /* ==================================================================== */
90 * Query/Verify argument qualifiers.
91 * @todo Reassign to tag values.
93 typedef enum rpmQVSources_e {
94 RPMQV_PACKAGE = 0, /*!< ... from package name db search. */
95 RPMQV_PATH, /*!< ... from file path db search. */
96 RPMQV_ALL, /*!< ... from each installed package. */
97 RPMQV_RPM, /*!< ... from reading binary rpm package. */
98 RPMQV_GROUP, /*!< ... from group db search. */
99 RPMQV_WHATPROVIDES, /*!< ... from provides db search. */
100 RPMQV_WHATREQUIRES, /*!< ... from requires db search. */
101 RPMQV_TRIGGEREDBY, /*!< ... from trigger db search. */
102 RPMQV_DBOFFSET, /*!< ... from database header instance. */
103 RPMQV_SPECFILE, /*!< ... from spec file parse (query only). */
104 RPMQV_PKGID, /*!< ... from package id (header+payload MD5). */
105 RPMQV_HDRID, /*!< ... from header id (immutable header SHA1). */
106 RPMQV_FILEID, /*!< ... from file id (file MD5). */
107 RPMQV_TID /*!< ... from install transaction id (time stamp). */
111 * Bit(s) for rpmVerifyFile() attributes and result.
113 typedef enum rpmVerifyAttrs_e {
114 RPMVERIFY_NONE = 0, /*!< */
115 RPMVERIFY_MD5 = (1 << 0), /*!< from %verify(md5) */
116 RPMVERIFY_FILESIZE = (1 << 1), /*!< from %verify(size) */
117 RPMVERIFY_LINKTO = (1 << 2), /*!< from %verify(link) */
118 RPMVERIFY_USER = (1 << 3), /*!< from %verify(user) */
119 RPMVERIFY_GROUP = (1 << 4), /*!< from %verify(group) */
120 RPMVERIFY_MTIME = (1 << 5), /*!< from %verify(mtime) */
121 RPMVERIFY_MODE = (1 << 6), /*!< from %verify(mode) */
122 RPMVERIFY_RDEV = (1 << 7), /*!< from %verify(rdev) */
123 /* bits 8-15 unused, reserved for rpmVerifyAttrs */
124 /* bits 16-20 used in rpmVerifyFlags */
125 /* bits 21-22 unused */
126 /* bits 23-27 used in rpmQueryFlags */
127 RPMVERIFY_READLINKFAIL= (1 << 28), /*!< */
128 RPMVERIFY_READFAIL = (1 << 29), /*!< */
129 RPMVERIFY_LSTATFAIL = (1 << 30) /*!< */
132 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
135 * Bit(s) to control rpmQuery() operation, stored in qva_flags.
136 * @todo Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs?.
138 typedef enum rpmQueryFlags_e {
140 QUERY_FOR_DEFAULT = 0, /*!< */
141 QUERY_MD5 = (1 << 0), /*!< from --nomd5 */
142 QUERY_SIZE = (1 << 1), /*!< from --nosize */
143 QUERY_LINKTO = (1 << 2), /*!< from --nolink */
144 QUERY_USER = (1 << 3), /*!< from --nouser) */
145 QUERY_GROUP = (1 << 4), /*!< from --nogroup) */
146 QUERY_MTIME = (1 << 5), /*!< from --nomtime) */
147 QUERY_MODE = (1 << 6), /*!< from --nomode) */
148 QUERY_RDEV = (1 << 7), /*!< from --nodev */
149 /* bits 8-15 unused, reserved for rpmVerifyAttrs */
150 QUERY_FILES = (1 << 16), /*!< verify: from --nofiles */
151 QUERY_DEPS = (1 << 17), /*!< verify: from --nodeps */
152 QUERY_SCRIPT = (1 << 18), /*!< verify: from --noscripts */
153 QUERY_DIGEST = (1 << 19), /*!< verify: from --nodigest */
154 QUERY_SIGNATURE = (1 << 20), /*!< verify: from --nosignature */
155 QUERY_PATCHES = (1 << 21), /*!< placeholder (SuSE) */
156 QUERY_HDRCHK = (1 << 22), /*!< verify: from --nohdrchk */
158 QUERY_FOR_LIST = (1 << 23), /*!< query: from --list */
159 QUERY_FOR_STATE = (1 << 24), /*!< query: from --state */
160 QUERY_FOR_DOCS = (1 << 25), /*!< query: from --docfiles */
161 QUERY_FOR_CONFIG = (1 << 26), /*!< query: from --configfiles */
162 QUERY_FOR_DUMPFILES = (1 << 27) /*!< query: from --dump */
165 #define _QUERY_FOR_BITS \
166 (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
170 * Bit(s) from common command line options.
173 extern rpmQueryFlags rpmcliQueryFlags;
176 * Bit(s) to control rpmVerify() operation, stored in qva_flags.
177 * @todo Merge rpmQueryFlags, rpmVerifyFlags, and rpmVerifyAttrs values?.
179 typedef enum rpmVerifyFlags_e {
181 VERIFY_DEFAULT = 0, /*!< */
183 VERIFY_MD5 = (1 << 0), /*!< from --nomd5 */
184 VERIFY_SIZE = (1 << 1), /*!< from --nosize */
185 VERIFY_LINKTO = (1 << 2), /*!< from --nolinkto */
186 VERIFY_USER = (1 << 3), /*!< from --nouser */
187 VERIFY_GROUP = (1 << 4), /*!< from --nogroup */
188 VERIFY_MTIME = (1 << 5), /*!< from --nomtime */
189 VERIFY_MODE = (1 << 6), /*!< from --nomode */
190 VERIFY_RDEV = (1 << 7), /*!< from --nodev */
191 /* bits 8-15 unused, reserved for rpmVerifyAttrs */
192 VERIFY_FILES = (1 << 16), /*!< verify: from --nofiles */
193 VERIFY_DEPS = (1 << 17), /*!< verify: from --nodeps */
194 VERIFY_SCRIPT = (1 << 18), /*!< verify: from --noscripts */
195 VERIFY_DIGEST = (1 << 19), /*!< verify: from --nodigest */
196 VERIFY_SIGNATURE = (1 << 20), /*!< verify: from --nosignature */
197 VERIFY_PATCHES = (1 << 21), /*!< placeholder (SuSE) */
198 VERIFY_HDRCHK = (1 << 22), /*!< verify: from --nohdrchk */
200 VERIFY_FOR_LIST = (1 << 23), /*!< query: from --list */
201 VERIFY_FOR_STATE = (1 << 24), /*!< query: from --state */
202 VERIFY_FOR_DOCS = (1 << 25), /*!< query: from --docfiles */
203 VERIFY_FOR_CONFIG = (1 << 26), /*!< query: from --configfiles */
204 VERIFY_FOR_DUMPFILES= (1 << 27) /*!< query: from --dump */
206 /* bits 28-30 used in rpmVerifyAttrs */
209 #define VERIFY_ATTRS \
210 ( VERIFY_MD5 | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
211 VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV )
213 ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
214 VERIFY_SIGNATURE | VERIFY_HDRCHK )
218 typedef struct rpmQVKArguments_s * QVA_t;
221 * Function to display iterator matches.
223 * @param qva parsed query/verify options
224 * @param ts transaction set
225 * @param h header to use for query/verify
227 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
228 /*@globals fileSystem@*/
229 /*@modifies qva, ts, fileSystem @*/;
232 * Describe query/verify/signature command line operation.
234 struct rpmQVKArguments_s {
235 rpmQVSources qva_source; /*!< Identify CLI arg type. */
236 int qva_sourceCount;/*!< Exclusive option check (>1 is error). */
237 rpmQueryFlags qva_flags; /*!< Bit(s) to control operation. */
238 rpmfileAttrs qva_fflags; /*!< Bit(s) to filter on attribute. */
239 /*@only@*/ /*@null@*/
240 rpmdbMatchIterator qva_mi; /*!< Match iterator on selected headers. */
242 QVF_t qva_showPackage; /*!< Function to display iterator matches. */
244 int qva_verbose; /*!< (unused) */
245 /*@only@*/ /*@null@*/
246 const char * qva_queryFormat;/*!< Format for headerSprintf(). */
247 int sign; /*!< Is a passphrase needed? */
249 const char * passPhrase; /*!< Pass phrase. */
250 /*@observer@*/ /*@null@*/
251 const char * qva_prefix; /*!< Path to top of install tree. */
254 - 'q' from --query, -q
255 - 'Q' from --querytags
256 - 'V' from --verify, -V
259 - 'K' from --checksig, -K
262 char qva_char; /*!< (unused) always ' ' */
268 extern struct rpmQVKArguments_s rpmQVKArgs;
273 extern struct poptOption rpmQVSourcePoptTable[];
283 extern struct poptOption rpmQueryPoptTable[];
288 extern struct poptOption rpmVerifyPoptTable[];
291 * Display query/verify information for each header in iterator.
294 * - qva->qva_mi rpm database iterator
295 * - qva->qva_showPackage query/verify display routine
297 * @param qva parsed query/verify options
298 * @param ts transaction set
299 * @return result of last non-zero showPackage() return
301 int rpmcliShowMatches(QVA_t qva, rpmts ts)
302 /*@globals rpmGlobalMacroContext, fileSystem@*/
303 /*@modifies qva, rpmGlobalMacroContext, fileSystem @*/;
306 * Display list of tags that can be used in --queryformat.
307 * @param fp file handle to use for display
309 void rpmDisplayQueryTags(FILE * fp)
310 /*@globals fileSystem@*/
311 /*@modifies *fp, fileSystem @*/;
314 * Common query/verify source interface, called once for each CLI arg.
317 * - qva->qva_mi rpm database iterator
318 * - qva->qva_showPackage query/verify display routine
320 * @param qva parsed query/verify options
321 * @param ts transaction set
322 * @param arg name of source to query/verify
323 * @return showPackage() result, 1 if rpmdbInitIterator() is NULL
325 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
326 /*@globals rpmGlobalMacroContext,
327 fileSystem, internalState @*/
328 /*@modifies qva, ts, rpmGlobalMacroContext,
329 fileSystem, internalState @*/;
332 * Display results of package query.
333 * @todo Devise a meaningful return code.
334 * @param qva parsed query/verify options
335 * @param ts transaction set
336 * @param h header to use for query
339 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
340 /*@globals fileSystem, internalState @*/
341 /*@modifies ts, h, fileSystem, internalState @*/;
344 * Display package information.
345 * @todo hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?
346 * @param ts transaction set
347 * @param qva parsed query/verify options
348 * @param argv query argument(s) (or NULL)
349 * @return 0 on success, else no. of failures
351 int rpmcliQuery(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
352 /*@globals rpmGlobalMacroContext,
353 fileSystem, internalState @*/
354 /*@modifies ts, qva, rpmGlobalMacroContext,
355 fileSystem, internalState @*/;
358 * Verify file attributes (including MD5 sum).
359 * @todo gnorpm and python bindings prevent this from being static.
360 * @param ts transaction set
361 * @param fi file info (with linked header and current file index)
362 * @retval res address of bit(s) returned to indicate failure
363 * @param omitMask bit(s) to disable verify checks
364 * @return 0 on success (or not installed), 1 on error
367 int rpmVerifyFile(const rpmts ts, rpmfi fi,
368 /*@out@*/ rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
369 /*@globals fileSystem, internalState @*/
370 /*@modifies fi, *res, fileSystem, internalState @*/
371 /*@requires maxSet(res) >= 0 @*/;
375 * Display results of package verify.
376 * @param qva parsed query/verify options
377 * @param ts transaction set
378 * @param h header to use for verify
379 * @return result of last non-zero verify return
381 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
382 /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
383 /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
386 * Check package and header signatures.
387 * @param qva parsed query/verify options
388 * @param ts transaction set
389 * @param fd package file handle
390 * @param fn package file name
391 * @return 0 on success, 1 on failure
393 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
394 /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
395 /*@modifies qva, ts, fd, rpmGlobalMacroContext,
396 fileSystem, internalState @*/;
399 * Verify package install.
400 * @todo hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?
401 * @param ts transaction set
402 * @param qva parsed query/verify options
403 * @param argv verify argument(s) (or NULL)
404 * @return 0 on success, else no. of failures
406 int rpmcliVerify(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
407 /*@globals rpmGlobalMacroContext,
408 fileSystem, internalState @*/
409 /*@modifies ts, qva, rpmGlobalMacroContext,
410 fileSystem, internalState @*/;
413 /* ==================================================================== */
418 * Describe build command line request.
420 struct rpmBuildArguments_s {
421 rpmQueryFlags qva_flags; /*!< Bit(s) to control verification. */
422 int buildAmount; /*!< Bit(s) to control operation. */
424 const char * buildRootOverride; /*!< from --buildroot */
426 char * targets; /*!< Target platform(s), comma separated. */
428 const char * passPhrase; /*!< Pass phrase. */
429 /*@only@*/ /*@null@*/
430 const char * cookie; /*!< NULL for binary, ??? for source, rpm's */
431 int force; /*!< from --force */
432 int noBuild; /*!< from --nobuild */
433 int noDeps; /*!< from --nodeps */
434 int noLang; /*!< from --nolang */
435 int shortCircuit; /*!< from --short-circuit */
436 int sign; /*!< from --sign */
437 int useCatalog; /*!< from --usecatalog */
438 char buildMode; /*!< Build mode (one of "btBC") */
439 char buildChar; /*!< Build stage (one of "abcilps ") */
440 /*@observer@*/ /*@null@*/
441 const char * rootdir;
446 typedef struct rpmBuildArguments_s * BTA_t;
451 extern struct rpmBuildArguments_s rpmBTArgs;
456 extern struct poptOption rpmBuildPoptTable[];
459 /* ==================================================================== */
462 /* --- install/upgrade/erase modes */
465 extern int rpmcliPackagesTotal;
467 extern int rpmcliHashesCurrent;
469 extern int rpmcliHashesTotal;
471 extern int rpmcliProgressCurrent;
473 extern int rpmcliProgressTotal;
476 * The rpm CLI generic transaction callback handler.
477 * @todo Remove headerSprintf() from the progress callback.
478 * @deprecated Transaction callback arguments need to change, so don't rely on
479 * this routine in the rpmcli API.
481 * @param arg per-callback private data (e.g. an rpm header)
482 * @param what callback identifier
483 * @param amount per-callback progress info
484 * @param total per-callback progress info
485 * @param key opaque header key (e.g. file name or PyObject)
486 * @param data private data (e.g. rpmInstallInterfaceFlags)
487 * @return per-callback data (e.g. an opened FD_t)
489 /*@null@*/ void * rpmShowProgress(/*@null@*/ const void * arg,
490 const rpmCallbackType what,
491 const unsigned long amount,
492 const unsigned long total,
493 /*@null@*/ fnpyKey key,
494 /*@null@*/ void * data)
495 /*@globals rpmcliHashesCurrent,
496 rpmcliProgressCurrent, rpmcliProgressTotal,
497 fileSystem, internalState @*/
498 /*@modifies rpmcliHashesCurrent,
499 rpmcliProgressCurrent, rpmcliProgressTotal,
500 fileSystem, internalState @*/;
503 * Install source rpm package.
504 * @param ts transaction set
505 * @param arg source rpm file name
506 * @retval specFilePtr address of (installed) spec file name
508 * @return 0 on success
510 int rpmInstallSource(rpmts ts, const char * arg,
511 /*@null@*/ /*@out@*/ const char ** specFilePtr,
512 /*@null@*/ /*@out@*/ const char ** cookie)
513 /*@globals rpmGlobalMacroContext,
514 fileSystem, internalState@*/
515 /*@modifies ts, *specFilePtr, *cookie, rpmGlobalMacroContext,
516 fileSystem, internalState @*/;
519 * Describe database command line requests.
521 struct rpmInstallArguments_s {
522 rpmtransFlags transFlags;
523 rpmprobFilterFlags probFilter;
524 rpmInstallInterfaceFlags installInterfaceFlags;
525 rpmEraseInterfaceFlags eraseInterfaceFlags;
526 rpmQueryFlags qva_flags; /*!< from --nodigest/--nosignature */
527 uint_32 rbtid; /*!< from --rollback */
531 /*@owned@*/ /*@null@*/
532 rpmRelocation * relocations;
535 /*@observer@*/ /*@null@*/
536 const char * rootdir;
540 * Install/upgrade/freshen binary rpm package.
541 * @param ts transaction set
542 * @param ia mode flags and parameters
543 * @param fileArgv array of package file names (NULL terminated)
544 * @return 0 on success
546 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia,
547 /*@null@*/ const char ** fileArgv)
548 /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext,
549 fileSystem, internalState@*/
550 /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
551 fileSystem, internalState @*/;
554 * Erase binary rpm package.
555 * @param ts transaction set
556 * @param ia control args/bits
557 * @param argv array of package file names (NULL terminated)
558 * @return 0 on success
560 int rpmErase(rpmts ts, const struct rpmInstallArguments_s * ia,
561 /*@null@*/ const char ** argv)
562 /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
563 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
566 * A rollback transaction id element.
569 typedef /*@abstract@*/ struct IDT_s {
570 unsigned int instance; /*!< installed package transaction id. */
571 /*@owned@*/ /*@null@*/
572 const char * key; /*! removed package file name. */
573 Header h; /*!< removed package header. */
575 uint_32 u32; /*!< install/remove transaction id */
581 * A rollback transaction id index.
583 typedef /*@abstract@*/ struct IDTindex_s {
584 int delta; /*!< no. elements to realloc as a chunk. */
585 int size; /*!< size of id index element. */
586 int alloced; /*!< current number of elements allocated. */
587 int nidt; /*!< current number of elements initialized. */
588 /*@only@*/ /*@null@*/
589 IDT idt; /*!< id index elements. */
594 * @param idtx id index
595 * @return NULL always
598 IDTX IDTXfree(/*@only@*/ /*@null@*/ IDTX idtx)
599 /*@modifies idtx @*/;
603 * @return new id index
610 * Insure that index has room for "need" elements.
611 * @param idtx id index
612 * @param need additional no. of elements needed
613 * @return id index (with room for "need" elements)
615 /*@only@*/ /*@null@*/
616 IDTX IDTXgrow(/*@only@*/ /*@null@*/ IDTX idtx, int need)
617 /*@modifies idtx @*/;
620 * Sort tag (instance,value) pairs.
621 * @param idtx id index
624 /*@only@*/ /*@null@*/
625 IDTX IDTXsort(/*@only@*/ /*@null@*/ IDTX idtx)
626 /*@modifies idtx @*/;
629 * Load tag (instance,value) pairs from rpm databse, and return sorted id index.
630 * @param ts transaction set
634 /*@only@*/ /*@null@*/
635 IDTX IDTXload(rpmts ts, rpmTag tag)
636 /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
637 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
640 * Load tag (instance,value) pairs from packages, and return sorted id index.
641 * @param ts transaction set
642 * @param globstr glob expression
646 /*@only@*/ /*@null@*/
647 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag)
648 /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
649 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
652 * Rollback transactions, erasing new, reinstalling old, package(s).
653 * @param ts transaction set
654 * @param ia mode flags and parameters
655 * @param argv array of arguments (NULL terminated)
656 * @return 0 on success
658 int rpmRollback(rpmts ts, struct rpmInstallArguments_s * ia,
659 /*@null@*/ const char ** argv)
660 /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext,
661 fileSystem, internalState @*/
662 /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
663 fileSystem, internalState @*/;
668 extern struct rpmInstallArguments_s rpmIArgs;
673 extern struct poptOption rpmInstallPoptTable[];
676 /* ==================================================================== */
679 /* --- database modes */
682 * Describe database command line requests.
684 struct rpmDatabaseArguments_s {
685 int init; /*!< from --initdb */
686 int rebuild; /*!< from --rebuilddb */
687 int verify; /*!< from --verifydb */
693 extern struct rpmDatabaseArguments_s rpmDBArgs;
698 extern struct poptOption rpmDatabasePoptTable[];
701 /* ==================================================================== */
706 * Import public key packet(s).
707 * @todo Implicit --update policy for gpg-pubkey headers.
708 * @param ts transaction set
709 * @param pkt pgp pubkey packet(s)
710 * @param pktlen pgp pubkey length
711 * @return 0 on success
713 int rpmcliImportPubkey(const rpmts ts,
714 const unsigned char * pkt, ssize_t pktlen)
715 /*@globals RPMVERSION, rpmGlobalMacroContext,
716 fileSystem, internalState @*/
717 /*@modifies ts, rpmGlobalMacroContext,
718 fileSystem, internalState @*/;
721 * Bit(s) to control rpmReSign() operation.
724 typedef enum rpmSignFlags_e {
726 RPMSIGN_CHK_SIGNATURE = 'K', /*!< from --checksig */
727 RPMSIGN_NEW_SIGNATURE = 'R', /*!< from --resign */
728 RPMSIGN_ADD_SIGNATURE = 'A', /*!< from --addsign */
729 RPMSIGN_IMPORT_PUBKEY = 'I', /*!< from --import */
736 extern struct poptOption rpmSignPoptTable[];
739 * Create/Modify/Check elements from signature header.
740 * @param ts transaction set
741 * @param qva mode flags and parameters
742 * @param argv array of arguments (NULL terminated)
743 * @return 0 on success
745 int rpmcliSign(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
746 /*@globals RPMVERSION, rpmGlobalMacroContext,
747 fileSystem, internalState @*/
748 /*@modifies ts, qva, rpmGlobalMacroContext,
749 fileSystem, internalState @*/;
757 #endif /* H_RPMCLI */