10 #define _RPMPGP_INTERNAL
11 #if defined(WITH_BEECRYPT)
12 #define _RPMBC_INTERNAL
15 #if defined(WITH_GCRYPT)
16 #define _RPMGC_INTERNAL
20 #define _RPMNSS_INTERNAL
24 #define _RPMSSL_INTERNAL
31 #include <rpmpython.h>
39 #if !defined(POPT_ARGFLAG_TOGGLE)
40 #define POPT_ARGFLAG_TOGGLE 0
42 #define POPT_SHOWVERSION -999
43 #define POPT_UNDEFINE -994
44 #define POPT_CRYPTO -993
117 N_(
"MD2 digest (RFC-1319)"), NULL },
119 N_(
"MD4 digest"), NULL },
121 N_(
"MD5 digest (RFC-1321)"), NULL },
123 N_(
"SHA-1 digest (FIPS-180-1)"), NULL },
125 N_(
"SHA-224 digest (FIPS-180-2)"), NULL },
127 N_(
"SHA-256 digest (FIPS-180-2)"), NULL },
129 N_(
"SHA-384 digest (FIPS-180-2)"), NULL },
131 N_(
"SHA-512 digest (FIPS-180-2)"), NULL },
133 N_(
"SALSA-10 hash"), NULL },
135 N_(
"SALSA-20 hash"), NULL },
137 N_(
"RIPEMD-128 digest"), NULL },
139 N_(
"RIPEMD-160 digest"), NULL },
141 N_(
"RIPEMD-256 digest"), NULL },
143 N_(
"RIPEMD-320 digest"), NULL },
145 N_(
"TIGER digest"), NULL },
147 N_(
"CRC-32 checksum"), NULL },
149 N_(
"CRC-64 checksum"), NULL },
151 N_(
"ADLER-32 checksum"), NULL },
153 N_(
"Lookup3 hash"), NULL },
155 N_(
"No hash algorithm"), NULL },
157 N_(
"All hash algorithm(s)"), NULL },
187 enum poptCallbackReason reason,
188 const struct poptOption * opt,
const char * arg,
199 if (opt->arg == NULL)
213 if (*t ==
'-') *t =
'_';
231 if (*t ==
'-') *t =
'_';
245 {
const char *val =
rpmExpand(arg, NULL);
247 val_len = strlen(val);
248 if (val[val_len - 1] ==
'\n')
249 fwrite(val, val_len, 1, stdout);
251 fprintf(stdout,
"%s\n", val);
265 #if defined(WITH_BEECRYPT)
268 rpmlog(
RPMLOG_ERR,
"BeeCrypt (\"beecrypt\") based cryptography implementation not available\n");
273 #if defined(WITH_GCRYPT)
276 rpmlog(
RPMLOG_ERR,
"GCrypt (\"gcrypt\") based cryptography implementation not available\n");
281 #if defined(WITH_NSS)
284 rpmlog(
RPMLOG_ERR,
"Mozilla NSS (\"nss\") based cryptography implementation not available\n");
289 #if defined(WITH_SSL)
292 rpmlog(
RPMLOG_ERR,
"OpenSSL (\"openssl\") based cryptography implementation not available\n");
317 N_(
"FTS_COMFOLLOW: follow command line symlinks"), NULL },
319 N_(
"FTS_LOGICAL: logical walk"), NULL },
321 N_(
"FTS_NOCHDIR: don't change directories"), NULL },
323 N_(
"FTS_NOSTAT: don't get stat info"), NULL },
325 N_(
"FTS_PHYSICAL: physical walk"), NULL },
327 N_(
"FTS_SEEDOT: return dot and dot-dot"), NULL },
329 N_(
"FTS_XDEV: don't cross devices"), NULL },
331 N_(
"FTS_WHITEOUT: return whiteout information"), NULL },
339 { NULL,
'\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE,
343 {
"debug",
'd', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
__debug, -1,
344 N_(
"Debug generic operations"), NULL },
347 {
"define",
'D', POPT_ARG_STRING, NULL, (int)
'D',
348 N_(
"Define MACRO with value EXPR"),
349 N_(
"'MACRO EXPR'") },
351 N_(
"Undefine MACRO"),
353 {
"eval",
'E', POPT_ARG_STRING, NULL, (int)
'E',
354 N_(
"Print macro expansion of EXPR"),
358 N_(
"Read <FILE:...> instead of default file(s)"),
361 {
"rpmlua",
'\0', POPT_ARG_STRING, &
rpmluaFiles, 0,
362 N_(
"Read <FILE:...> instead of default RPM Lua file(s)"),
365 {
"rpmpopt",
'\0', POPT_ARG_STRING, NULL, 0,
366 N_(
"Read <FILE:...> instead of default POPT file(s)"),
370 {
"pipe",
'\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, &
rpmioPipeOutput, 0,
371 N_(
"Send stdout to CMD"),
373 {
"root",
'r', POPT_ARG_STRING|POPT_ARGFLAG_SHOW_DEFAULT, &
rpmioRootDir, 0,
374 N_(
"Use ROOT as top level directory"),
377 {
"quiet",
'\0', 0, NULL, (int)
'q',
378 N_(
"Provide less detailed output"), NULL},
379 {
"verbose",
'v', 0, NULL, (int)
'v',
380 N_(
"Provide more detailed output"), NULL},
382 N_(
"Print the version"), NULL },
384 #if defined(HAVE_LIBIO_H) && defined(_G_IO_IO_FILE_VERSION)
386 N_(
"Disable use of libio(3) API"), NULL},
389 {
"usecrypto",
'\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, NULL,
POPT_CRYPTO,
390 N_(
"Select cryptography implementation"),
393 {
"ardebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_ar_debug, -1,
394 N_(
"Debug ar archives"), NULL},
395 {
"avdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_av_debug, -1,
396 N_(
"Debug argv collections"), NULL},
397 {
"cpiodebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_cpio_debug, -1,
398 N_(
"Debug cpio archives"), NULL},
399 {
"davdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_dav_debug, -1,
400 N_(
"Debug WebDAV data stream"), NULL},
401 {
"ftpdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_ftp_debug, -1,
402 N_(
"Debug FTP/HTTP data stream"), NULL},
403 {
"ftsdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_fts_debug, -1,
404 N_(
"Debug Fts(3) traverse"), NULL},
405 {
"htdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_ht_debug, -1,
406 N_(
"Debug hash tables"), NULL},
407 {
"iosmdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_iosm_debug, -1,
408 N_(
"Debug I/O state machine"), NULL},
409 {
"miredebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_mire_debug, -1,
410 N_(
"Debug miRE patterns"), NULL},
411 {
"pgpdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_pgp_debug, -1,
412 N_(
"Debug PGP usage"), NULL},
413 {
"rpmiodebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_rpmio_debug, -1,
414 N_(
"Debug rpmio I/O"), NULL},
415 {
"rpmiobdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_rpmiob_debug, -1,
416 N_(
"Debug rpmio I/O buffers"), NULL},
417 {
"rpmficldebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmficl_debug, -1,
418 N_(
"Debug embedded FICL interpreter"), NULL},
419 {
"rpmjsdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmjs_debug, -1,
420 N_(
"Debug embedded JavaScript interpreter"), NULL},
422 {
"rpmluadebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_rpmlua_debug, -1,
423 N_(
"Debug embedded Lua interpreter"), NULL},
425 {
"rpmmgdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_rpmmg_debug, -1,
426 N_(
"Debug rpmmg magic"), NULL},
427 {
"rpmperldebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmperl_debug, -1,
428 N_(
"Debug embedded Perl interpreter"), NULL},
429 {
"rpmpythondebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmpython_debug, -1,
430 N_(
"Debug embedded Python interpreter"), NULL},
431 {
"rpmrubydebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmruby_debug, -1,
432 N_(
"Debug embedded Ruby interpreter"), NULL},
433 {
"rpmsqdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_rpmsq_debug, -1,
434 N_(
"Debug rpmsq Signal Queue"), NULL},
435 {
"rpmtcldebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmtcl_debug, -1,
436 N_(
"Debug embedded TCL interpreter"), NULL},
438 {
"rpmzqdebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_rpmzq_debug, -1,
439 N_(
"Debug rpmzq Job Queuing"), NULL},
441 {
"xardebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_xar_debug, -1,
442 N_(
"Debug xar archives"), NULL},
443 {
"tardebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_tar_debug, -1,
444 N_(
"Debug tar archives"), NULL},
446 N_(
"Display operation statistics"), NULL},
447 {
"urldebug",
'\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
_url_debug, -1,
448 N_(
"Debug URL cache handling"), NULL},
464 optCon = poptFreeContext(optCon);
466 #if defined(HAVE_MCHECK_H) && defined(HAVE_MTRACE)
475 static inline int checkfd(
const char * devnull,
int fdno,
int flags)
481 if (fstat(fdno, &sb) == -1 &&
errno == EBADF)
482 ret = (open(devnull, flags) == fdno) ? 1 : 2;
496 #if defined(HAVE_MCHECK_H) && defined(HAVE_MTRACE)
512 {
static const char _devnull[] =
"/dev/null";
513 #if defined(STDIN_FILENO)
514 (void)
checkfd(_devnull, STDIN_FILENO, O_RDONLY);
516 #if defined(STDOUT_FILENO)
517 (void)
checkfd(_devnull, STDOUT_FILENO, O_WRONLY);
519 #if defined(STDERR_FILENO)
520 (void)
checkfd(_devnull, STDERR_FILENO, O_WRONLY);
524 #if defined(ENABLE_NLS) && !defined(__LCLINT__)
532 if (optionsTable == NULL) {
540 for (i = 1; i < argc; i++) {
541 if (strcmp(argv[i],
"--rpmpopt") == 0 && i+1 < argc) {
545 else if (strncmp(argv[i],
"--rpmpopt=", 10) == 0) {
553 optCon = poptGetContext(
__progname, argc, (
const char **)argv, optionsTable, 0);
557 #if defined(RPM_VENDOR_OPENPKG) || \
558 !defined(POPT_ERROR_BADCONFIG)
563 for (path = path_buf; path != NULL && *path !=
'\0'; path = path_next) {
568 path_next = strchr(path,
':');
569 if (path_next != NULL && *path_next ==
':')
572 path_next = path + strlen(path);
577 if ((i =
rpmGlob(path, &ac, &av)) != 0)
581 for (i = 0; i < ac; i++) {
582 const char *fn = av[i];
586 rpmlog(
RPMLOG_WARNING,
"existing POPT configuration file \"%s\" considered INSECURE -- not loaded\n", fn);
590 (void)poptReadConfigFile(optCon, fn);
591 av[i] =
_free(av[i]);
595 path_buf =
_free(path_buf);
599 if ((xx = poptReadConfigFiles(optCon,
rpmpoptfiles)) != 0)
605 (void) poptReadDefaultConfig(optCon, 1);
611 while ((rc = poptGetNextOpt(optCon)) > 0) {
612 const char * optArg = poptGetOptArg(optCon);
614 optArg =
_free(optArg);
619 fprintf(stderr,
_(
"%s: option table misconfigured (%d)\n"),
631 poptBadOption(optCon, POPT_BADOPTION_NOALIAS),