aboutsummaryrefslogtreecommitdiffstats
path: root/cgit.c
AgeCommit message (Collapse)AuthorFilesLines
2009-08-21Rename "linenumbers" to "enable-tree-linenumbers", change default to "1"Lars Hjemli1-2/+3
This makes the name of the cgitrc option more descriptive and at the same time changes the default from "0" to "1" in an attempt to stay backwards compatible - prior to the introduction of "source-filter" and "linenumbers", cgit always generated linenumber links in the tree view, but now this feature can be turned off (one might want to do this if the source-filter performs line-wrapping etc). While at it, the documentation is updated to match the surrounding descriptions. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-21Add 'linenumbers' config optionFlorian Pritz1-0/+2
Signed-off-by: Florian Pritz <bluewind@xssn.at> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-20cgit.c: fix caching keyed on PATH_INFO with no QUERY_STRINGLars Hjemli1-1/+1
When generating a hash for caching, ctx.qry.raw is used as key. And since cgit_parse_url() zero-terminates it's argument (after the repo path), ctx.qry.raw must xstrdup(ctx.qry.url). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-17Merge branch 'stable'Lars Hjemli1-0/+3
2009-08-17cgit.c: do not segfault on unexpected query-string formatLars Hjemli1-0/+3
The querystring_cb() function will be invoked with a NULL value when the querystring contains a name not followed by a '='. Such a value used to cause a segfault, which this patch fixes. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-11Merge branch 'lh/embedded'Lars Hjemli1-10/+27
2009-08-10cgit.c: make '/cgit.png' the default value for 'logo' optionLars Hjemli1-1/+1
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-10ui-shared: add support for NO_HTTP=1/--nohttpLars Hjemli1-0/+4
cgit_print_http_headers() used to do nothing if 'embedded' was specified in cgitrc, but that was wrong - we never want to skip the headers when invoked as a CGI app. Sadly, there's no easy way to detect if we're invoked as a CGI app or if we're invoked by another CGI app, so for the latter case cgit needs to be invoked with either --nohttp on the command line or NO_HTTP=1 in the environment. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-10Cleanup handling of environment variablesLars Hjemli1-10/+23
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-09Merge branch 'lh/about'Lars Hjemli1-0/+4
Conflicts: cgit.h
2009-08-09Merge branch 'lh/plugins'Lars Hjemli1-0/+23
Conflicts: cgit.c cgit.h
2009-08-09Merge branch 'lh/mimetypes'Lars Hjemli1-0/+11
2009-08-09Add 'about-filter' and 'repo.about-filter' optionsLars Hjemli1-0/+4
These options can be used to execute a filter command on each about-page, both top-level and for each repository (repo.about-filter can be used to override the current about-filter). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-09cgit.c: allow repo.*-filter options to unset the current defaultLars Hjemli1-1/+1
If e.g. repo.commit-filter is specified as an empty string, this is now properly handled as disabling the global commit-filter setting for the current repository. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-09Add support for repo.commit-filter and repo.source-filterLars Hjemli1-0/+4
These options can be used to override the default commit- and source- filter settings per repository. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-08Introduce noplainemail option to hide email adresses from spambotsMartin Szulecki1-0/+2
Signed-off-by: Martin Szulecki <opensuse@sukimashita.com>
2009-07-31ui-commit: add support for 'commit-filter' optionLars Hjemli1-0/+2
This new option specifies a filter which is executed on the commit message, i.e. the commit message is written to the filters STDIN and the filters STDOUT is included verbatim as the commit message. This can be used to implement commit linking by creating a simple shell script in e.g. /usr/bin/cgit-commit-filter.sh like this: #/bin/sh sed -re 's|\b([0-9a-fA-F]{6,40})\b|<a href="./?id=\1">\1</a>|g' Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-07-31ui-tree: add support for source-filter optionLars Hjemli1-0/+2
This new option is used to specify an external command which will be executed when displaying blob content in the tree view. Blob content will be written to STDIN of the filter and STDOUT from the filter will be included verbatim in the html output from cgit. The file name of the blob will be passed as the only argument to the filter command. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-07-31Add generic filter/plugin infrastructureLars Hjemli1-0/+15
The functions cgit_open_filter() and cgit_close_filter() can be used to execute filters on the output stream from cgit. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-07-25Add support for mime type registration and lookupLars Hjemli1-0/+11
This patch makes it possible to register mappings from filename extension to mime type in cgitrc and use this mapping when returning blob content in `plain` view. The reason for adding this mapping to cgitrc (as opposed to parsing something like /etc/mime.types) is to allow quick lookup of a limited number of filename extensions (/etc/mime-types on my machine currently contains over 700 entries). NB: A nice addition to this patch would be to parse /etc/mime.types when `plain` view is requested for a file with an extension for which there is no mapping registered in cgitrc. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-07-25Merge branch 'lh/embedded'Lars Hjemli1-0/+4
Conflicts: cgitrc.5.txt ui-shared.c
2009-07-25Add support for 'noheader' optionLars Hjemli1-0/+2
This option can be used to disable the standard cgit page header, which might be useful in combination with the 'embedded' option. Suggested-by: Mark Constable <markc@renta.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-07-25Merge branch 'ml/head-include'Lars Hjemli1-0/+2
2009-07-25Merge branch 'plain-etag'Lars Hjemli1-0/+4
Conflicts: ui-shared.c
2009-06-07Return http statuscode 404 on unknown branchLars Hjemli1-0/+2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-06-07Add head-include configuration option.Mark Lodato1-0/+2
This patch adds an option to the configuration file, "head-include", which works just like "header" or "footer", except the content is put into the HTML's <head> tag.
2009-02-19Add support for HEAD requestsLars Hjemli1-0/+3
This is a quick 'n dirty hack which makes cgit honor HEAD requests. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-02-19Add support for ETag in 'plain' viewLars Hjemli1-0/+1
When downloading a blob identified by its path, the client might want to know if the blob has been modified since a previous download of the same path. To this end, an ETag containing the blob SHA1 seems to be ideal. Todo: add support for HEAD requests... Suggested-by: Owen Taylor <otaylor@redhat.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-02-02Add support for an 'embedded' option in cgitrcLars Hjemli1-0/+2
When activated, cgit will neither generate http headers nor any 'framing' html elements (like <html> and <body>). Also, all page content is now wrapped in a <div id='cgit'> element to make it easier to select the correct cgit classes when embedded/themed. Suggested-by: Matt Sealey <matt@genesi-usa.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-01-29Add support for a custom headerLars Hjemli1-0/+2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-01-27Merge branch 'lh/stats'Lars Hjemli1-0/+8
Conflicts: cgit.c cgit.css cgit.h ui-tree.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-01-11Merge branch 'stable'Lars Hjemli1-1/+0
2009-01-11Avoid SEGFAULT on invalid requestsLars Hjemli1-1/+0
When an unknown page is requested, either on the querystring or via PATH_INFO, we end up with a null-referencing cgit_cmd. This null- pointer is then used as argument to the hc() function (which decides what tab to render as 'active'), but this function failed to check if a valid cmd was specified and a SEGFAULT would occur. This patch fixes the issue by introducing a 'fallback-cmd' which specifies what tab to render as 'active' when no valid cmd is requested. While at it, we now also keep track of the active repository even if an invalid cmd was requested since we want to show the error message about the invalid request in the correct context. Noticed-by: Robin Redeker <elmex@ta-sa.org> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-26Untie logic for SCRIPT_NAME and PATH_INFOLars Hjemli1-20/+21
SCRIPT_NAME is used as fallback for virtual-root when virtual-root is unspecified in cgitrc and PATH_INFO is used as fallback for the query- string parameter 'url' when the latter is unspecified. But until now, the use of PATH_INFO depended on virtual-root also being unspecified, i.e. it was impossible to use PATH_INFO when virtual-root was specified. This commit makes the fallback on SCRIPT_NAME and PATH_INFO independent code paths, i.e. it is now possible to specify virtual-root in cgitrc while still using PATH_INFO (instead of rewrite rules) to get 'pretty urls'. Noticed-by: Jack Moffitt <jack@chesspark.com> Noticed-by: LiKai Liu <liulk@cs.bu.edu> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-07ui-stats: replace 'enable-stats' setting with 'max-stats'Lars Hjemli1-4/+6
The new 'max-stats' and 'repo.max-stats' settings makes it possible to define the maximum statistics period, both globally and per repo. Hence, it is now feasible to allow statistics on repositories with a high commit frequency, like linux-2.6, by setting repo.max-stats to e.g. 'month'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-06Add a 'stats' page to each repoLars Hjemli1-0/+6
This new page, which is disabled by default, can be used to print some statistics about the number of commits per period in the repository, where period can be either weeks, months, quarters or years. The function can be activated globally by setting 'enable-stats=1' in cgitrc and disabled for individual repos by setting 'repo.enable-stats=0'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-06Merge branch 'full-log'Lars Hjemli1-0/+2
Conflicts: cgit.c cgit.h
2008-11-29ui-log: add support for showing the full commit messageLars Hjemli1-0/+2
Some users prefer to see the full message, so to make these users happy the new querystring parameter "showmsg" can be used to print the full commit message per log entry. A link is provided in the log heading to make this function accessible, and all links and forms tries to preserve the users preference. Note: the new link is not displayed on the summary page since the point of the summary page is to be a summary, but it is still obeyed if specified manually. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-29Add support for sorting by Age in the repolistBenjamin Close1-0/+2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-11Add cgit_query.nohead flagLars Hjemli1-0/+1
This flag is set when no HEAD is specified in the querystring. Currently it has no users, but it will be used by ui-snapshot to invoke a DWIM-mode where the revision is extracted from the snapshot name. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-09-15Add support for --scan-tree=<path> option to cgitLars Hjemli1-3/+44
This option makes cgit scan a directory tree looking for git repositories, generating suitable definitions for a cgitrc file on stdout. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-09-15Teach cgit how to use PATH_INFOLars Hjemli1-0/+27
This commit makes cgit use the cgi variables SCRIPT_NAME and PATH_INFO when virtual-root is unspecified in cgitrc and no url-parameter is specified on the querystring. This has two nice effects: * Virtual urls works out of the box, no more need for rewrite-rules in httpd. * Virtual urls with special querystring characters are handled correctly. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-06Implement plain viewLars Hjemli1-0/+1
This implements a way to access plain blobs by path (similar to the tree view) instead of by sha1. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-01Added `local-time` option to cgitrcStefan Naewe1-0/+3
When `local-time` is set, commit, tag and patch timestamps will be printed in the servers timezone. Also, regardless of the value of `local-time`, these timestamps will now always show the timezone. Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-27Modify default value for a few cgitrc optionsLars Hjemli1-2/+5
The default max-length used when printing commit messages and repo descriptions can be increased due to the new layout (no sidebar). Also, on the repo summary page I believe it makes sense to only show the ten most recent branches and tags by default, just as it makes sense to show the ten most recent commit messages for the active branch. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-27Be prepared for empty repositoriesLars Hjemli1-3/+7
Before this patch, cgit would segfault on repositories with no refs. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-19Add a favicon option to cgitrcLars Hjemli1-0/+2
This option is used to specify a shortcut icon on all cgit pages. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-06-26Add support for including a footer on all pagesLars Hjemli1-0/+2
The new cgitrc option `footer` can be used to include a html-file which replaces the standard 'generated by cgit' message at the bottom of each page. Suggested-by: Peter Danenberg <pcd@wikitex.org> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-06-24allow specification of directly linked blobs mimetypesMichael Krelin1-0/+2
Signed-off-by: Michael Krelin <hacker@klever.net>
2008-05-18cache.c: do not ignore errors from print_slot()Lars Hjemli1-2/+2
If print_slot() fails, the client will be served an inferior response. This patch makes sure that such an error will be returned to main(), which in turn will try to inform about the error in the response itself. The error is also printed to the cache_log, i.e. stderr, which will make the error message appear in error_log (atleast when httpd==apache). Noticed-by: Jim Meyering <jim@meyering.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>