#include "xauth.h"
char *ProgramName;
int verbose = -1;
Bool ignore_locks = False;
Bool break_locks = False;
Bool no_name_lookups = False;
static char *authfilename = NULL;
static char *defcmds[] = { "source", "-", NULL };
static int ndefcmds = 2;
static char *defsource = "(stdin)";
static void
usage(void)
{
static char *prefixmsg[] = {
"",
"where options include:",
" -f authfilename name of authority file to use",
" -v turn on extra messages",
" -q turn off extra messages",
" -i ignore locks on authority file",
" -b break locks on authority file",
"",
"and commands have the following syntax:",
"",
NULL };
static char *suffixmsg[] = {
"A dash may be used with the \"merge\" and \"source\" to read from the",
"standard input. Commands beginning with \"n\" use numeric format.",
"",
NULL };
char **msg;
fprintf (stderr, "usage: %s [-options ...] [command arg ...]\n",
ProgramName);
for (msg = prefixmsg; *msg; msg++) {
fprintf (stderr, "%s\n", *msg);
}
print_help (stderr, NULL, " ");
fprintf (stderr, "\n");
for (msg = suffixmsg; *msg; msg++) {
fprintf (stderr, "%s\n", *msg);
}
exit (1);
}
int
main(int argc, char *argv[])
{
int i;
char *sourcename = defsource;
char **arglist = defcmds;
int nargs = ndefcmds;
int status;
ProgramName = argv[0];
for (i = 1; i < argc; i++) {
char *arg = argv[i];
if (arg[0] == '-') {
char *flag;
for (flag = (arg + 1); *flag; flag++) {
switch (*flag) {
case 'f':
if (++i >= argc) usage ();
authfilename = argv[i];
continue;
case 'v':
verbose = 1;
continue;
case 'q':
verbose = 0;
continue;
case 'b':
break_locks = True;
continue;
case 'i':
ignore_locks = True;
continue;
case 'n':
no_name_lookups = True;
continue;
default:
usage ();
}
}
} else {
sourcename = "(argv)";
nargs = argc - i;
arglist = argv + i;
if (verbose == -1) verbose = 0;
break;
}
}
if (verbose == -1) {
verbose = (isatty(fileno(stdout)) != 0);
}
if (!authfilename) {
authfilename = XauFileName ();
if (!authfilename) {
fprintf (stderr,
"%s: unable to generate an authority file name\n",
ProgramName);
exit (1);
}
}
if (auth_initialize (authfilename) != 0) {
exit (1);
}
status = process_command (sourcename, 1, nargs, arglist);
(void) auth_finalize ();
exit ((status != 0) ? 1 : 0);
}