Commit Briefs
gotwebd: urlencode also the double quote character
URLs are embedded as part of the HTML and, while it seems legal from RFC3986 to leave that character unquoted, we need it quoted to avoid breaking the HTML output. ok tracey@
gotwebd: templateify gotweb_render_tree
ok tracey@
gotwebd: render BLOB inline, add BLOBRAW for serving raw blobs
binary blobs are automatically redirected to the BLOBRAW page (which is the old BLOB.) ok jamske
change gotweb_render_content_type argument type to const char *
it's a string, `const char *' is fine (and what all the callers use anyway.)
gotwebd: use Content-Disposition for RSS; sets the filename
Since gotwebd serves the RSS from a path without a file name component, browsers just make up a random string to give the file a name which can be confusing. Furthermore, since it's served as application/rss+xml they try to render the XML (failing.) Use gotweb_render_content_type_file (which sets the Content-Disposition HTTP header) to fix both: the feed is now called <repo-name>.rss and set as attachment (thus saved and not rendered.) Change the function to take an optional filename suffix for the occasion. ok jamsek
gotwebd: tweak gotweb_render_content_type_file parameters type
`type' and `file' are strings so use `const char *' for both.
gotwebd: drop redundant NULL check
qs is guaranteed to be not NULL reached that point.
gotwebd: remove useless comment
should be placed further down, after BLOB and RSS are handled, but the call to `gotweb_render_header' is successfully clear on its own.
gotwebd: add an RSS feed for the tags
ok tracey@
gotwebd: templateify gotweb_render_commits
ok tracey@
gotwebd: templateify gotweb_render_navs
ok tracey@
gotwebd: drop index_page_str and page_str
gotwebd uses sprintf to update index_page_str and page_str if they were negative. While this specific usage is safe, let's drop it. Since the index_page_str and page_str fields are never read from, remove them. This saves two allocations per request too. ok tracey@
gotwebd: start using the template system
ok tracey@
gotwebd: rework gotweb_get_repo_{description,cloneurl}
- use openat(2) since we've already opened the containing dir - use fstat(2) instead of multiple seeks - don't special case len == 0 ok and improvements by stsp
gotwebd: simplify gotweb_render_index
- drops the double loop; paginate in one go - avoid lstat + got_path_dir_is_empty for each entry: use dt_type if provided by the underlying filesystem - fixes a memleak: before `continue' we need to call gotweb_free_repo_dir ok stsp
gotwebd: use prev_disp to decide when to we've reached max_repos
instead of hardcoding d_i - 2 and so expecting only "." and ".." as skipped entries, use t->prev_disp that is the number of repositories traversed until now (both skipped due to the pagination and the ones actually rendered.) ok jamsek
gotwebd: fix memleak in error path
ok stsp@
add respect_exportok flag, defaulting to off
allows to hide repositories if they have the magic git-daemon-export-ok file ok op@ tracey@ stsp@
send a newline first if erroring out in plaintext mode
otherwise, the webserver might complain: 'upstream sent invalid header: "gotwebd\x20..." while reading response header from upstream' ok stsp@
gotwebd: drop needless NULL check
We can assume that the querystring was initialized when we reach gotweb_render_header. ok tracey@
gotwebd: percent-encode generated URLs
This adds a new helper function `gotweb_link' that outputs an HTML link with the parameter correctly escaped. ok stsp@