dpdk-fm10k/lib/librte_eal/windows/include/getopt.h
Thomas Monjalon a083f8cc77 eal: move OS-specific sub-directories
Since the kernel modules are moved to kernel/ directory,
there is no need anymore for the sub-directory eal/ in
linux/, freebsd/ and windows/.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: David Marchand <david.marchand@redhat.com>
2020-03-31 13:08:55 +02:00

97 lines
2.3 KiB
C

/* SPDX-License-Identifier: BSD-2-Clause
* Copyright (c) 2000 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Dieter Baron and Thomas Klausner.
*/
/**
* @file
* getopt compat.
*
* This module provides getopt() and getopt_long().
*/
#ifndef _USUAL_GETOPT_H_
#define _USUAL_GETOPT_H_
#ifndef NEED_USUAL_GETOPT
#if !defined(HAVE_GETOPT_H) || !defined(HAVE_GETOPT) || \
!defined(HAVE_GETOPT_LONG)
#define NEED_USUAL_GETOPT
#endif
#endif
#ifndef NEED_USUAL_GETOPT
/* Use system getopt */
#ifdef RTE_TOOLCHAIN_GCC
#include_next <getopt.h>
#else
#include <getopt.h>
#endif
#else /* NEED_USUAL_GETOPT */
/* avoid name collision */
#define optarg usual_optarg
#define opterr usual_opterr
#define optind usual_optind
#define optopt usual_optopt
#define getopt(a, b, c) usual_getopt(a, b, c)
#define getopt_long(a, b, c, d, e) usual_getopt_long(a, b, c, d, e)
/** argument to current option, or NULL if it has none */
extern const char *optarg;
/** Current position in arg string. Starts from 1.
* Setting to 0 resets state.
*/
extern int optind;
/** whether getopt() should print error messages on problems. Default: 1. */
extern int opterr;
/** Option char which caused error */
extern int optopt;
/** long option takes no argument */
#define no_argument 0
/** long option requires argument */
#define required_argument 1
/** long option has optional argument */
#define optional_argument 2
/** Long option description */
struct option {
/** name of long option */
const char *name;
/**
* whether option takes an argument.
* One of no_argument, required_argument, and optional_argument.
*/
int has_arg;
/** if not NULL, set *flag to val when option found */
int *flag;
/** if flag not NULL, value to set *flag to; else return value */
int val;
};
/** Compat: getopt */
int getopt(int argc, char *argv[], const char *options);
/** Compat: getopt_long */
int getopt_long(int argc, char *argv[], const char *options,
const struct option *longopts, int *longindex);
/** Compat: getopt_long_only */
int getopt_long_only(int nargc, char *argv[], const char *options,
const struct option *long_options, int *idx);
#endif /* NEED_USUAL_GETOPT */
#endif /* !_USUAL_GETOPT_H_ */