Mercurial > pidgin
annotate src/getopt1.c @ 12604:71299d63801d
[gaim-migrate @ 14939]
SF Patch #1383857 from Sadrul
"This patch makes the display-msg signals to be emitted
from gtkconv instead of conversation. The display-msg
signals were not too useful before, especially because
they were being emitted right after writing-msg
signals, and not being emitted for messages being sent
at all.
This patch also makes necessary changes in the plugins,
and in Changelog.API. With this change, the notify
plugin can set the URGENT hint for a new received
message which creates a conversation.
marv and charkins seemed to think this was a good thing
to do."
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Wed, 21 Dec 2005 21:48:38 +0000 |
parents | 840a7d176754 |
children |
rev | line source |
---|---|
991 | 1 /* getopt_long and getopt_long_only entry points for GNU getopt. |
8046 | 2 Gaim is the legal property of its developers, whose names are too numerous |
3 to list here. Please refer to the COPYRIGHT file distributed with this | |
4 source distribution. | |
991 | 5 |
6 This program is free software; you can redistribute it and/or modify it | |
7 under the terms of the GNU General Public License as published by the | |
8 Free Software Foundation; either version 2, or (at your option) any | |
9 later version. | |
10 | |
11 This program is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with this program; if not, write to the Free Software | |
18 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
12371
840a7d176754
[gaim-migrate @ 14675]
Richard Laager <rlaager@wiktel.com>
parents:
8046
diff
changeset
|
19 |
991 | 20 #ifdef HAVE_CONFIG_H |
21 #include "config.h" | |
22 #endif | |
23 | |
24 #include "getopt.h" | |
25 | |
26 #if !__STDC__ && !defined(const) && IN_GCC | |
27 #define const | |
28 #endif | |
29 | |
30 #include <stdio.h> | |
31 | |
32 /* Comment out all this code if we are using the GNU C Library, and are not | |
33 actually compiling the library itself. This code is part of the GNU C | |
34 Library, but also included in many other GNU distributions. Compiling | |
35 and linking in this code is a waste when using the GNU C library | |
36 (especially if it is a shared library). Rather than having every GNU | |
37 program understand `configure --with-gnu-libc' and omit the object files, | |
38 it is simpler to just do this in the source for each such file. */ | |
39 | |
40 #if defined (_LIBC) || !defined (__GNU_LIBRARY__) | |
41 | |
42 | |
43 /* This needs to come after some library #include | |
44 to get __GNU_LIBRARY__ defined. */ | |
45 #ifdef __GNU_LIBRARY__ | |
46 #include <stdlib.h> | |
47 #else | |
48 char *getenv (); | |
49 #endif | |
50 | |
51 #ifndef NULL | |
52 #define NULL 0 | |
53 #endif | |
54 | |
55 int | |
56 getopt_long (argc, argv, options, long_options, opt_index) | |
57 int argc; | |
58 char *const *argv; | |
59 const char *options; | |
60 const struct option *long_options; | |
61 int *opt_index; | |
62 { | |
63 return _getopt_internal (argc, argv, options, long_options, opt_index, 0); | |
64 } | |
65 | |
66 /* Like getopt_long, but '-' as well as '--' can indicate a long option. | |
67 If an option that starts with '-' (not '--') doesn't match a long option, | |
68 but does match a short option, it is parsed as a short option | |
69 instead. */ | |
70 | |
71 int | |
72 getopt_long_only (argc, argv, options, long_options, opt_index) | |
73 int argc; | |
74 char *const *argv; | |
75 const char *options; | |
76 const struct option *long_options; | |
77 int *opt_index; | |
78 { | |
79 return _getopt_internal (argc, argv, options, long_options, opt_index, 1); | |
80 } | |
81 | |
82 | |
83 #endif /* _LIBC or not __GNU_LIBRARY__. */ | |
84 | |
85 #ifdef TEST | |
86 | |
87 #include <stdio.h> | |
88 | |
89 int | |
90 main (argc, argv) | |
91 int argc; | |
92 char **argv; | |
93 { | |
94 int c; | |
95 int digit_optind = 0; | |
96 | |
97 while (1) | |
98 { | |
99 int this_option_optind = optind ? optind : 1; | |
100 int option_index = 0; | |
101 static struct option long_options[] = | |
102 { | |
103 {"add", 1, 0, 0}, | |
104 {"append", 0, 0, 0}, | |
105 {"delete", 1, 0, 0}, | |
106 {"verbose", 0, 0, 0}, | |
107 {"create", 0, 0, 0}, | |
108 {"file", 1, 0, 0}, | |
109 {0, 0, 0, 0} | |
110 }; | |
111 | |
112 c = getopt_long (argc, argv, "abc:d:0123456789", | |
113 long_options, &option_index); | |
114 if (c == EOF) | |
115 break; | |
116 | |
117 switch (c) | |
118 { | |
119 case 0: | |
120 printf ("option %s", long_options[option_index].name); | |
121 if (optarg) | |
122 printf (" with arg %s", optarg); | |
123 printf ("\n"); | |
124 break; | |
125 | |
126 case '0': | |
127 case '1': | |
128 case '2': | |
129 case '3': | |
130 case '4': | |
131 case '5': | |
132 case '6': | |
133 case '7': | |
134 case '8': | |
135 case '9': | |
136 if (digit_optind != 0 && digit_optind != this_option_optind) | |
137 printf ("digits occur in two different argv-elements.\n"); | |
138 digit_optind = this_option_optind; | |
139 printf ("option %c\n", c); | |
140 break; | |
141 | |
142 case 'a': | |
143 printf ("option a\n"); | |
144 break; | |
145 | |
146 case 'b': | |
147 printf ("option b\n"); | |
148 break; | |
149 | |
150 case 'c': | |
151 printf ("option c with value `%s'\n", optarg); | |
152 break; | |
153 | |
154 case 'd': | |
155 printf ("option d with value `%s'\n", optarg); | |
156 break; | |
157 | |
158 case '?': | |
159 break; | |
160 | |
161 default: | |
162 printf ("?? getopt returned character code 0%o ??\n", c); | |
163 } | |
164 } | |
165 | |
166 if (optind < argc) | |
167 { | |
168 printf ("non-option ARGV-elements: "); | |
169 while (optind < argc) | |
170 printf ("%s ", argv[optind++]); | |
171 printf ("\n"); | |
172 } | |
173 | |
174 exit (0); | |
175 } | |
176 | |
177 #endif /* TEST */ |