@@ -50,8 +50,7 @@ struct ls_tree_options {
50
50
LS_SHOW_TREES = 1 << 2 ,
51
51
} ls_options ;
52
52
struct pathspec pathspec ;
53
- int chomp_prefix ;
54
- const char * ls_tree_prefix ;
53
+ const char * prefix ;
55
54
const char * format ;
56
55
};
57
56
@@ -128,8 +127,7 @@ static int show_tree_fmt(const struct object_id *oid, struct strbuf *base,
128
127
strbuf_add_unique_abbrev (& sb , oid , options -> abbrev );
129
128
else if (skip_prefix (format , "(path)" , & format )) {
130
129
const char * name ;
131
- const char * prefix = options -> chomp_prefix ?
132
- options -> ls_tree_prefix : NULL ;
130
+ const char * prefix = options -> prefix ;
133
131
struct strbuf sbuf = STRBUF_INIT ;
134
132
size_t baselen = base -> len ;
135
133
@@ -173,7 +171,7 @@ static void show_tree_common_default_long(struct ls_tree_options *options,
173
171
const char * pathname ,
174
172
const size_t baselen )
175
173
{
176
- const char * prefix = options -> chomp_prefix ? options -> ls_tree_prefix : NULL ;
174
+ const char * prefix = options -> prefix ;
177
175
178
176
strbuf_addstr (base , pathname );
179
177
@@ -258,7 +256,7 @@ static int show_tree_name_only(const struct object_id *oid, struct strbuf *base,
258
256
if (early >= 0 )
259
257
return early ;
260
258
261
- prefix = options -> chomp_prefix ? options -> ls_tree_prefix : NULL ;
259
+ prefix = options -> prefix ;
262
260
strbuf_addstr (base , pathname );
263
261
if (options -> null_termination ) {
264
262
struct strbuf sb = STRBUF_INIT ;
@@ -345,6 +343,7 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
345
343
struct object_id oid ;
346
344
struct tree * tree ;
347
345
int i , full_tree = 0 ;
346
+ int chomp_prefix = prefix && * prefix ;
348
347
read_tree_fn_t fn = NULL ;
349
348
enum ls_tree_cmdmode cmdmode = MODE_DEFAULT ;
350
349
int null_termination = 0 ;
@@ -366,7 +365,7 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
366
365
MODE_NAME_STATUS ),
367
366
OPT_CMDMODE (0 , "object-only" , & cmdmode , N_ ("list only objects" ),
368
367
MODE_OBJECT_ONLY ),
369
- OPT_SET_INT (0 , "full-name" , & options . chomp_prefix ,
368
+ OPT_SET_INT (0 , "full-name" , & chomp_prefix ,
370
369
N_ ("use full path names" ), 0 ),
371
370
OPT_BOOL (0 , "full-tree" , & full_tree ,
372
371
N_ ("list entire tree; not just current directory "
@@ -381,18 +380,15 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
381
380
int ret ;
382
381
383
382
git_config (git_default_config , NULL );
384
- options .ls_tree_prefix = prefix ;
385
- if (prefix )
386
- options .chomp_prefix = strlen (prefix );
387
383
388
384
argc = parse_options (argc , argv , prefix , ls_tree_options ,
389
385
ls_tree_usage , 0 );
390
386
options .null_termination = null_termination ;
391
387
392
- if (full_tree ) {
393
- options . ls_tree_prefix = prefix = NULL ;
394
- options .chomp_prefix = 0 ;
395
- }
388
+ if (full_tree )
389
+ prefix = NULL ;
390
+ options .prefix = chomp_prefix ? prefix : NULL ;
391
+
396
392
/*
397
393
* We wanted to detect conflicts between --name-only and
398
394
* --name-status, but once we're done with that subsequent
0 commit comments