@@ -1505,7 +1505,8 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
15051505 const char * curr_index ;
15061506 const char * index_name = NULL , * pack_name = NULL ;
15071507 const char * keep_name = NULL , * keep_msg = NULL ;
1508- char * index_name_buf = NULL , * keep_name_buf = NULL ;
1508+ struct strbuf index_name_buf = STRBUF_INIT ,
1509+ keep_name_buf = STRBUF_INIT ;
15091510 struct pack_idx_entry * * idx_objects ;
15101511 struct pack_idx_option opts ;
15111512 unsigned char pack_sha1 [20 ];
@@ -1602,24 +1603,22 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
16021603 if (fix_thin_pack && !from_stdin )
16031604 die (_ ("--fix-thin cannot be used without --stdin" ));
16041605 if (!index_name && pack_name ) {
1605- int len = strlen ( pack_name ) ;
1606- if (!ends_with (pack_name , ".pack" ))
1606+ size_t len ;
1607+ if (!strip_suffix (pack_name , ".pack" , & len ))
16071608 die (_ ("packfile name '%s' does not end with '.pack'" ),
16081609 pack_name );
1609- index_name_buf = xmalloc (len );
1610- memcpy (index_name_buf , pack_name , len - 5 );
1611- strcpy (index_name_buf + len - 5 , ".idx" );
1612- index_name = index_name_buf ;
1610+ strbuf_add (& index_name_buf , pack_name , len );
1611+ strbuf_addstr (& index_name_buf , ".idx" );
1612+ index_name = index_name_buf .buf ;
16131613 }
16141614 if (keep_msg && !keep_name && pack_name ) {
1615- int len = strlen ( pack_name ) ;
1616- if (!ends_with (pack_name , ".pack" ))
1615+ size_t len ;
1616+ if (!strip_suffix (pack_name , ".pack" , & len ))
16171617 die (_ ("packfile name '%s' does not end with '.pack'" ),
16181618 pack_name );
1619- keep_name_buf = xmalloc (len );
1620- memcpy (keep_name_buf , pack_name , len - 5 );
1621- strcpy (keep_name_buf + len - 5 , ".keep" );
1622- keep_name = keep_name_buf ;
1619+ strbuf_add (& keep_name_buf , pack_name , len );
1620+ strbuf_addstr (& keep_name_buf , ".idx" );
1621+ keep_name = keep_name_buf .buf ;
16231622 }
16241623 if (verify ) {
16251624 if (!index_name )
@@ -1667,8 +1666,8 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
16671666 else
16681667 close (input_fd );
16691668 free (objects );
1670- free ( index_name_buf );
1671- free ( keep_name_buf );
1669+ strbuf_release ( & index_name_buf );
1670+ strbuf_release ( & keep_name_buf );
16721671 if (pack_name == NULL )
16731672 free ((void * ) curr_pack );
16741673 if (index_name == NULL )
0 commit comments