@@ -50,8 +50,7 @@ struct ls_tree_options {
5050 LS_SHOW_TREES = 1 << 2 ,
5151 } ls_options ;
5252 struct pathspec pathspec ;
53- int chomp_prefix ;
54- const char * ls_tree_prefix ;
53+ const char * prefix ;
5554 const char * format ;
5655};
5756
@@ -128,8 +127,7 @@ static int show_tree_fmt(const struct object_id *oid, struct strbuf *base,
128127 strbuf_add_unique_abbrev (& sb , oid , options -> abbrev );
129128 else if (skip_prefix (format , "(path)" , & format )) {
130129 const char * name ;
131- const char * prefix = options -> chomp_prefix ?
132- options -> ls_tree_prefix : NULL ;
130+ const char * prefix = options -> prefix ;
133131 struct strbuf sbuf = STRBUF_INIT ;
134132 size_t baselen = base -> len ;
135133
@@ -173,7 +171,7 @@ static void show_tree_common_default_long(struct ls_tree_options *options,
173171 const char * pathname ,
174172 const size_t baselen )
175173{
176- const char * prefix = options -> chomp_prefix ? options -> ls_tree_prefix : NULL ;
174+ const char * prefix = options -> prefix ;
177175
178176 strbuf_addstr (base , pathname );
179177
@@ -258,7 +256,7 @@ static int show_tree_name_only(const struct object_id *oid, struct strbuf *base,
258256 if (early >= 0 )
259257 return early ;
260258
261- prefix = options -> chomp_prefix ? options -> ls_tree_prefix : NULL ;
259+ prefix = options -> prefix ;
262260 strbuf_addstr (base , pathname );
263261 if (options -> null_termination ) {
264262 struct strbuf sb = STRBUF_INIT ;
@@ -345,6 +343,7 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
345343 struct object_id oid ;
346344 struct tree * tree ;
347345 int i , full_tree = 0 ;
346+ int chomp_prefix = prefix && * prefix ;
348347 read_tree_fn_t fn = NULL ;
349348 enum ls_tree_cmdmode cmdmode = MODE_DEFAULT ;
350349 int null_termination = 0 ;
@@ -366,7 +365,7 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
366365 MODE_NAME_STATUS ),
367366 OPT_CMDMODE (0 , "object-only" , & cmdmode , N_ ("list only objects" ),
368367 MODE_OBJECT_ONLY ),
369- OPT_SET_INT (0 , "full-name" , & options . chomp_prefix ,
368+ OPT_SET_INT (0 , "full-name" , & chomp_prefix ,
370369 N_ ("use full path names" ), 0 ),
371370 OPT_BOOL (0 , "full-tree" , & full_tree ,
372371 N_ ("list entire tree; not just current directory "
@@ -381,18 +380,15 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
381380 int ret ;
382381
383382 git_config (git_default_config , NULL );
384- options .ls_tree_prefix = prefix ;
385- if (prefix )
386- options .chomp_prefix = strlen (prefix );
387383
388384 argc = parse_options (argc , argv , prefix , ls_tree_options ,
389385 ls_tree_usage , 0 );
390386 options .null_termination = null_termination ;
391387
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+
396392 /*
397393 * We wanted to detect conflicts between --name-only and
398394 * --name-status, but once we're done with that subsequent
0 commit comments