@ -1192,35 +1192,17 @@ void cgit_print_snapshot_links(const struct cgit_repo *repo, const char *ref,
void cgit_set_title_from_path ( const char * path )
{
size_t path_len , path_index , path_last_end , line_len ;
char * new_title ;
struct strbuf sb = STRBUF_INIT ;
const char * slash , * last_slash ;
if ( ! path )
return ;
path_len = strlen ( path ) ;
new_title = xmalloc ( path_len + 3 + strlen ( ctx . page . title ) + 1 ) ;
new_title [ 0 ] = ' \0 ' ;
for ( path_index = path_len , path_last_end = path_len ; path_index - - > 0 ; ) {
if ( path [ path_index ] = = ' / ' ) {
if ( path_index = = path_len - 1 ) {
path_last_end = path_index - 1 ;
continue ;
}
strncat ( new_title , & path [ path_index + 1 ] , path_last_end - path_index - 1 ) ;
line_len = strlen ( new_title ) ;
new_title [ line_len + + ] = ' \\ ' ;
new_title [ line_len ] = ' \0 ' ;
path_last_end = path_index ;
}
for ( last_slash = path + strlen ( path ) ; ( slash = memrchr ( path , ' / ' , last_slash - path ) ) ! = NULL ; last_slash = slash ) {
strbuf_add ( & sb , slash + 1 , last_slash - slash - 1 ) ;
strbuf_addstr ( & sb , " \xc2 \xab " ) ;
}
if ( path_last_end )
strncat ( new_title , path , path_last_end ) ;
line_len = strlen ( new_title ) ;
memcpy ( & new_title [ line_len ] , " - " , 3 ) ;
new_title [ line_len + 3 ] = ' \0 ' ;
strncat ( new_title , ctx . page . title , sizeof ( new_title ) - strlen ( new_title ) - 1 ) ;
ctx . page . title = new_title ;
strbuf_add ( & sb , path , last_slash - path ) ;
strbuf_addf ( & sb , " - %s " , ctx . page . title ) ;
ctx . page . title = strbuf_detach ( & sb , NULL ) ;
}