diff options
Diffstat (limited to 'protocols/Telegram/libevent/WIN32-Code/getopt.c')
| -rw-r--r-- | protocols/Telegram/libevent/WIN32-Code/getopt.c | 149 | 
1 files changed, 149 insertions, 0 deletions
diff --git a/protocols/Telegram/libevent/WIN32-Code/getopt.c b/protocols/Telegram/libevent/WIN32-Code/getopt.c new file mode 100644 index 0000000000..0fcba5d915 --- /dev/null +++ b/protocols/Telegram/libevent/WIN32-Code/getopt.c @@ -0,0 +1,149 @@ +/*	$NetBSD: getopt.c,v 1.16 1999/12/02 13:15:56 kleink Exp $	*/ + +/* + * Copyright (c) 1987, 1993, 1994, 1995 + *	The Regents of the University of California.  All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. Neither the names of the copyright holders nor the names of its + *    contributors may be used to endorse or promote products derived from + *    this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS  + * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#if 0 +static char sccsid[] = "@(#)getopt.c	8.3 (Berkeley) 4/27/95"; +#endif + +#include <assert.h> +#include <errno.h> +#include <stdio.h> +#include <string.h> + +#define __P(x) x +#define _DIAGASSERT(x) assert(x) + +#ifdef __weak_alias +__weak_alias(getopt,_getopt); +#endif + + +int	opterr = 1,		/* if error message should be printed */ +	optind = 1,		/* index into parent argv vector */ +	optopt,			/* character checked for validity */ +	optreset;		/* reset getopt */ +char	*optarg;		/* argument associated with option */ + +static char * _progname __P((char *)); +int getopt_internal __P((int, char * const *, const char *)); + +static char * +_progname(nargv0) +	char * nargv0; +{ +	char * tmp; + +	_DIAGASSERT(nargv0 != NULL); + +	tmp = strrchr(nargv0, '/'); +	if (tmp) +		tmp++; +	else +		tmp = nargv0; +	return(tmp); +} + +#define	BADCH	(int)'?' +#define	BADARG	(int)':' +#define	EMSG	"" + +/* + * getopt -- + *	Parse argc/argv argument vector. + */ +int +getopt(nargc, nargv, ostr) +	int nargc; +	char * const nargv[]; +	const char *ostr; +{ +	static char *__progname = 0; +	static char *place = EMSG;		/* option letter processing */ +	char *oli;				/* option letter list index */ +        __progname = __progname?__progname:_progname(*nargv); + +	_DIAGASSERT(nargv != NULL); +	_DIAGASSERT(ostr != NULL); + +	if (optreset || !*place) {		/* update scanning pointer */ +		optreset = 0; +		if (optind >= nargc || *(place = nargv[optind]) != '-') { +			place = EMSG; +			return (-1); +		} +		if (place[1] && *++place == '-'	/* found "--" */ +		    && place[1] == '\0') { +			++optind; +			place = EMSG; +			return (-1); +		} +	}					/* option letter okay? */ +	if ((optopt = (int)*place++) == (int)':' || +	    !(oli = strchr(ostr, optopt))) { +		/* +		 * if the user didn't specify '-' as an option, +		 * assume it means -1. +		 */ +		if (optopt == (int)'-') +			return (-1); +		if (!*place) +			++optind; +		if (opterr && *ostr != ':') +			(void)fprintf(stderr, +			    "%s: illegal option -- %c\n", __progname, optopt); +		return (BADCH); +	} +	if (*++oli != ':') {			/* don't need argument */ +		optarg = NULL; +		if (!*place) +			++optind; +	} +	else {					/* need an argument */ +		if (*place)			/* no white space */ +			optarg = place; +		else if (nargc <= ++optind) {	/* no arg */ +			place = EMSG; +			if (*ostr == ':') +				return (BADARG); +			if (opterr) +				(void)fprintf(stderr, +				    "%s: option requires an argument -- %c\n", +				    __progname, optopt); +			return (BADCH); +		} +	 	else				/* white space */ +			optarg = nargv[optind]; +		place = EMSG; +		++optind; +	} +	return (optopt);			/* dump back option letter */ +} +  | 
