Add Windows support for C-API and Runtime API libraries and examples. (#379)
* Add Windows support for C-API and Runtime API libraries and examples. Signed-off-by: Wu Zhongmin <vwzm@live.com> Signed-off-by: Xiaokang Qin <xiaokang.qxk@antgroup.com> * Address the review comments Signed-off-by: Xiaokang Qin <xiaokang.qxk@antgroup.com> * Rewrite the the bh_getopt to make it avaliable for more kinds of options Signed-off-by: Wu Zhongmin <vwzm@live.com> Signed-off-by: Xiaokang Qin <xiaokang.qxk@antgroup.com> * Add the license header Signed-off-by: Xiaokang Qin <xiaokang.qxk@antgroup.com> Co-authored-by: Zhongmin Wu <vwzm@live.com>
This commit is contained in:
60
core/shared/utils/uncommon/bh_getopt.c
Normal file
60
core/shared/utils/uncommon/bh_getopt.c
Normal file
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Ant Financial Services Group. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifndef __GNUC__
|
||||
|
||||
#include "bh_getopt.h"
|
||||
#include <string.h>
|
||||
|
||||
char* optarg = NULL;
|
||||
int optind = 1;
|
||||
|
||||
int getopt(int argc, char *const argv[], const char *optstring)
|
||||
{
|
||||
static int sp = 1;
|
||||
int c;
|
||||
int opt;
|
||||
char *p;
|
||||
|
||||
if (sp == 1) {
|
||||
if ((optind >= argc) || (argv[optind][0] != '-') || (argv[optind][1] == 0)){
|
||||
return -1;
|
||||
} else if (!strcmp(argv[optind], "--")) {
|
||||
optind++;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
opt = argv[optind][sp];
|
||||
p = strchr(optstring, opt);
|
||||
if (opt == ':' || p == NULL) {
|
||||
printf("illegal option : '-%c'\n", opt);
|
||||
if ( argv[optind][++sp] == '\0') {
|
||||
optind ++;
|
||||
sp = 1;
|
||||
}
|
||||
return ('?');
|
||||
}
|
||||
if (p[1] == ':') {
|
||||
if (argv[optind][sp + 1] != '\0')
|
||||
optarg = &argv[optind++][sp + 1];
|
||||
else if (++optind >= argc) {
|
||||
printf("option '-%c' requires an argument :\n", opt);
|
||||
sp = 1;
|
||||
return ('?');
|
||||
} else {
|
||||
optarg = argv[optind++];
|
||||
}
|
||||
sp = 1;
|
||||
} else {
|
||||
if (argv[optind][++sp] == '\0') {
|
||||
sp = 1;
|
||||
optind++;
|
||||
}
|
||||
optarg = NULL;
|
||||
}
|
||||
return (opt);
|
||||
}
|
||||
#endif
|
||||
27
core/shared/utils/uncommon/bh_getopt.h
Normal file
27
core/shared/utils/uncommon/bh_getopt.h
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Ant Financial Services Group. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#ifdef __GNUC__
|
||||
#include <getopt.h>
|
||||
#endif
|
||||
#ifndef __GNUC__
|
||||
#ifndef GETOPT_H__
|
||||
#define GETOPT_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
|
||||
int getopt(int argc, char *const argv[], const char *optstring);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* end of GETOPT_H__ */
|
||||
#endif /* end of __GNUC__ */
|
||||
Reference in New Issue
Block a user