diff --git a/include/getopt.h b/include/getopt.h new file mode 100644 index 00000000000..1687206d76d --- /dev/null +++ b/include/getopt.h @@ -0,0 +1,76 @@ +/**************************************************************************** + * include/getopt.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __INCLUDE_GETOPT_H +#define __INCLUDE_GETOPT_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +/**************************************************************************** + * Public Type Definitions + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +struct option +{ + FAR const char *name; + int has_arg; + FAR int *flag; + int val; +}; + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +int getopt_long(int argc, FAR char *const argv[], + FAR const char *shortopts, + FAR const struct option *longopts, + FAR int *longind); + +#undef EXTERN +#if defined(__cplusplus) +} +#endif + +#endif /* __INCLUDE_GETOPT_H */ diff --git a/libs/libc/unistd/lib_getopt.c b/libs/libc/unistd/lib_getopt.c index 56e1afe7aa5..4600a71c30d 100644 --- a/libs/libc/unistd/lib_getopt.c +++ b/libs/libc/unistd/lib_getopt.c @@ -40,7 +40,7 @@ #include #include -#include +#include #include /**************************************************************************** @@ -294,3 +294,11 @@ int getopt(int argc, FAR char * const argv[], FAR const char *optstring) g_binitialized = false; return ERROR; } + +int getopt_long(int argc, FAR char *const argv[], + FAR const char *shortopts, + FAR const struct option *longopts, + FAR int *longind) +{ + return getopt(argc, argv, shortopts); +}