Home | History | Annotate | Download | only in util
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License, Version 1.0 only
      6  * (the "License").  You may not use this file except in compliance
      7  * with the License.
      8  *
      9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10  * or http://www.opensolaris.org/os/licensing.
     11  * See the License for the specific language governing permissions
     12  * and limitations under the License.
     13  *
     14  * When distributing Covered Code, include this CDDL HEADER in each
     15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16  * If applicable, add the following below this CDDL HEADER, with the
     17  * fields enclosed by brackets "[]" replaced with your own identifying
     18  * information: Portions Copyright [yyyy] [name of copyright owner]
     19  *
     20  * CDDL HEADER END
     21  */
     22 /*
     23  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
     24  * Use is subject to license terms.
     25  */
     26 
     27 #ifndef _GETOPTSTR_H
     28 #define	_GETOPTSTR_H
     29 
     30 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     31 
     32 /*
     33  * Declarations for getoptstr().
     34  */
     35 
     36 #ifdef __cplusplus
     37 extern "C" {
     38 #endif
     39 
     40 
     41 #include <sys/types.h>
     42 
     43 
     44 
     45 /*
     46  * These macros are defined here so getoptstr() callers can handle spaces and
     47  * words consistently.
     48  */
     49 #define	ISSPACE(c)	((c) == ' ' || (c) == '\t')
     50 #define	SKIP_WORD(cp)	while (*cp != '\0' && !ISSPACE(*cp)) ++cp;
     51 #define	SKIP_SPC(cp)	while (ISSPACE(*cp)) ++cp;
     52 
     53 
     54 struct gos_params {
     55 	/* To be set before use. */
     56 	const char	*gos_opts;	/* String of acceptable options. */
     57 	const char	*gos_strp;	/* String of arguments to process. */
     58 
     59 	/* Publically readable. */
     60 	char		gos_last_opt;	/* Last option seen. */
     61 	const char	*gos_optargp;	/* Option argument. */
     62 	size_t		gos_optarglen;	/* Length of option argument. */
     63 	const char	*gos_errp;	/* Location of erroneous character. */
     64 
     65 	/* Private state. */
     66 	int		gos_pos;	/* Current position in the current */
     67 					/* word.  A la _pos in getopt(). */
     68 };
     69 
     70 
     71 void	getoptstr_init(struct gos_params *params);
     72 int	getoptstr(struct gos_params *params);
     73 
     74 
     75 
     76 #ifdef __cplusplus
     77 }
     78 #endif
     79 
     80 #endif /* _GETOPTSTR_H */
     81