New ACC version.
This commit is contained in:
+85
-55
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#ifndef __ACC_H_INCLUDED
|
#ifndef __ACC_H_INCLUDED
|
||||||
#define __ACC_H_INCLUDED 1
|
#define __ACC_H_INCLUDED 1
|
||||||
#define ACC_VERSION 20170301L
|
#define ACC_VERSION 20200116L
|
||||||
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
||||||
# define __CYGWIN__ __CYGWIN32__
|
# define __CYGWIN__ __CYGWIN32__
|
||||||
#endif
|
#endif
|
||||||
@@ -52,6 +52,8 @@
|
|||||||
# error "__cplusplus"
|
# error "__cplusplus"
|
||||||
# elif (__cplusplus < 199711L)
|
# elif (__cplusplus < 199711L)
|
||||||
# define ACC_LANG_CXX 1
|
# define ACC_LANG_CXX 1
|
||||||
|
# elif (__cplusplus >= 201402L)
|
||||||
|
# define ACC_LANG_CXX __cplusplus
|
||||||
# elif defined(_MSC_VER) && defined(_MSVC_LANG) && (_MSVC_LANG+0 >= 201402L) && 1
|
# elif defined(_MSC_VER) && defined(_MSVC_LANG) && (_MSVC_LANG+0 >= 201402L) && 1
|
||||||
# define ACC_LANG_CXX _MSVC_LANG
|
# define ACC_LANG_CXX _MSVC_LANG
|
||||||
# else
|
# else
|
||||||
@@ -66,6 +68,33 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(ACC_CFG_ASSERT_LANG_ASSEMBLER) && (ACC_CFG_ASSERT_LANG_ASSEMBLER+0)
|
||||||
|
# if !(ACC_LANG_ASSEMBLER)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_ASSEMBLER"
|
||||||
|
# endif
|
||||||
|
# if (ACC_CFG_ASSERT_LANG_ASSEMBLER > 1) && (ACC_CFG_ASSERT_LANG_ASSEMBLER < ACC_LANG_ASSEMBLER)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_ASSEMBLER standard min version"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if defined(ACC_CFG_ASSERT_LANG_C) && (ACC_CFG_ASSERT_LANG_C+0)
|
||||||
|
# if !(ACC_LANG_C)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_C"
|
||||||
|
# endif
|
||||||
|
# if (ACC_CFG_ASSERT_LANG_C > 1) && (ACC_CFG_ASSERT_LANG_C < ACC_LANG_C)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_C standard min version"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if defined(ACC_CFG_ASSERT_LANG_CXX) && (ACC_CFG_ASSERT_LANG_CXX+0)
|
||||||
|
# if !(ACC_LANG_CXX)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_CXX"
|
||||||
|
# endif
|
||||||
|
# if !defined(__cplusplus)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_CXX __cplusplus"
|
||||||
|
# endif
|
||||||
|
# if (ACC_CFG_ASSERT_LANG_CXX > 1) && (ACC_CFG_ASSERT_LANG_CXX < ACC_LANG_CXX)
|
||||||
|
# error "ACC_CFG_ASSERT_LANG_CXX standard min version"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
#if !defined(ACC_CFG_NO_DISABLE_WUNDEF)
|
#if !defined(ACC_CFG_NO_DISABLE_WUNDEF)
|
||||||
#if defined(__ARMCC_VERSION)
|
#if defined(__ARMCC_VERSION)
|
||||||
# pragma diag_suppress 193
|
# pragma diag_suppress 193
|
||||||
@@ -523,6 +552,9 @@
|
|||||||
# if defined(_AIX) || defined(__AIX__) || defined(__aix__)
|
# if defined(_AIX) || defined(__AIX__) || defined(__aix__)
|
||||||
# define ACC_OS_POSIX_AIX 1
|
# define ACC_OS_POSIX_AIX 1
|
||||||
# define ACC_INFO_OS_POSIX "aix"
|
# define ACC_INFO_OS_POSIX "aix"
|
||||||
|
# elif defined(__DragonFly__)
|
||||||
|
# define ACC_OS_POSIX_DRAGONFLY 1
|
||||||
|
# define ACC_INFO_OS_POSIX "dragonfly"
|
||||||
# elif defined(__FreeBSD__)
|
# elif defined(__FreeBSD__)
|
||||||
# define ACC_OS_POSIX_FREEBSD 1
|
# define ACC_OS_POSIX_FREEBSD 1
|
||||||
# define ACC_INFO_OS_POSIX "freebsd"
|
# define ACC_INFO_OS_POSIX "freebsd"
|
||||||
@@ -965,6 +997,9 @@
|
|||||||
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
|
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
|
||||||
# define ACC_ARCH_MCS51 1
|
# define ACC_ARCH_MCS51 1
|
||||||
# define ACC_INFO_ARCH "mcs51"
|
# define ACC_INFO_ARCH "mcs51"
|
||||||
|
#elif defined(__microblaze__) || defined(__MICROBLAZE__)
|
||||||
|
# define ACC_ARCH_MICROBLAZE 1
|
||||||
|
# define ACC_INFO_ARCH "microblaze"
|
||||||
#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
|
#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
|
||||||
# define ACC_ARCH_MIPS 1
|
# define ACC_ARCH_MIPS 1
|
||||||
# define ACC_INFO_ARCH "mips"
|
# define ACC_INFO_ARCH "mips"
|
||||||
@@ -1563,7 +1598,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#if !defined(ACC_UNUSED_LABEL)
|
#if !defined(ACC_UNUSED_LABEL)
|
||||||
# if (ACC_CC_CLANG >= 0x020800ul)
|
# if (ACC_CC_CLANG >= 0x020800ul)
|
||||||
# define ACC_UNUSED_LABEL(l) (__acc_gnuc_extension__ ((void) ((const void *) &&l)))
|
# define ACC_UNUSED_LABEL(l) (__acc_gnuc_extension__ ((void) ACC_STATIC_CAST(const void *, &&l)))
|
||||||
# elif (ACC_CC_ARMCC || ACC_CC_CLANG || ACC_CC_INTELC || ACC_CC_WATCOMC)
|
# elif (ACC_CC_ARMCC || ACC_CC_CLANG || ACC_CC_INTELC || ACC_CC_WATCOMC)
|
||||||
# define ACC_UNUSED_LABEL(l) if __acc_cte(0) goto l
|
# define ACC_UNUSED_LABEL(l) if __acc_cte(0) goto l
|
||||||
# else
|
# else
|
||||||
@@ -2040,7 +2075,11 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if !defined(ACC_COMPILE_TIME_ASSERT_HEADER)
|
#if !defined(ACC_COMPILE_TIME_ASSERT_HEADER)
|
||||||
# if (ACC_CC_AZTECC || ACC_CC_ZORTECHC)
|
# if (ACC_LANG_CXX >= 201103L)
|
||||||
|
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) static_assert(e, #e);
|
||||||
|
# elif (ACC_LANG_C >= 201112L)
|
||||||
|
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) _Static_assert(e, #e);
|
||||||
|
# elif (ACC_CC_AZTECC || ACC_CC_ZORTECHC)
|
||||||
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) ACC_EXTERN_C_BEGIN extern int __ACC_CTA_NAME(acc_cta__)[1-!(e)]; ACC_EXTERN_C_END
|
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) ACC_EXTERN_C_BEGIN extern int __ACC_CTA_NAME(acc_cta__)[1-!(e)]; ACC_EXTERN_C_END
|
||||||
# elif (ACC_CC_DMC || ACC_CC_SYMANTECC)
|
# elif (ACC_CC_DMC || ACC_CC_SYMANTECC)
|
||||||
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) ACC_EXTERN_C_BEGIN extern int __ACC_CTA_NAME(acc_cta__)[1u-2*!(e)]; ACC_EXTERN_C_END
|
# define ACC_COMPILE_TIME_ASSERT_HEADER(e) ACC_EXTERN_C_BEGIN extern int __ACC_CTA_NAME(acc_cta__)[1u-2*!(e)]; ACC_EXTERN_C_END
|
||||||
@@ -2055,7 +2094,11 @@ extern "C" {
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#if !defined(ACC_COMPILE_TIME_ASSERT)
|
#if !defined(ACC_COMPILE_TIME_ASSERT)
|
||||||
# if (ACC_CC_AZTECC)
|
# if (ACC_LANG_CXX >= 201103L)
|
||||||
|
# define ACC_COMPILE_TIME_ASSERT(e) {static_assert(e, #e);}
|
||||||
|
# elif (ACC_LANG_C >= 201112L)
|
||||||
|
# define ACC_COMPILE_TIME_ASSERT(e) {_Static_assert(e, #e);}
|
||||||
|
# elif (ACC_CC_AZTECC)
|
||||||
# define ACC_COMPILE_TIME_ASSERT(e) {typedef int __ACC_CTA_NAME(acc_cta_t__)[1-!(e)];}
|
# define ACC_COMPILE_TIME_ASSERT(e) {typedef int __ACC_CTA_NAME(acc_cta_t__)[1-!(e)];}
|
||||||
# elif (ACC_CC_CLANG && (ACC_CC_CLANG >= 0x030000ul))
|
# elif (ACC_CC_CLANG && (ACC_CC_CLANG >= 0x030000ul))
|
||||||
# define ACC_COMPILE_TIME_ASSERT(e) {typedef int __ACC_CTA_NAME(acc_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
|
# define ACC_COMPILE_TIME_ASSERT(e) {typedef int __ACC_CTA_NAME(acc_cta_t__)[1-2*!(e)] __attribute__((__unused__));}
|
||||||
@@ -2378,7 +2421,9 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_LONG == sizeof(long))
|
|||||||
# define ACC_WORDSIZE 4
|
# define ACC_WORDSIZE 4
|
||||||
#elif (ACC_ARCH_Z80)
|
#elif (ACC_ARCH_Z80)
|
||||||
# define ACC_WORDSIZE 1
|
# define ACC_WORDSIZE 1
|
||||||
#elif (ACC_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
|
#elif (ACC_ARCH_MIPS) && (ACC_SIZEOF_LONG == 8) && (defined(__R5900) || defined(__MIPS_PSX2__))
|
||||||
|
# define ACC_WORDSIZE 8
|
||||||
|
#elif (ACC_ARCH_MIPS) && (ACC_SIZEOF_LONG == 4) && defined(__mips64) && defined(_MIPS_SIM) && defined(_ABIN32) && (_MIPS_SIM+0 == _ABIN32+0)
|
||||||
# define ACC_WORDSIZE 8
|
# define ACC_WORDSIZE 8
|
||||||
#elif (ACC_OS_OS400 || defined(__OS400__))
|
#elif (ACC_OS_OS400 || defined(__OS400__))
|
||||||
# define ACC_WORDSIZE 8
|
# define ACC_WORDSIZE 8
|
||||||
@@ -2780,6 +2825,7 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
|
|||||||
# endif
|
# endif
|
||||||
#elif (ACC_ARCH_RISCV)
|
#elif (ACC_ARCH_RISCV)
|
||||||
# define ACC_OPT_AVOID_UINT_INDEX 1
|
# define ACC_OPT_AVOID_UINT_INDEX 1
|
||||||
|
# if 0
|
||||||
# ifndef ACC_OPT_UNALIGNED16
|
# ifndef ACC_OPT_UNALIGNED16
|
||||||
# define ACC_OPT_UNALIGNED16 1
|
# define ACC_OPT_UNALIGNED16 1
|
||||||
# endif
|
# endif
|
||||||
@@ -2791,6 +2837,7 @@ ACC_COMPILE_TIME_ASSERT_HEADER(ACC_SIZEOF_PTRDIFF_T == sizeof(ptrdiff_t))
|
|||||||
# define ACC_OPT_UNALIGNED64 1
|
# define ACC_OPT_UNALIGNED64 1
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
# endif
|
||||||
#elif (ACC_ARCH_S390)
|
#elif (ACC_ARCH_S390)
|
||||||
# ifndef ACC_OPT_UNALIGNED16
|
# ifndef ACC_OPT_UNALIGNED16
|
||||||
# define ACC_OPT_UNALIGNED16 1
|
# define ACC_OPT_UNALIGNED16 1
|
||||||
@@ -3377,7 +3424,7 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(acc_int_fast64_t) == sizeof(acc_uint_fast6
|
|||||||
#if (ACC_OS_POSIX)
|
#if (ACC_OS_POSIX)
|
||||||
# if (ACC_OS_POSIX_AIX)
|
# if (ACC_OS_POSIX_AIX)
|
||||||
# define HAVE_SYS_RESOURCE_H 1
|
# define HAVE_SYS_RESOURCE_H 1
|
||||||
# elif (ACC_OS_POSIX_DARWIN || ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_NETBSD || ACC_OS_POSIX_OPENBSD)
|
# elif (ACC_OS_POSIX_DARWIN || ACC_OS_POSIX_DRAGONFLY || ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_NETBSD || ACC_OS_POSIX_OPENBSD)
|
||||||
# define HAVE_STRINGS_H 1
|
# define HAVE_STRINGS_H 1
|
||||||
# undef HAVE_MALLOC_H
|
# undef HAVE_MALLOC_H
|
||||||
# elif (ACC_OS_POSIX_HPUX || ACC_OS_POSIX_INTERIX)
|
# elif (ACC_OS_POSIX_HPUX || ACC_OS_POSIX_INTERIX)
|
||||||
@@ -6679,35 +6726,31 @@ ACCLIB_PUBLIC(int, acc_dos_free) (void __far* p)
|
|||||||
# define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
|
# define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
|
||||||
#endif
|
#endif
|
||||||
ACCLIB_PUBLIC(void, acc_getopt_init) (acc_getopt_p g,
|
ACCLIB_PUBLIC(void, acc_getopt_init) (acc_getopt_p g,
|
||||||
int start_argc, int argc, char** argv)
|
int start_argc, int argc, char **argv)
|
||||||
{
|
{
|
||||||
memset(g, 0, sizeof(*g));
|
memset(g, 0, sizeof(*g));
|
||||||
g->optind = start_argc;
|
g->optind = start_argc;
|
||||||
g->argc = argc; g->argv = argv;
|
g->argc = argc; g->argv = argv;
|
||||||
g->optopt = -1;
|
g->optopt = -1;
|
||||||
}
|
}
|
||||||
static int __ACCLIB_FUNCNAME(acc_getopt_rotate) (char** p, int first, int middle, int last)
|
static int __ACCLIB_FUNCNAME(acc_getopt_rotate) (char **p, int first, int middle, int last)
|
||||||
{
|
{
|
||||||
int i = middle, n = middle - first;
|
int i = middle, n = middle - first;
|
||||||
if (first >= middle || middle >= last) return 0;
|
if (first >= middle || middle >= last) return 0;
|
||||||
for (;;)
|
for (;;) {
|
||||||
{
|
char *t = p[first]; p[first++] = p[i]; p[i++] = t;
|
||||||
char* t = p[first]; p[first] = p[i]; p[i] = t;
|
if (first == middle) {
|
||||||
if (++first == middle)
|
if (i == last) break;
|
||||||
{
|
|
||||||
if (++i == last) break;
|
|
||||||
middle = i;
|
middle = i;
|
||||||
}
|
} else if (i == last)
|
||||||
else if (++i == last)
|
|
||||||
i = middle;
|
i = middle;
|
||||||
}
|
}
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
static int __ACCLIB_FUNCNAME(acc_getopt_perror) (acc_getopt_p g, int ret, const char* f, ...)
|
static int __ACCLIB_FUNCNAME(acc_getopt_perror) (acc_getopt_p g, int ret, const char *f, ...)
|
||||||
{
|
{
|
||||||
if (g->opterr)
|
if (g->opterr) {
|
||||||
{
|
#if defined(HAVE_STDARG_H) && (HAVE_STDARG_H)
|
||||||
#if (HAVE_STDARG_H)
|
|
||||||
struct { va_list ap; } s;
|
struct { va_list ap; } s;
|
||||||
va_start(s.ap, f);
|
va_start(s.ap, f);
|
||||||
g->opterr(g, f, &s);
|
g->opterr(g, f, &s);
|
||||||
@@ -6720,16 +6763,15 @@ static int __ACCLIB_FUNCNAME(acc_getopt_perror) (acc_getopt_p g, int ret, const
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
||||||
const char* shortopts,
|
const char *shortopts,
|
||||||
const acc_getopt_longopt_p longopts,
|
const acc_getopt_longopt_p longopts,
|
||||||
int* longind)
|
int *longind)
|
||||||
{
|
{
|
||||||
#define pe __ACCLIB_FUNCNAME(acc_getopt_perror)
|
#define pe __ACCLIB_FUNCNAME(acc_getopt_perror)
|
||||||
int ordering = ACC_GETOPT_PERMUTE;
|
int ordering = ACC_GETOPT_PERMUTE;
|
||||||
int missing_arg_ret = g->bad_option;
|
int missing_arg_ret = g->bad_option;
|
||||||
char* a;
|
char *a;
|
||||||
if (shortopts)
|
if (shortopts) {
|
||||||
{
|
|
||||||
if (*shortopts == '-' || *shortopts == '+')
|
if (*shortopts == '-' || *shortopts == '+')
|
||||||
ordering = *shortopts++ == '-' ? ACC_GETOPT_RETURN_IN_ORDER : ACC_GETOPT_REQUIRE_ORDER;
|
ordering = *shortopts++ == '-' ? ACC_GETOPT_RETURN_IN_ORDER : ACC_GETOPT_REQUIRE_ORDER;
|
||||||
if (*shortopts == ':')
|
if (*shortopts == ':')
|
||||||
@@ -6746,20 +6788,17 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
goto acc_label_next_shortopt;
|
goto acc_label_next_shortopt;
|
||||||
g->optind -= __ACCLIB_FUNCNAME(acc_getopt_rotate)(g->argv, g->pending_rotate_first, g->pending_rotate_middle, g->optind);
|
g->optind -= __ACCLIB_FUNCNAME(acc_getopt_rotate)(g->argv, g->pending_rotate_first, g->pending_rotate_middle, g->optind);
|
||||||
g->pending_rotate_first = g->pending_rotate_middle = g->optind;
|
g->pending_rotate_first = g->pending_rotate_middle = g->optind;
|
||||||
if (ordering == ACC_GETOPT_PERMUTE)
|
if (ordering == ACC_GETOPT_PERMUTE) {
|
||||||
{
|
|
||||||
while (g->optind < g->argc && !(g->argv[g->optind][0] == '-' && g->argv[g->optind][1]))
|
while (g->optind < g->argc && !(g->argv[g->optind][0] == '-' && g->argv[g->optind][1]))
|
||||||
++g->optind;
|
++g->optind;
|
||||||
g->pending_rotate_middle = g->optind;
|
g->pending_rotate_middle = g->optind;
|
||||||
}
|
}
|
||||||
if (g->optind >= g->argc)
|
if (g->optind >= g->argc) {
|
||||||
{
|
|
||||||
g->optind = g->pending_rotate_first;
|
g->optind = g->pending_rotate_first;
|
||||||
goto acc_label_eof;
|
goto acc_label_eof;
|
||||||
}
|
}
|
||||||
a = g->argv[g->optind];
|
a = g->argv[g->optind];
|
||||||
if (a[0] == '-' && a[1] == '-')
|
if (a[0] == '-' && a[1] == '-') {
|
||||||
{
|
|
||||||
size_t l = 0;
|
size_t l = 0;
|
||||||
const acc_getopt_longopt_p o;
|
const acc_getopt_longopt_p o;
|
||||||
const acc_getopt_longopt_p o1 = NULL;
|
const acc_getopt_longopt_p o1 = NULL;
|
||||||
@@ -6770,12 +6809,13 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
goto acc_label_eof;
|
goto acc_label_eof;
|
||||||
for (a += 2; a[l] && a[l] != '=' && a[l] != '#'; )
|
for (a += 2; a[l] && a[l] != '=' && a[l] != '#'; )
|
||||||
++l;
|
++l;
|
||||||
for (o = longopts; l && o && o->name; ++o)
|
for (o = longopts; l && o && o->name; ++o) {
|
||||||
{
|
|
||||||
if (strncmp(a, o->name, l) != 0)
|
if (strncmp(a, o->name, l) != 0)
|
||||||
continue;
|
continue;
|
||||||
if (!o->name[l])
|
if (!o->name[l])
|
||||||
goto acc_label_found_o;
|
goto acc_label_found_o;
|
||||||
|
if ((o->has_arg & (ACC_GETOPT_EXACT_ARG | 0x80)) == (ACC_GETOPT_EXACT_ARG | 0x80))
|
||||||
|
continue;
|
||||||
need_exact |= o->has_arg & ACC_GETOPT_EXACT_ARG;
|
need_exact |= o->has_arg & ACC_GETOPT_EXACT_ARG;
|
||||||
if (o1) o2 = o;
|
if (o1) o2 = o;
|
||||||
else o1 = o;
|
else o1 = o;
|
||||||
@@ -6787,8 +6827,7 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
o = o1;
|
o = o1;
|
||||||
acc_label_found_o:
|
acc_label_found_o:
|
||||||
a += l;
|
a += l;
|
||||||
switch (o->has_arg & 0x2f)
|
switch (o->has_arg & 0x2f) {
|
||||||
{
|
|
||||||
case ACC_GETOPT_OPTIONAL_ARG:
|
case ACC_GETOPT_OPTIONAL_ARG:
|
||||||
if (a[0])
|
if (a[0])
|
||||||
g->optarg = a + 1;
|
g->optarg = a + 1;
|
||||||
@@ -6798,7 +6837,7 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
g->optarg = a + 1;
|
g->optarg = a + 1;
|
||||||
else if (g->optind < g->argc)
|
else if (g->optind < g->argc)
|
||||||
g->optarg = g->argv[g->optind++];
|
g->optarg = g->argv[g->optind++];
|
||||||
if (!g->optarg)
|
if (!g->optarg || (!g->optarg[0] && (o->has_arg & 0x40)))
|
||||||
return pe(g, missing_arg_ret, "option '--%s' requires an argument", o->name);
|
return pe(g, missing_arg_ret, "option '--%s' requires an argument", o->name);
|
||||||
break;
|
break;
|
||||||
case ACC_GETOPT_REQUIRED_ARG | 0x20:
|
case ACC_GETOPT_REQUIRED_ARG | 0x20:
|
||||||
@@ -6814,43 +6853,35 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
}
|
}
|
||||||
if (longind)
|
if (longind)
|
||||||
*longind = (int) (o - longopts);
|
*longind = (int) (o - longopts);
|
||||||
if (o->flag)
|
if (o->flag) {
|
||||||
{
|
|
||||||
*o->flag = o->val;
|
*o->flag = o->val;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return o->val;
|
return o->val;
|
||||||
}
|
}
|
||||||
if (a[0] == '-' && a[1])
|
if (a[0] == '-' && a[1]) {
|
||||||
{
|
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
const char* s;
|
const char *s;
|
||||||
acc_label_next_shortopt:
|
acc_label_next_shortopt:
|
||||||
a = g->argv[g->optind] + ++g->shortpos;
|
a = g->argv[g->optind] + ++g->shortpos;
|
||||||
c = (unsigned char) *a++; s = NULL;
|
c = (unsigned char) *a++; s = NULL;
|
||||||
if (c != ':' && shortopts)
|
if (c != ':' && shortopts)
|
||||||
s = strchr(shortopts, c);
|
s = strchr(shortopts, c);
|
||||||
if (!s || s[1] != ':')
|
if (!s || s[1] != ':') {
|
||||||
{
|
|
||||||
if (!a[0])
|
if (!a[0])
|
||||||
{ ++g->optind; g->shortpos = 0; }
|
{ ++g->optind; g->shortpos = 0; }
|
||||||
if (!s)
|
if (!s) {
|
||||||
{
|
|
||||||
g->optopt = c;
|
g->optopt = c;
|
||||||
return pe(g, g->bad_option, "invalid option '-%c'", c);
|
return pe(g, g->bad_option, "invalid option '-%c'", c);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
++g->optind; g->shortpos = 0;
|
++g->optind; g->shortpos = 0;
|
||||||
if (a[0])
|
if (a[0])
|
||||||
g->optarg = a;
|
g->optarg = a;
|
||||||
else if (s[2] != ':')
|
else if (s[2] != ':') {
|
||||||
{
|
|
||||||
if (g->optind < g->argc)
|
if (g->optind < g->argc)
|
||||||
g->optarg = g->argv[g->optind++];
|
g->optarg = g->argv[g->optind++];
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
g->optopt = c;
|
g->optopt = c;
|
||||||
return pe(g, missing_arg_ret, "option '-%c' requires an argument", c);
|
return pe(g, missing_arg_ret, "option '-%c' requires an argument", c);
|
||||||
}
|
}
|
||||||
@@ -6858,8 +6889,7 @@ ACCLIB_PUBLIC(int, acc_getopt) (acc_getopt_p g,
|
|||||||
}
|
}
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
if (ordering == ACC_GETOPT_RETURN_IN_ORDER)
|
if (ordering == ACC_GETOPT_RETURN_IN_ORDER) {
|
||||||
{
|
|
||||||
++g->optind;
|
++g->optind;
|
||||||
g->optarg = a;
|
g->optarg = a;
|
||||||
return 1;
|
return 1;
|
||||||
@@ -7352,7 +7382,7 @@ static int acc_pclock_read_clock_gettime_t_libc(acc_pclock_handle_p h, acc_pcloc
|
|||||||
if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) != 0)
|
if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) != 0)
|
||||||
return -1;
|
return -1;
|
||||||
c->tv_sec = ts.tv_sec;
|
c->tv_sec = ts.tv_sec;
|
||||||
c->tv_nsec = (acc_uint32l_t) ts.tv_nsec;
|
c->tv_nsec = ACC_STATIC_CAST(acc_uint32l_t, ts.tv_nsec);
|
||||||
ACC_UNUSED(h); return 0;
|
ACC_UNUSED(h); return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user