diff options
| -rw-r--r-- | cgit.h | 2 | ||||
| -rw-r--r-- | ui-shared.c | 24 | 
2 files changed, 26 insertions, 0 deletions
| @@ -206,6 +206,8 @@ extern char *cgit_fileurl(const char *reponame, const char *pagename,  extern char *cgit_pageurl(const char *reponame, const char *pagename,  			  const char *query); +extern const char *cgit_repobasename(const char *reponame); +  extern void cgit_tree_link(char *name, char *title, char *class, char *head,  			   char *rev, char *path);  extern void cgit_log_link(char *name, char *title, char *class, char *head, diff --git a/ui-shared.c b/ui-shared.c index 1c1415e..3e378a4 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -81,6 +81,30 @@ char *cgit_pageurl(const char *reponame, const char *pagename,  	return cgit_fileurl(reponame,pagename,0,query);  } +const char *cgit_repobasename(const char *reponame) +{ +	/* I assume we don't need to store more than one repo basename */ +	static char rvbuf[1024]; +	int p; +	const char *rv; +	strncpy(rvbuf,reponame,sizeof(rvbuf)); +	if(rvbuf[sizeof(rvbuf)-1]) +		die("cgit_repobasename: truncated repository name '%s'", reponame); +	p = strlen(rvbuf)-1; +	/* strip trailing slashes */ +	while(p && rvbuf[p]=='/') rvbuf[p--]=0; +	/* strip trailing .git */ +	if(p>=3 && !strncmp(&rvbuf[p-3],".git",4)) { +		p -= 3; rvbuf[p--] = 0; +	} +	/* strip more trailing slashes if any */ +	while( p && rvbuf[p]=='/') rvbuf[p--]=0; +	/* find last slash in the remaining string */ +	rv = strrchr(rvbuf,'/'); +	if(rv) +		return ++rv; +	return rvbuf; +}  char *cgit_currurl()  { | 
