79 lines
2.2 KiB
C
79 lines
2.2 KiB
C
/*
|
|
* args.c --
|
|
*
|
|
* Procedures to assist in command-line argument processing.
|
|
*
|
|
* *********************************************************************
|
|
* * Copyright (C) 1985, 1990 Regents of the University of California. *
|
|
* * Permission to use, copy, modify, and distribute this *
|
|
* * software and its documentation for any purpose and without *
|
|
* * fee is hereby granted, provided that the above copyright *
|
|
* * notice appear in all copies. The University of California *
|
|
* * makes no representations about the suitability of this *
|
|
* * software for any purpose. It is provided "as is" without *
|
|
* * express or implied warranty. Export of this software outside *
|
|
* * of the United States of America may require an export license. *
|
|
* *********************************************************************
|
|
*/
|
|
|
|
#ifndef lint
|
|
static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/utils/args.c,v 1.1.1.1 2008/02/03 20:43:50 tim Exp $";
|
|
#endif /* not lint */
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "utils/magic.h"
|
|
#include "utils/utils.h"
|
|
|
|
/* C99 compat */
|
|
#include "textio/textio.h"
|
|
|
|
/*
|
|
* ----------------------------------------------------------------------------
|
|
*
|
|
* ArgStr --
|
|
*
|
|
* Process a single argument that is supposed to have a string value.
|
|
* A string argument can appear in two ways:
|
|
*
|
|
* -avalue (a single element of argv)
|
|
* -a value (two elements of argv)
|
|
*
|
|
* Both are recognized.
|
|
*
|
|
* Results:
|
|
* Returns a pointer to the value, or NULL if there wasn't one.
|
|
*
|
|
* Side effects:
|
|
* Complains if there was no value.
|
|
* Leaves *pargc and *pargv updated if the string was in the
|
|
* next element of argv.
|
|
*
|
|
* ----------------------------------------------------------------------------
|
|
*/
|
|
|
|
char *
|
|
ArgStr(
|
|
int *pargc,
|
|
char ***pargv,
|
|
const char *argType)/* For error messages: what the following string is
|
|
* supposed to be interpreted as.
|
|
*/
|
|
{
|
|
char **argv = *pargv;
|
|
char *result;
|
|
|
|
if (argv[0][2])
|
|
return (&argv[0][2]);
|
|
|
|
if ((*pargc)-- > 0)
|
|
{
|
|
result = *++argv;
|
|
*pargv = argv;
|
|
return (result);
|
|
}
|
|
|
|
TxError("-%c requires a following %s\n", argv[0][1], argType);
|
|
return (NULL);
|
|
}
|