author | Lars Hjemli <hjemli@gmail.com> | 2007-07-22 21:57:48 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2007-07-22 21:57:56 (UTC) |
commit | 1d4aaff696ee1b9085dda0f0f3d84d9d20d96db0 (patch) (side-by-side diff) | |
tree | 6674c5168d967c3efdbf8f445e7e975d54e43629 /ui-shared.c | |
parent | 4e9107abfe8d3edff17826875b417bcf40dc7390 (diff) | |
parent | d6b01dac856efda565d4085e77826fd9ac83348a (diff) | |
download | cgit-1d4aaff696ee1b9085dda0f0f3d84d9d20d96db0.zip cgit-1d4aaff696ee1b9085dda0f0f3d84d9d20d96db0.tar.gz cgit-1d4aaff696ee1b9085dda0f0f3d84d9d20d96db0.tar.bz2 |
Merge branch 'master' of git://git.klever.net/patchwork/cgit
* 'master' of git://git.klever.net/patchwork/cgit:
link raw blob from tree file view
fix: changed view link to blob in summary.
allow selective enabling of snapshots
shorten snapshot names to repo basename
introduce cgit_repobasename
added snapshot filename to the link
add plain uncompressed tar snapshort format
introduced .tar.bz2 snapshots
compress .tar.gz using gzip as a filter
added a chk_non_negative check
css: adjust vertical-align of commit info th cells
add support for snapshot tarballs
Conflicts:
ui-summary.c
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | ui-shared.c | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/ui-shared.c b/ui-shared.c index fd71c12..ca2ee82 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -54,30 +54,61 @@ char *cgit_repourl(const char *reponame) return fmt("%s/%s/", cgit_virtual_root, reponame); } else { return fmt("?r=%s", reponame); } } -char *cgit_pageurl(const char *reponame, const char *pagename, - const char *query) +char *cgit_fileurl(const char *reponame, const char *pagename, + const char *filename, const char *query) { if (cgit_virtual_root) { if (query) - return fmt("%s/%s/%s/?%s", cgit_virtual_root, reponame, - pagename, query); + return fmt("%s/%s/%s/%s?%s", cgit_virtual_root, reponame, + pagename, filename?filename:"", query); else return fmt("%s/%s/%s/", cgit_virtual_root, reponame, pagename); } else { if (query) return fmt("?r=%s&p=%s&%s", reponame, pagename, query); else return fmt("?r=%s&p=%s", reponame, pagename); } } +char *cgit_pageurl(const char *reponame, const char *pagename, + const char *query) +{ + 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() { if (!cgit_virtual_root) return cgit_script_name; else if (cgit_query_page) return fmt("%s/%s/%s/", cgit_virtual_root, cgit_query_repo, cgit_query_page); @@ -389,6 +420,8 @@ void cgit_print_snapshot_start(const char *mimetype, const char *filename, htmlf("Content-Disposition: inline; filename=\"%s\"\n", filename); htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime)); htmlf("Expires: %s\n", http_date(item->st.st_mtime + ttl_seconds(item->ttl))); html("\n"); } + +/* vim:set sw=8: */ |