@@ -228,6 +228,22 @@ static int strbuf_addf_ret(struct strbuf *sb, int ret, const char *fmt, ...)
228
228
return ret ;
229
229
}
230
230
231
+ static int err_no_arg (struct strbuf * sb , const char * name )
232
+ {
233
+ size_t namelen = strchrnul (name , ':' ) - name ;
234
+ strbuf_addf (sb , _ ("%%(%.*s) does not take arguments" ),
235
+ (int )namelen , name );
236
+ return -1 ;
237
+ }
238
+
239
+ static int err_bad_arg (struct strbuf * sb , const char * name , const char * arg )
240
+ {
241
+ size_t namelen = strchrnul (name , ':' ) - name ;
242
+ strbuf_addf (sb , _ ("unrecognized %%(%.*s) argument: %s" ),
243
+ (int )namelen , name , arg );
244
+ return -1 ;
245
+ }
246
+
231
247
static int color_atom_parser (struct ref_format * format , struct used_atom * atom ,
232
248
const char * color_value , struct strbuf * err )
233
249
{
@@ -262,7 +278,7 @@ static int refname_atom_parser_internal(struct refname_atom *atom, const char *a
262
278
if (strtol_i (arg , 10 , & atom -> rstrip ))
263
279
return strbuf_addf_ret (err , -1 , _ ("Integer value expected refname:rstrip=%s" ), arg );
264
280
} else
265
- return strbuf_addf_ret (err , -1 , _ ( "unrecognized %%(%s) argument: %s" ) , name , arg );
281
+ return err_bad_arg (err , name , arg );
266
282
return 0 ;
267
283
}
268
284
@@ -317,7 +333,7 @@ static int objecttype_atom_parser(struct ref_format *format, struct used_atom *a
317
333
const char * arg , struct strbuf * err )
318
334
{
319
335
if (arg )
320
- return strbuf_addf_ret (err , -1 , _ ( "%%( objecttype) does not take arguments" ) );
336
+ return err_no_arg (err , " objecttype" );
321
337
if (* atom -> name == '*' )
322
338
oi_deref .info .typep = & oi_deref .type ;
323
339
else
@@ -341,15 +357,15 @@ static int objectsize_atom_parser(struct ref_format *format, struct used_atom *a
341
357
else
342
358
oi .info .disk_sizep = & oi .disk_size ;
343
359
} else
344
- return strbuf_addf_ret (err , -1 , _ ( "unrecognized %%(%s) argument: %s" ) , "objectsize" , arg );
360
+ return err_bad_arg (err , "objectsize" , arg );
345
361
return 0 ;
346
362
}
347
363
348
364
static int deltabase_atom_parser (struct ref_format * format , struct used_atom * atom ,
349
365
const char * arg , struct strbuf * err )
350
366
{
351
367
if (arg )
352
- return strbuf_addf_ret (err , -1 , _ ( "%%( deltabase) does not take arguments" ) );
368
+ return err_no_arg (err , " deltabase" );
353
369
if (* atom -> name == '*' )
354
370
oi_deref .info .delta_base_oid = & oi_deref .delta_base_oid ;
355
371
else
@@ -361,7 +377,7 @@ static int body_atom_parser(struct ref_format *format, struct used_atom *atom,
361
377
const char * arg , struct strbuf * err )
362
378
{
363
379
if (arg )
364
- return strbuf_addf_ret (err , -1 , _ ( "%%( body) does not take arguments" ) );
380
+ return err_no_arg (err , " body" );
365
381
atom -> u .contents .option = C_BODY_DEP ;
366
382
return 0 ;
367
383
}
@@ -374,7 +390,7 @@ static int subject_atom_parser(struct ref_format *format, struct used_atom *atom
374
390
else if (!strcmp (arg , "sanitize" ))
375
391
atom -> u .contents .option = C_SUB_SANITIZE ;
376
392
else
377
- return strbuf_addf_ret (err , -1 , _ ( "unrecognized %%(%s) argument: %s" ) , "subject" , arg );
393
+ return err_bad_arg (err , "subject" , arg );
378
394
return 0 ;
379
395
}
380
396
@@ -428,7 +444,7 @@ static int contents_atom_parser(struct ref_format *format, struct used_atom *ato
428
444
if (strtoul_ui (arg , 10 , & atom -> u .contents .nlines ))
429
445
return strbuf_addf_ret (err , -1 , _ ("positive value expected contents:lines=%s" ), arg );
430
446
} else
431
- return strbuf_addf_ret (err , -1 , _ ( "unrecognized %%(%s) argument: %s" ) , "contents" , arg );
447
+ return err_bad_arg (err , "contents" , arg );
432
448
return 0 ;
433
449
}
434
450
@@ -440,7 +456,7 @@ static int raw_atom_parser(struct ref_format *format, struct used_atom *atom,
440
456
else if (!strcmp (arg , "size" ))
441
457
atom -> u .raw_data .option = RAW_LENGTH ;
442
458
else
443
- return strbuf_addf_ret (err , -1 , _ ( "unrecognized %%(%s) argument: %s" ) , "raw" , arg );
459
+ return err_bad_arg (err , "raw" , arg );
444
460
return 0 ;
445
461
}
446
462
@@ -459,7 +475,7 @@ static int oid_atom_parser(struct ref_format *format, struct used_atom *atom,
459
475
if (atom -> u .oid .length < MINIMUM_ABBREV )
460
476
atom -> u .oid .length = MINIMUM_ABBREV ;
461
477
} else
462
- return strbuf_addf_ret (err , -1 , _ ( "unrecognized %%(%s) argument: %s" ) , atom -> name , arg );
478
+ return err_bad_arg (err , atom -> name , arg );
463
479
return 0 ;
464
480
}
465
481
@@ -473,7 +489,7 @@ static int person_email_atom_parser(struct ref_format *format, struct used_atom
473
489
else if (!strcmp (arg , "localpart" ))
474
490
atom -> u .email_option .option = EO_LOCALPART ;
475
491
else
476
- return strbuf_addf_ret (err , -1 , _ ( "unrecognized email option: %s" ) , arg );
492
+ return err_bad_arg (err , atom -> name , arg );
477
493
return 0 ;
478
494
}
479
495
@@ -557,22 +573,24 @@ static int if_atom_parser(struct ref_format *format, struct used_atom *atom,
557
573
} else if (skip_prefix (arg , "notequals=" , & atom -> u .if_then_else .str )) {
558
574
atom -> u .if_then_else .cmp_status = COMPARE_UNEQUAL ;
559
575
} else
560
- return strbuf_addf_ret (err , -1 , _ ( "unrecognized %%(%s) argument: %s" ) , "if" , arg );
576
+ return err_bad_arg (err , "if" , arg );
561
577
return 0 ;
562
578
}
563
579
564
580
static int rest_atom_parser (struct ref_format * format , struct used_atom * atom ,
565
581
const char * arg , struct strbuf * err )
566
582
{
567
583
if (arg )
568
- return strbuf_addf_ret (err , -1 , _ ( "%%( rest) does not take arguments" ) );
584
+ return err_no_arg (err , " rest" );
569
585
format -> use_rest = 1 ;
570
586
return 0 ;
571
587
}
572
588
573
589
static int head_atom_parser (struct ref_format * format , struct used_atom * atom ,
574
- const char * arg , struct strbuf * unused_err )
590
+ const char * arg , struct strbuf * err )
575
591
{
592
+ if (arg )
593
+ return err_no_arg (err , "HEAD" );
576
594
atom -> u .head = resolve_refdup ("HEAD" , RESOLVE_REF_READING , NULL , NULL );
577
595
return 0 ;
578
596
}
0 commit comments