Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
2287ac98
Commit
2287ac98
authored
Jul 08, 2011
by
Paul Eggert
Browse files
Options
Browse Files
Download
Plain Diff
Merge from gnulib.
parents
a63e0781
4a621aae
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
132 additions
and
107 deletions
+132
-107
ChangeLog
ChangeLog
+4
-0
lib/getopt.c
lib/getopt.c
+8
-3
lib/unistd.in.h
lib/unistd.in.h
+70
-71
m4/getopt.m4
m4/getopt.m4
+50
-33
No files found.
ChangeLog
View file @
2287ac98
2011-07-08 Paul Eggert <eggert@cs.ucla.edu>
* lib/getopt.c, lib/unistd.in.h, m4/getopt.m4: Merge from gnulib.
2011-07-07 Andreas Schwab <schwab@linux-m68k.org>
* configure.in (maintainer-mode): Reflect default in help string.
...
...
lib/getopt.c
View file @
2287ac98
...
...
@@ -829,7 +829,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
return
'?'
;
}
/* Convenience. Treat POSIX -W foo same as long option --foo */
if
(
temp
[
0
]
==
'W'
&&
temp
[
1
]
==
';'
&&
longopts
)
if
(
temp
[
0
]
==
'W'
&&
temp
[
1
]
==
';'
)
{
char
*
nameend
;
const
struct
option
*
p
;
...
...
@@ -839,6 +839,9 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
int
indfound
=
0
;
int
option_index
;
if
(
longopts
==
NULL
)
goto
no_longs
;
/* This is an option that requires an argument. */
if
(
*
d
->
__nextchar
!=
'\0'
)
{
...
...
@@ -1046,6 +1049,8 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
}
return
pfound
->
val
;
}
no_longs:
d
->
__nextchar
=
NULL
;
return
'W'
;
/* Let the application handle it. */
}
...
...
lib/unistd.in.h
View file @
2287ac98
...
...
@@ -117,9 +117,9 @@
/* The definition of _GL_WARN_ON_USE is copied here. */
#if @GNULIB_GETHOSTNAME@
/* Get all possible declarations of gethostname(). */
#
if @UNISTD_H_HAVE_WINSOCK2_H@
/* Hide some function declarations from <winsock2.h>. */
#if
@GNULIB_GETHOSTNAME@ &&
@UNISTD_H_HAVE_WINSOCK2_H@
# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef socket
...
...
@@ -190,7 +190,6 @@
"select() used without including <sys/select.h>"
);
# endif
# endif
# endif
#endif
...
...
m4/getopt.m4
View file @
2287ac98
# getopt.m4 serial 3
5
# getopt.m4 serial 3
8
dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
...
...
@@ -89,15 +89,15 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
AC_CACHE_CHECK([whether getopt is POSIX compatible],
[gl_cv_func_getopt_posix],
[
dnl BSD getopt_long uses an incompatible method to reset
dnl
option
processing. Existence of the variable, in and of
dnl BSD getopt_long uses an incompatible method to reset
option
dnl processing. Existence of the
optreset
variable, in and of
dnl itself, is not a reason to replace getopt, but knowledge
dnl of the variable is needed to determine how to reset and
dnl whether a reset reparses the environment. Solaris
dnl supports neither optreset nor optind=0, but keeps no state
dnl that needs a reset beyond setting optind=1; detect Solaris
dnl by getopt_clip.
AC_
COMPILE
_IFELSE(
AC_
LINK
_IFELSE(
[AC_LANG_PROGRAM(
[[#include <unistd.h>]],
[[int *p = &optreset; return optreset;]])],
...
...
@@ -121,22 +121,20 @@ int
main ()
{
{
int argc = 0;
char *argv[10];
static char program[] = "program";
static char a[] = "-a";
static char foo[] = "foo";
static char bar[] = "bar";
char *argv[] = { program, a, foo, bar, NULL };
int c;
argv[argc++] = "program";
argv[argc++] = "-a";
argv[argc++] = "foo";
argv[argc++] = "bar";
argv[argc] = NULL;
optind = OPTIND_MIN;
opterr = 0;
c = getopt (
argc
, argv, "ab");
c = getopt (
4
, argv, "ab");
if (!(c == 'a'))
return 1;
c = getopt (
argc
, argv, "ab");
c = getopt (
4
, argv, "ab");
if (!(c == -1))
return 2;
if (!(optind == 2))
...
...
@@ -144,22 +142,20 @@ main ()
}
/* Some internal state exists at this point. */
{
int argc = 0;
char *argv[10];
static char program[] = "program";
static char donald[] = "donald";
static char p[] = "-p";
static char billy[] = "billy";
static char duck[] = "duck";
static char a[] = "-a";
static char bar[] = "bar";
char *argv[] = { program, donald, p, billy, duck, a, bar, NULL };
int c;
argv[argc++] = "program";
argv[argc++] = "donald";
argv[argc++] = "-p";
argv[argc++] = "billy";
argv[argc++] = "duck";
argv[argc++] = "-a";
argv[argc++] = "bar";
argv[argc] = NULL;
optind = OPTIND_MIN;
opterr = 0;
c = getopt (
argc
, argv, "+abp:q:");
c = getopt (
7
, argv, "+abp:q:");
if (!(c == -1))
return 4;
if (!(strcmp (argv[0], "program") == 0))
...
...
@@ -181,7 +177,9 @@ main ()
}
/* Detect MacOS 10.5, AIX 7.1 bug. */
{
char *argv[3] = { "program", "-ab", NULL };
static char program[] = "program";
static char ab[] = "-ab";
char *argv[3] = { program, ab, NULL };
optind = OPTIND_MIN;
opterr = 0;
if (getopt (2, argv, "ab:") != 'a')
...
...
@@ -239,19 +237,22 @@ dnl is ambiguous with environment values that contain newlines.
and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
OSF/1 5.1, Solaris 10. */
{
char *myargv[3];
myargv[0] = "conftest";
myargv[1] = "-+";
myargv[2] = 0;
static char conftest[] = "conftest";
static char plus[] = "-+";
char *argv[3] = { conftest, plus, NULL };
opterr = 0;
if (getopt (2,
my
argv, "+a") != '?')
if (getopt (2, argv, "+a") != '?')
result |= 1;
}
/* This code succeeds on glibc 2.8, mingw,
and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */
{
char *argv[] = { "program", "-p", "foo", "bar", NULL };
static char program[] = "program";
static char p[] = "-p";
static char foo[] = "foo";
static char bar[] = "bar";
char *argv[] = { program, p, foo, bar, NULL };
optind = 1;
if (getopt (4, argv, "p::") != 'p')
...
...
@@ -265,7 +266,10 @@ dnl is ambiguous with environment values that contain newlines.
}
/* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */
{
char *argv[] = { "program", "foo", "-p", NULL };
static char program[] = "program";
static char foo[] = "foo";
static char p[] = "-p";
char *argv[] = { program, foo, p, NULL };
optind = 0;
if (getopt (3, argv, "-p") != 1)
result |= 16;
...
...
@@ -274,13 +278,26 @@ dnl is ambiguous with environment values that contain newlines.
}
/* This code fails on glibc 2.11. */
{
char *argv[] = { "program", "-b", "-a", NULL };
static char program[] = "program";
static char b[] = "-b";
static char a[] = "-a";
char *argv[] = { program, b, a, NULL };
optind = opterr = 0;
if (getopt (3, argv, "+:a:b") != 'b')
result |= 64;
else if (getopt (3, argv, "+:a:b") != ':')
result |= 64;
}
/* This code dumps core on glibc 2.14. */
{
static char program[] = "program";
static char w[] = "-W";
static char dummy[] = "dummy";
char *argv[] = { program, w, dummy, NULL };
optind = opterr = 1;
if (getopt (3, argv, "W;") != 'W')
result |= 128;
}
return result;
]])],
[gl_cv_func_getopt_gnu=yes],
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment