Fossil SCM

Allow command-line options of the form "--name=value".

drh 2008-05-25 11:50 trunk
Commit be758137b0189740217bac71db3e77012323f204
1 file changed +13 -1
+13 -1
--- src/main.c
+++ src/main.c
@@ -311,12 +311,14 @@
311311
** hasArg==1 means the option has an argument. Return a pointer to the
312312
** argument.
313313
*/
314314
const char *find_option(const char *zLong, const char *zShort, int hasArg){
315315
int i;
316
+ int nLong;
316317
const char *zReturn = 0;
317318
assert( hasArg==0 || hasArg==1 );
319
+ nLong = strlen(zLong);
318320
for(i=2; i<g.argc; i++){
319321
char *z = g.argv[i];
320322
if( z[0]!='-' ) continue;
321323
z++;
322324
if( z[0]=='-' ){
@@ -324,11 +326,21 @@
324326
remove_from_argv(i, 1);
325327
break;
326328
}
327329
z++;
328330
}
329
- if( strcmp(z,zLong)==0 || (zShort!=0 && strcmp(z,zShort)==0) ){
331
+ if( strncmp(z,zLong,nLong)==0 ){
332
+ if( hasArg && z[nLong]=='=' ){
333
+ zReturn = &z[nLong+1];
334
+ remove_from_argv(i, 1);
335
+ break;
336
+ }else if( z[nLong]==0 ){
337
+ zReturn = g.argv[i+hasArg];
338
+ remove_from_argv(i, 1+hasArg);
339
+ break;
340
+ }
341
+ }else if( zShort!=0 && strcmp(z,zShort)==0 ){
330342
zReturn = g.argv[i+hasArg];
331343
remove_from_argv(i, 1+hasArg);
332344
break;
333345
}
334346
}
335347
--- src/main.c
+++ src/main.c
@@ -311,12 +311,14 @@
311 ** hasArg==1 means the option has an argument. Return a pointer to the
312 ** argument.
313 */
314 const char *find_option(const char *zLong, const char *zShort, int hasArg){
315 int i;
 
316 const char *zReturn = 0;
317 assert( hasArg==0 || hasArg==1 );
 
318 for(i=2; i<g.argc; i++){
319 char *z = g.argv[i];
320 if( z[0]!='-' ) continue;
321 z++;
322 if( z[0]=='-' ){
@@ -324,11 +326,21 @@
324 remove_from_argv(i, 1);
325 break;
326 }
327 z++;
328 }
329 if( strcmp(z,zLong)==0 || (zShort!=0 && strcmp(z,zShort)==0) ){
 
 
 
 
 
 
 
 
 
 
330 zReturn = g.argv[i+hasArg];
331 remove_from_argv(i, 1+hasArg);
332 break;
333 }
334 }
335
--- src/main.c
+++ src/main.c
@@ -311,12 +311,14 @@
311 ** hasArg==1 means the option has an argument. Return a pointer to the
312 ** argument.
313 */
314 const char *find_option(const char *zLong, const char *zShort, int hasArg){
315 int i;
316 int nLong;
317 const char *zReturn = 0;
318 assert( hasArg==0 || hasArg==1 );
319 nLong = strlen(zLong);
320 for(i=2; i<g.argc; i++){
321 char *z = g.argv[i];
322 if( z[0]!='-' ) continue;
323 z++;
324 if( z[0]=='-' ){
@@ -324,11 +326,21 @@
326 remove_from_argv(i, 1);
327 break;
328 }
329 z++;
330 }
331 if( strncmp(z,zLong,nLong)==0 ){
332 if( hasArg && z[nLong]=='=' ){
333 zReturn = &z[nLong+1];
334 remove_from_argv(i, 1);
335 break;
336 }else if( z[nLong]==0 ){
337 zReturn = g.argv[i+hasArg];
338 remove_from_argv(i, 1+hasArg);
339 break;
340 }
341 }else if( zShort!=0 && strcmp(z,zShort)==0 ){
342 zReturn = g.argv[i+hasArg];
343 remove_from_argv(i, 1+hasArg);
344 break;
345 }
346 }
347

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button