libc: implement getopt_long partially
only the short option is supported now Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
af53bdb048
commit
759b63d4be
2 changed files with 85 additions and 1 deletions
76
include/getopt.h
Normal file
76
include/getopt.h
Normal file
|
|
@ -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 <nuttx/config.h>
|
||||
#include <nuttx/compiler.h>
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
/****************************************************************************
|
||||
* 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 */
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
#include <nuttx/config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <unistd.h>
|
||||
#include <getopt.h>
|
||||
#include <string.h>
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue