186 lines
5.1 KiB
C
186 lines
5.1 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
|
*
|
|
* These libraries and programs are free software; you can
|
|
* redistribute them and/or modify them under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* These libraries and programs are distributed in the hope that
|
|
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU Lesser General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with these libraries and programs; if not, write
|
|
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
* Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/*
|
|
* $TOG: ttauth.c /main/1 1999/08/30 10:46:20 mgreess $
|
|
*
|
|
* xauth - manipulate authorization file
|
|
*
|
|
*
|
|
Copyright 1989, 1998 The Open Group
|
|
|
|
All Rights Reserved.
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
Except as contained in this notice, the name of The Open Group shall not be
|
|
used in advertising or otherwise to promote the sale, use or other dealings
|
|
in this Software without prior written authorization from The Open Group.
|
|
* *
|
|
* Original Author of "xauth" : Jim Fulton, MIT X Consortium
|
|
* Modified into "iceauth" : Ralph Mor, X Consortium
|
|
* Modified into "ttauth" : Mitch Greess, Solutions Atlantic
|
|
*/
|
|
|
|
#include "ttauth.h"
|
|
#include "Tt/tt_c.h"
|
|
|
|
|
|
/*
|
|
* global data
|
|
*/
|
|
char *ProgramName; /* argv[0], set at top of main() */
|
|
int verbose = -1; /* print certain messages */
|
|
Bool ignore_locks = False; /* for error recovery */
|
|
Bool break_locks = False; /* for error recovery */
|
|
|
|
/*
|
|
* local data
|
|
*/
|
|
|
|
static char *authfilename = NULL; /* filename of cookie file */
|
|
static char *defcmds[] = { "source", "-", NULL }; /* default command */
|
|
static int ndefcmds = 2;
|
|
static char *defsource = "(stdin)";
|
|
|
|
/*
|
|
* utility routines
|
|
*/
|
|
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, " "); /* match prefix indentation */
|
|
fprintf (stderr, "\n");
|
|
for (msg = suffixmsg; *msg; msg++) {
|
|
fprintf (stderr, "%s\n", *msg);
|
|
}
|
|
exit (1);
|
|
}
|
|
|
|
|
|
/*
|
|
* The main routine - parses command line and calls action procedures
|
|
*/
|
|
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': /* -f authfilename */
|
|
if (++i >= argc) usage ();
|
|
authfilename = argv[i];
|
|
continue;
|
|
case 'v': /* -v */
|
|
verbose = 1;
|
|
continue;
|
|
case 'q': /* -q */
|
|
verbose = 0;
|
|
continue;
|
|
case 'b': /* -b */
|
|
break_locks = True;
|
|
continue;
|
|
case 'i': /* -i */
|
|
ignore_locks = True;
|
|
continue;
|
|
default:
|
|
usage ();
|
|
}
|
|
}
|
|
} else {
|
|
sourcename = "(argv)";
|
|
nargs = argc - i;
|
|
arglist = argv + i;
|
|
if (verbose == -1) verbose = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (verbose == -1) { /* set default, don't junk stdout */
|
|
verbose = (isatty(fileno(stdout)) != 0);
|
|
}
|
|
|
|
if (!authfilename) {
|
|
authfilename = tt_AuthFileName (); /* static name, do not free */
|
|
if (!authfilename) {
|
|
fprintf (stderr,
|
|
"%s: unable to generate an authority file name\n",
|
|
ProgramName);
|
|
exit (1);
|
|
}
|
|
}
|
|
if (auth_initialize (authfilename) != 0) {
|
|
/* error message printed in auth_initialize */
|
|
exit (1);
|
|
}
|
|
|
|
status = process_command (sourcename, 1, nargs, arglist);
|
|
|
|
(void) auth_finalize ();
|
|
exit ((status != 0) ? 1 : 0);
|
|
}
|