Mercurial > emacs
annotate lib-src/getopt.h @ 22758:dbd9ecc9dbac
Added next-buffer/previous-buffer keybindings (bound to M-n/M-p).
(crisp-unbury-buffer): New function.
Fixed bogus XEmacs/Lucid string-match checking.
Made modeline entry mouse2-able.
(crisp-mode-map): Make this a sparse keymap parented from
current-global-map.
(crisp-mode-original-keymap): Don't copy the keymap.
(crisp-last-last-command): Renamed from last-last-command. defvar it.
(crisp-mode): Honor ARG.
(crisp-kill-line, crisp-copy-line): When a region isn't highlighted,
use the region from point to eol. Honor prefix argument.
(crisp-submit-bug-report): New command, taken from cc-mode.
Shortened the version numbering, removed the release-version tracking
(crisp-version): New function.
New keybindings `C-home', `C-end', `M-home', `M-end', `C-f', `M-l',
`M-m'.
(crisp-copy-line): No need to save point.
Removed S-right and S-left bindings.
Abstract the marking and selection interfaces so that we can be
compatible with both Emacs and XEmacs. And try and make the
behavior as close as possible under both environments so that there
are no surprises.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Tue, 14 Jul 1998 22:17:35 +0000 |
parents | 0c811fcc11f5 |
children | 134b57acef68 |
rev | line source |
---|---|
16919
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1 /* Declarations for getopt. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
2 Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
3 |
18357
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
4 NOTE: The canonical source of this file is maintained with the GNU C Library. |
18358
0c811fcc11f5
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
18357
diff
changeset
|
5 Bugs can be reported to bug-glibc@gnu.org. |
16919
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
6 |
18357
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
7 This program is free software; you can redistribute it and/or modify it |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
9 Free Software Foundation; either version 2, or (at your option) any |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
10 later version. |
16919
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
11 |
18357
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
12 This program is distributed in the hope that it will be useful, |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
15 GNU General Public License for more details. |
16919
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
16 |
18357
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
18 along with this program; if not, write to the Free Software |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
8a1bcc1874f1
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
18356
diff
changeset
|
20 USA. */ |
16919
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
21 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
22 #ifndef _GETOPT_H |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
23 #define _GETOPT_H 1 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
24 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
25 #ifdef __cplusplus |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
26 extern "C" { |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
27 #endif |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
28 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
29 /* For communication from `getopt' to the caller. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
30 When `getopt' finds an option that takes an argument, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
31 the argument value is returned here. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
32 Also, when `ordering' is RETURN_IN_ORDER, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
33 each non-option ARGV-element is returned here. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
34 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
35 extern char *optarg; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
36 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
37 /* Index in ARGV of the next element to be scanned. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
38 This is used for communication to and from the caller |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
39 and for communication between successive calls to `getopt'. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
40 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
41 On entry to `getopt', zero means this is the first call; initialize. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
42 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
43 When `getopt' returns -1, this is the index of the first of the |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
44 non-option elements that the caller should itself scan. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
45 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
46 Otherwise, `optind' communicates from one call to the next |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
47 how much of ARGV has been scanned so far. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
48 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
49 extern int optind; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
50 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
51 /* Callers store zero here to inhibit the error message `getopt' prints |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
52 for unrecognized options. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
53 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
54 extern int opterr; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
55 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
56 /* Set to an option character which was unrecognized. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
57 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
58 extern int optopt; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
59 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
60 /* Describe the long-named options requested by the application. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
61 The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
62 of `struct option' terminated by an element containing a name which is |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
63 zero. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
64 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
65 The field `has_arg' is: |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
66 no_argument (or 0) if the option does not take an argument, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
67 required_argument (or 1) if the option requires an argument, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
68 optional_argument (or 2) if the option takes an optional argument. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
69 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
70 If the field `flag' is not NULL, it points to a variable that is set |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
71 to the value given in the field `val' when the option is found, but |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
72 left unchanged if the option is not found. |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
73 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
74 To have a long-named option do something other than set an `int' to |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
75 a compiled-in constant, such as set a value from `optarg', set the |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
76 option's `flag' field to zero and its `val' field to a nonzero |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
77 value (the equivalent single-letter option character, if there is |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
78 one). For long options that have a zero `flag' field, `getopt' |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
79 returns the contents of the `val' field. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
80 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
81 struct option |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
82 { |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
83 #if defined (__STDC__) && __STDC__ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
84 const char *name; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
85 #else |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
86 char *name; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
87 #endif |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
88 /* has_arg can't be an enum because some compilers complain about |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
89 type mismatches in all the code that assumes it is an int. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
90 int has_arg; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
91 int *flag; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
92 int val; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
93 }; |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
94 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
95 /* Names for the values of the `has_arg' field of `struct option'. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
96 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
97 #define no_argument 0 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
98 #define required_argument 1 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
99 #define optional_argument 2 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
100 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
101 #if defined (__STDC__) && __STDC__ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
102 #ifdef __GNU_LIBRARY__ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
103 /* Many other libraries have conflicting prototypes for getopt, with |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
104 differences in the consts, in stdlib.h. To avoid compilation |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
105 errors, only prototype getopt for the GNU C library. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
106 extern int getopt (int argc, char *const *argv, const char *shortopts); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
107 #else /* not __GNU_LIBRARY__ */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
108 extern int getopt (); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
109 #endif /* __GNU_LIBRARY__ */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
110 extern int getopt_long (int argc, char *const *argv, const char *shortopts, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
111 const struct option *longopts, int *longind); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
112 extern int getopt_long_only (int argc, char *const *argv, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
113 const char *shortopts, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
114 const struct option *longopts, int *longind); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
115 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
116 /* Internal only. Users should not call this directly. */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
117 extern int _getopt_internal (int argc, char *const *argv, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
118 const char *shortopts, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
119 const struct option *longopts, int *longind, |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
120 int long_only); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
121 #else /* not __STDC__ */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
122 extern int getopt (); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
123 extern int getopt_long (); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
124 extern int getopt_long_only (); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
125 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
126 extern int _getopt_internal (); |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
127 #endif /* __STDC__ */ |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
128 |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
129 #ifdef __cplusplus |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
130 } |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
131 #endif |
16c0c57e8ab2
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
132 |
18353
6f1608446f88
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
17965
diff
changeset
|
133 #endif /* getopt.h */ |