Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(651)

Side by Side Diff: nss/mozilla/nsprpub/lib/libc/src/plgetopt.c

Issue 3135002: Update to NSS 3.12.7 and NSPR 4.8.6.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* ***** BEGIN LICENSE BLOCK ***** 2 /* ***** BEGIN LICENSE BLOCK *****
3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 * 4 *
5 * The contents of this file are subject to the Mozilla Public License Version 5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with 6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at 7 * the License. You may obtain a copy of the License at
8 * http://www.mozilla.org/MPL/ 8 * http://www.mozilla.org/MPL/
9 * 9 *
10 * Software distributed under the License is distributed on an "AS IS" basis, 10 * Software distributed under the License is distributed on an "AS IS" basis,
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 } 170 }
171 } 171 }
172 } 172 }
173 } 173 }
174 174
175 /* 175 /*
176 ** If we already have a '-' or '--' in hand, xargv points to the next 176 ** If we already have a '-' or '--' in hand, xargv points to the next
177 ** option. See if we can find a match in the list of possible 177 ** option. See if we can find a match in the list of possible
178 ** options supplied. 178 ** options supplied.
179 */ 179 */
180
181 if (internal->minus == 2) 180 if (internal->minus == 2)
182 { 181 {
183 char * foundEqual = strchr(internal->xargv,'='); 182 char * foundEqual = strchr(internal->xargv,'=');
184 PRIntn optNameLen = foundEqual ? (foundEqual - internal->xargv) : 183 PRIntn optNameLen = foundEqual ? (foundEqual - internal->xargv) :
185 strlen(internal->xargv); 184 strlen(internal->xargv);
186 const PLLongOpt *longOpt = internal->longOpts; 185 const PLLongOpt *longOpt = internal->longOpts;
186 PLOptStatus result = PL_OPT_BAD;
187 187
188 opt->option = 0; 188 opt->option = 0;
189 opt->value = NULL; 189 opt->value = NULL;
190 190
191 for (; longOpt->longOptName; ++longOpt) 191 for (; longOpt->longOptName; ++longOpt)
192 { 192 {
193 if (strncmp(longOpt->longOptName, internal->xargv, optNameLen)) 193 if (strncmp(longOpt->longOptName, internal->xargv, optNameLen))
194 continue; /* not a possible match */ 194 continue; /* not a possible match */
195 if (strlen(longOpt->longOptName) != optNameLen) 195 if (strlen(longOpt->longOptName) != optNameLen)
196 continue; /* not a match */ 196 continue; /* not a match */
197 /* option name match */ 197 /* option name match */
198 opt->longOptIndex = longOpt - internal->longOpts; 198 opt->longOptIndex = longOpt - internal->longOpts;
199 opt->longOption = longOpt->longOption; 199 opt->longOption = longOpt->longOption;
200 /* value is part of the current argv[] element if = was found */
201 /* note: this sets value even for long options that do not
202 * require option if specified as --long=value */
200 if (foundEqual) 203 if (foundEqual)
201 { 204 {
202 opt->value = foundEqual[1] ? foundEqual + 1 : NULL; 205 opt->value = foundEqual + 1;
203 } 206 }
204 else if (longOpt->valueRequired) 207 else if (longOpt->valueRequired)
205 { 208 {
206 opt->value = internal->argv[++(internal->xargc)]; 209 /* value is the next argv[] element, if any */
210 if (internal->xargc + 1 < internal->argc)
211 {
212 opt->value = internal->argv[++(internal->xargc)];
213 }
214 /* missing value */
215 else
216 {
217 break; /* return PL_OPT_BAD */
218 }
207 } 219 }
208 internal->xargv = &static_Nul; /* consume this */ 220 result = PL_OPT_OK;
209 return PL_OPT_OK; 221 break;
210 } 222 }
211 internal->xargv = &static_Nul; /* consume this */ 223 internal->xargv = &static_Nul; /* consume this */
212 return PL_OPT_BAD; 224 return result;
213 } 225 }
214 if (internal->minus) 226 if (internal->minus)
215 { 227 {
216 PRIntn cop; 228 PRIntn cop;
217 PRIntn eoo = internal->optionsLen; 229 PRIntn eoo = internal->optionsLen;
218 for (cop = 0; cop < eoo; ++cop) 230 for (cop = 0; cop < eoo; ++cop)
219 { 231 {
220 if (internal->options[cop] == *internal->xargv) 232 if (internal->options[cop] == *internal->xargv)
221 { 233 {
222 opt->option = *internal->xargv++; 234 opt->option = *internal->xargv++;
223 opt->longOption = opt->option & 0xff; 235 opt->longOption = opt->option & 0xff;
224 /* 236 /*
225 ** if options indicates that there's an associated 237 ** if options indicates that there's an associated
226 ** value, this argv is finished and the next is the 238 ** value, it must be provided, either as part of this
227 ** option's value. 239 ** argv[] element or as the next one
228 */ 240 */
229 if (':' == internal->options[cop + 1]) 241 if (':' == internal->options[cop + 1])
230 { 242 {
231 if (0 != *internal->xargv) 243 /* value is part of the current argv[] element */
244 if (0 != *internal->xargv)
245 {
246 opt->value = internal->xargv;
247 }
248 /* value is the next argv[] element, if any */
249 else if (internal->xargc + 1 < internal->argc)
250 {
251 opt->value = internal->argv[++(internal->xargc)];
252 }
253 /* missing value */
254 else
255 {
232 return PL_OPT_BAD; 256 return PL_OPT_BAD;
233 opt->value = internal->argv[++(internal->xargc)]; 257 }
258
234 internal->xargv = &static_Nul; 259 internal->xargv = &static_Nul;
235 internal->minus = 0; 260 internal->minus = 0;
236 } 261 }
237 else 262 else
238 opt->value = NULL; 263 opt->value = NULL;
239 return PL_OPT_OK; 264 return PL_OPT_OK;
240 } 265 }
241 } 266 }
242 internal->xargv += 1; /* consume that option */ 267 internal->xargv += 1; /* consume that option */
243 return PL_OPT_BAD; 268 return PL_OPT_BAD;
244 } 269 }
270
245 /* 271 /*
246 ** No '-', so it must be a standalone value. The option is nul. 272 ** No '-', so it must be a standalone value. The option is nul.
247 */ 273 */
248 opt->value = internal->argv[internal->xargc]; 274 opt->value = internal->argv[internal->xargc];
249 internal->xargv = &static_Nul; 275 internal->xargv = &static_Nul;
250 opt->option = 0; 276 opt->option = 0;
251 return PL_OPT_OK; 277 return PL_OPT_OK;
252 } /* PL_GetNextOpt */ 278 } /* PL_GetNextOpt */
253 279
254 /* plgetopt.c */ 280 /* plgetopt.c */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698