@@ -1599,6 +1599,18 @@ static void show_pack_info(int stat_only)
15991599 }
16001600}
16011601
1602+ static const char * derive_filename (const char * pack_name , const char * suffix ,
1603+ struct strbuf * buf )
1604+ {
1605+ size_t len ;
1606+ if (!strip_suffix (pack_name , ".pack" , & len ))
1607+ die (_ ("packfile name '%s' does not end with '.pack'" ),
1608+ pack_name );
1609+ strbuf_add (buf , pack_name , len );
1610+ strbuf_addstr (buf , suffix );
1611+ return buf -> buf ;
1612+ }
1613+
16021614int cmd_index_pack (int argc , const char * * argv , const char * prefix )
16031615{
16041616 int i , fix_thin_pack = 0 , verify = 0 , stat_only = 0 ;
@@ -1707,24 +1719,11 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
17071719 usage (index_pack_usage );
17081720 if (fix_thin_pack && !from_stdin )
17091721 die (_ ("--fix-thin cannot be used without --stdin" ));
1710- if (!index_name && pack_name ) {
1711- size_t len ;
1712- if (!strip_suffix (pack_name , ".pack" , & len ))
1713- die (_ ("packfile name '%s' does not end with '.pack'" ),
1714- pack_name );
1715- strbuf_add (& index_name_buf , pack_name , len );
1716- strbuf_addstr (& index_name_buf , ".idx" );
1717- index_name = index_name_buf .buf ;
1718- }
1719- if (keep_msg && !keep_name && pack_name ) {
1720- size_t len ;
1721- if (!strip_suffix (pack_name , ".pack" , & len ))
1722- die (_ ("packfile name '%s' does not end with '.pack'" ),
1723- pack_name );
1724- strbuf_add (& keep_name_buf , pack_name , len );
1725- strbuf_addstr (& keep_name_buf , ".idx" );
1726- keep_name = keep_name_buf .buf ;
1727- }
1722+ if (!index_name && pack_name )
1723+ index_name = derive_filename (pack_name , ".idx" , & index_name_buf );
1724+ if (keep_msg && !keep_name && pack_name )
1725+ keep_name = derive_filename (pack_name , ".keep" , & keep_name_buf );
1726+
17281727 if (verify ) {
17291728 if (!index_name )
17301729 die (_ ("--verify with no packfile name given" ));
0 commit comments