| Commit message (Collapse) | Author | Age |
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a path to a directory was specified for the 'plain'
view, each blob in the directory used to be returned to
the client. This patch fixes the issue by matching the
path of each blob against the requested path.
Noticed-by: Lars Stoltenow <penma@penma.de>
Signed-off-by: Lars Hjemli <larsh@slackbox.hjemli.net>
|
| |
| |
| |
| | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| |
| |
| |
| |
| | |
Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This function is used to read the full content of a textfile into a
newly allocated buffer (with zerotermination).
It replaces the earlier readfile() in scan-tree.c (which was rather
error-prone[1]), and is reused by read_agefile() in ui-repolist.c.
1: No checks for EINTR and EAGAIN, fixed-size buffer
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If readfile() reads an empty file, fgets() won't truncate the buffer
and it'll still contain the contents of the previously read file.
[lh: fixed similar issue in ui-repolist.c]
Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
|\| |
|
| |
| |
| |
| | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The purpose of the tag page is to print info about a specific tag,
but if no tag was specified on the query-string cgit used to segfault.
With this patch, cgit will fallback to the value of the 'h' parameter
instead (which is never NULL due to prepare_repo_cmd() in cgit.c).
It will now also verify that the specified tagname is in fact a valid
ref in the 'refs/tags/' namespace, i.e. specifying 'id=master' will
trigger a 'Bad tag reference' error.
Noticed-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| |
| |
| |
| | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a lightweight tag is referencing a commit object, cgit now uses
the commit date when comparing tag age. Also, the commitdate and author
info is printed in the refs view, making lightweight tags appear similar
to annotated tags.
Signed-off-by: Stefan Bühler <lighttpd@stbuehler.de>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| |
| |
| |
| | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When embedded=1, cgit used to ignore the header and footer options.
But honoring these options when embedded=1 makes it possible to "frame"
the html fragment generated by cgit with any kind of static content,
i.e. it should become easier to integrate cgit with site-specfic
layouts.
Original-patch-by: Mark Constable <markc@renta.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
|/ /
| |
| |
| | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| |
| |
| |
| | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
|\ \
| | |
| | |
| | |
| | | |
Conflicts:
cgit.h
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This change makes it possible to include any number of pages below
the 'about' tab for a repository. The path is assumed to be located
in the same directory as the 'repo.readme' file.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
|\| |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
cgit.c
cgit.h
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
These options can be used to override the default commit- and source-
filter settings per repository.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This simplifies the code in ui-snapshot.c and makes the test-suite
verify the new filter-functions.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Martin Szulecki <opensuse@sukimashita.com>
|
|/ /
| |
| |
| | |
Signed-off-by: Martin Szulecki <opensuse@sukimashita.com>
|
|\ \
| | |
| | |
| | |
| | |
| | | |
Conflicts:
cgitrc.5.txt
ui-shared.c
|
| | |
| | |
| | |
| | | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
ui-shared.c
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This is a quick 'n dirty hack which makes cgit honor HEAD requests.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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>
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
|