diff options
Diffstat (limited to 'lib/tre.c')
-rw-r--r-- | lib/tre.c | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/lib/tre.c b/lib/tre.c deleted file mode 100644 index eda4181b5..000000000 --- a/lib/tre.c +++ /dev/null @@ -1,142 +0,0 @@ -#include "system.h" - -#define _RPMSX_INTERNAL -#include <rpmsx.h> -#include <popt.h> - -#include "debug.h" - -static int add_assoc = 1; - -/* - * Command-line options. - */ -static int change = 1; -static int quiet = 0; -#define QPRINTF(args...) do { if (!quiet) printf(args); } while (0) -static int use_stdin = 0; -static int verbose = 0; -static int warn_no_match = 0; -static char *rootpath = NULL; -static int rootpathlen = 0; - -static struct poptOption optionsTable[] = { - { "debug", 'd', POPT_ARG_VAL, &_rpmsx_debug, -1, - N_("show what specification matched each file"), NULL }, - { "nochange", 'n', POPT_ARG_VAL, &change, 0, - N_("do not change any file labels"), NULL }, - { "quiet", 'q', POPT_ARG_VAL, &quiet, 1, - N_("be quiet (suppress non-error output)"), NULL }, - { "root", 'r', POPT_ARG_STRING|POPT_ARGFLAG_SHOW_DEFAULT, &rootpath, 0, - N_("use an alternate root path"), N_("ROOT") }, - { "stdin", 's', POPT_ARG_VAL, &use_stdin, 1, - N_("use stdin for a list of files instead of searching a partition"), NULL }, - { "verbose", 'v', POPT_ARG_VAL, &warn_no_match, 1, - N_("show changes in file labels"), NULL }, - { "warn", 'W', POPT_ARG_VAL, &warn_no_match, 1, - N_("warn about entries that have no matching file"), NULL }, - - POPT_AUTOHELP - POPT_TABLEEND -}; - -int main(int argc, char **argv) -{ - poptContext optCon; - const char ** av; - const char * arg; - rpmsx sx; - int ec = EXIT_FAILURE; /* assume failure. */ - int rc; - int i; - -#if HAVE_MCHECK_H && HAVE_MTRACE - /*@-noeffect@*/ - mtrace(); /* Trace malloc only if MALLOC_TRACE=mtrace-output-file. */ - /*@=noeffect@*/ -#endif - - setprogname(argv[0]); /* Retrofit glibc __progname */ - /* XXX glibc churn sanity */ - if (__progname == NULL) { - if ((__progname = strrchr(argv[0], '/')) != NULL) __progname++; - else __progname = argv[0]; - } - - (void) setlocale(LC_ALL, "" ); - (void) bindtextdomain(PACKAGE, LOCALEDIR); - (void) textdomain(PACKAGE); - - optCon = poptGetContext(__progname, argc, (const char **)argv, optionsTable, 0); - - /* Process all options, whine if unknown. */ - while ((rc = poptGetNextOpt(optCon)) > 0) { - switch (rc) { - default: -/*@-nullpass@*/ - fprintf(stderr, _("%s: option table misconfigured (%d)\n"), - __progname, rc); -/*@=nullpass@*/ - goto exit; - /*@notreached@*/ /*@switchbreak@*/ break; - } - } - - if (rc < -1) { -/*@-nullpass@*/ - fprintf(stderr, "%s: %s: %s\n", __progname, - poptBadOption(optCon, POPT_BADOPTION_NOALIAS), - poptStrerror(rc)); -/*@=nullpass@*/ - goto exit; - } - - /* trim trailing /, if present */ - if (rootpath != NULL) { - rootpathlen = strlen(rootpath); - while (rootpath[rootpathlen - 1] == '/') - rootpath[--rootpathlen] = 0; - } - - av = poptGetArgs(optCon); - - /* Parse the specification file. */ - sx = rpmsxNew(NULL); - - if (_rpmsx_debug) { - sx = rpmsxInit(sx, 1); - if (sx != NULL) - while ((i = rpmsxNext(sx)) >= 0) { - const char * pattern = rpmsxPattern(sx); - const char * type = rpmsxType(sx); - const char * context = rpmsxContext(sx); - - fprintf(stderr, "%5d: %s\t%s\t%s\n", i, - pattern, (type ? type : ""), context); - } - } - - if (av != NULL) - while ((arg = *av++) != NULL) { - const char * context = rpmsxFContext(sx, arg, S_IFREG); - fprintf(stderr, "%s: %s\n", arg, context); - } - - sx = rpmsxFree(sx); - - /* - * Apply the specifications to the file systems. - */ - ec = 0; - -exit: - optCon = poptFreeContext(optCon); - -#if HAVE_MCHECK_H && HAVE_MTRACE - /*@-noeffect@*/ - muntrace(); /* Trace malloc only if MALLOC_TRACE=mtrace-output-file. */ - /*@=noeffect@*/ -#endif - - return ec; -} |