Mercurial > hg > xemacs-beta
annotate lib-src/getopt.h @ 5602:c9e5612f5424
Support the MP library on recent FreeBSD, have it pass relevant tests.
src/ChangeLog addition:
2011-11-26 Aidan Kehoe <kehoea@parhasard.net>
* number-mp.c (bignum_to_string):
Don't overwrite the accumulator we've just set up for this
function.
* number-mp.c (BIGNUM_TO_TYPE):
mp_itom() doesn't necessarily do what this code used to think with
negative numbers, it can treat them as unsigned ints. Subtract
numbers from bignum_zero instead of multiplying them by -1 to
convert them to their negative equivalents.
* number-mp.c (bignum_to_int):
* number-mp.c (bignum_to_uint):
* number-mp.c (bignum_to_long):
* number-mp.c (bignum_to_ulong):
* number-mp.c (bignum_to_double):
Use the changed BIGNUM_TO_TYPE() in these functions.
* number-mp.c (bignum_ceil):
* number-mp.c (bignum_floor):
In these functions, be more careful about rounding to positive and
negative infinity, respectively. Don't use the sign of QUOTIENT
when working out out whether to add or subtract one, rather use
the sign QUOTIENT would have if arbitrary-precision division were
done.
* number-mp.h:
* number-mp.h (MP_GCD):
Wrap #include <mp.h> in BEGIN_C_DECLS/END_C_DECLS.
* number.c (Fbigfloat_get_precision):
* number.c (Fbigfloat_set_precision):
Don't attempt to call XBIGFLOAT_GET_PREC if this build doesn't
support big floats.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 26 Nov 2011 17:59:14 +0000 |
parents | 061f4f90f874 |
children |
rev | line source |
---|---|
428 | 1 /* Declarations for getopt. |
2 Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. | |
3 | |
4 NOTE: The canonical source of this file is maintained with the GNU C Library. | |
5 Bugs can be reported to bug-glibc@prep.ai.mit.edu. | |
6 | |
5406
061f4f90f874
Convert lib-src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5091
diff
changeset
|
7 This program is free software: you can redistribute it and/or modify it |
428 | 8 under the terms of the GNU General Public License as published by the |
5406
061f4f90f874
Convert lib-src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5091
diff
changeset
|
9 Free Software Foundation, either version 3 of the License, or (at your |
061f4f90f874
Convert lib-src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5091
diff
changeset
|
10 option) any later version. |
428 | 11 |
5406
061f4f90f874
Convert lib-src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5091
diff
changeset
|
12 This program is distributed in the hope that it will be useful, but WITHOUT |
061f4f90f874
Convert lib-src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5091
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
061f4f90f874
Convert lib-src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5091
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
061f4f90f874
Convert lib-src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5091
diff
changeset
|
15 for more details. |
428 | 16 |
17 You should have received a copy of the GNU General Public License | |
5406
061f4f90f874
Convert lib-src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5091
diff
changeset
|
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
428 | 19 |
20 #ifndef _GETOPT_H | |
21 #define _GETOPT_H 1 | |
22 | |
23 #ifdef __cplusplus | |
24 extern "C" { | |
25 #endif | |
26 | |
27 /* For communication from `getopt' to the caller. | |
28 When `getopt' finds an option that takes an argument, | |
29 the argument value is returned here. | |
30 Also, when `ordering' is RETURN_IN_ORDER, | |
31 each non-option ARGV-element is returned here. */ | |
32 | |
33 extern char *optarg; | |
34 | |
35 /* Index in ARGV of the next element to be scanned. | |
36 This is used for communication to and from the caller | |
37 and for communication between successive calls to `getopt'. | |
38 | |
39 On entry to `getopt', zero means this is the first call; initialize. | |
40 | |
41 When `getopt' returns -1, this is the index of the first of the | |
42 non-option elements that the caller should itself scan. | |
43 | |
44 Otherwise, `optind' communicates from one call to the next | |
45 how much of ARGV has been scanned so far. */ | |
46 | |
47 extern int optind; | |
48 | |
49 /* Callers store zero here to inhibit the error message `getopt' prints | |
50 for unrecognized options. */ | |
51 | |
52 extern int opterr; | |
53 | |
54 /* Set to an option character which was unrecognized. */ | |
55 | |
56 extern int optopt; | |
57 | |
58 /* Describe the long-named options requested by the application. | |
59 The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector | |
60 of `struct option' terminated by an element containing a name which is | |
61 zero. | |
62 | |
63 The field `has_arg' is: | |
64 no_argument (or 0) if the option does not take an argument, | |
65 required_argument (or 1) if the option requires an argument, | |
66 optional_argument (or 2) if the option takes an optional argument. | |
67 | |
68 If the field `flag' is not NULL, it points to a variable that is set | |
69 to the value given in the field `val' when the option is found, but | |
70 left unchanged if the option is not found. | |
71 | |
72 To have a long-named option do something other than set an `int' to | |
73 a compiled-in constant, such as set a value from `optarg', set the | |
74 option's `flag' field to zero and its `val' field to a nonzero | |
75 value (the equivalent single-letter option character, if there is | |
76 one). For long options that have a zero `flag' field, `getopt' | |
77 returns the contents of the `val' field. */ | |
78 | |
79 struct option | |
80 { | |
81 #if defined (__STDC__) && __STDC__ | |
82 const char *name; | |
83 #else | |
84 char *name; | |
85 #endif | |
86 /* has_arg can't be an enum because some compilers complain about | |
87 type mismatches in all the code that assumes it is an int. */ | |
88 int has_arg; | |
89 int *flag; | |
90 int val; | |
91 }; | |
92 | |
93 /* Names for the values of the `has_arg' field of `struct option'. */ | |
94 | |
95 #define no_argument 0 | |
96 #define required_argument 1 | |
97 #define optional_argument 2 | |
98 | |
5091 | 99 #if defined (__GNU_LIBRARY__) || defined (__cplusplus) || defined (HAVE_CONFIG_H) |
428 | 100 /* Many other libraries have conflicting prototypes for getopt, with |
101 differences in the consts, in stdlib.h. To avoid compilation | |
102 errors, only prototype getopt for the GNU C library. */ | |
103 extern int getopt (int argc, char *const *argv, const char *shortopts); | |
440 | 104 #else /* not __GNU_LIBRARY__ || C++ */ |
428 | 105 extern int getopt (); |
440 | 106 #endif /* __GNU_LIBRARY__ || C++ */ |
428 | 107 extern int getopt_long (int argc, char *const *argv, const char *shortopts, |
108 const struct option *longopts, int *longind); | |
109 extern int getopt_long_only (int argc, char *const *argv, | |
110 const char *shortopts, | |
111 const struct option *longopts, int *longind); | |
112 | |
113 /* Internal only. Users should not call this directly. */ | |
114 extern int _getopt_internal (int argc, char *const *argv, | |
115 const char *shortopts, | |
116 const struct option *longopts, int *longind, | |
117 int long_only); | |
118 | |
119 #ifdef __cplusplus | |
120 } | |
121 #endif | |
122 | |
123 #endif /* _GETOPT_H */ |