aboutsummaryrefslogtreecommitdiffstats
path: root/ui-tree.c
Commit message (Collapse)AuthorAgeLines
* Reduce line number bloat, fix hover effectGravatar Peter Wu2014-01-08-2/+1
| | | | | | | | | | | | | | | | | | | | | Currently line numbers look like (for blob view and sdiff respectively): <a class='no' id='n68' name='n68' href='#n68'>68</a> <td class='lineno'><a class='no' href='...#n1' id='n1' name='n1'>1</a></td> name=".." is unnecessary if the id attribute is set (this even applies to IE6), so drop it. (aside, in HTML5, the name attribute is gone.) The line number links can be selected through their parent classes, no need for another class "no", so drop it too. For a file with 2000 lines, this yields a saving of 40% (29% gzipped). While at it, fix the hover effect of line numbers: now the line number get a black background as was intended. Signed-off-by: Peter Wu <lekensteyn@gmail.com> Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* use struct strbuf instead of static buffersGravatar John Keeping2013-04-08-16/+17
| | | | | | | | | | | | | | | | | | | Use "struct strbuf" from Git to remove the limit on file path length. Notes on scan-tree: This is slightly involved since I decided to pass the strbuf into add_repo() and modify if whenever a new file name is required, which should avoid any extra allocations within that function. The pattern there is to append the filename, use it and then reset the buffer to its original length (retaining a trailing '/'). Notes on ui-snapshot: Since write_archive modifies the argv array passed to it we copy the argv_array values into a new array of char* and then free the original argv_array structure and the new array without worrying about what the values now look like. Signed-off-by: John Keeping <john@keeping.me.uk>
* Convert cgit_print_error to a variadic functionGravatar John Keeping2013-04-08-8/+5
| | | | | | | | | This removes many uses of "fmt" which uses a fixed size static pool of fixed size buffers. Instead of relying on these, we now pass around argument lists for as long as possible before using a strbuf to render content of an arbitrary size. Signed-off-by: John Keeping <john@keeping.me.uk>
* Always #include corresponding .h in .c filesGravatar John Keeping2013-04-08-0/+1
| | | | | | | | | | | | While doing this, remove declarations from header files where the corresponding definition is declared "static" in order to avoid build errors. Also re-order existing headers in ui-*.c so that the file-specific header always comes immediately after "cgit.h", helping with future consistency. Signed-off-by: John Keeping <john@keeping.me.uk>
* cgit_print_tree(): Free curr_rev after usageGravatar Lukas Fleischer2013-03-05-2/+6
| | | | | | | | | | | | | | | | Fixes following memory leak seen with "PATH_INFO=/cgit/tree/": ==15715== 7 bytes in 1 blocks are definitely lost in loss record 4 of 51 ==15715== at 0x4C2C04B: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==15715== by 0x56F2DF1: strdup (in /usr/lib/libc-2.17.so) ==15715== by 0x46CAA8: xstrdup (wrapper.c:35) ==15715== by 0x418A4C: cgit_print_tree (ui-tree.c:274) ==15715== by 0x407D91: tree_fn (cmd.c:131) ==15715== by 0x405E16: process_request (cgit.c:574) ==15715== by 0x4074C8: cache_process (cache.c:322) ==15715== by 0x406C4F: main (cgit.c:872) Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* ui-tree.c: Use a context structure in walk_tree()Gravatar Lukas Fleischer2013-03-04-22/+29
| | | | | | | | | | Use the context pointer to pass context information instead of misusing global variables, as we already did in "ui-blob.c" and in "ui-plain.c". In addition to the fixes to walk_tree(), pass the same structure to ls_tree() and ls_item() which is read_tree_recursive()-based as well. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* ui-tree.c: Drop the header variableGravatar Lukas Fleischer2013-03-04-6/+2
| | | | | | | Instead, use the value of the state variable to determine whether the footer needs to be drawn. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* ui-tree.c: Declare the state variable globallyGravatar Lukas Fleischer2013-03-04-1/+2
| | | | | | | | | | | This allows for removing the header variable in a following patch. We can use the state variable to check whether the tail needs to be printed instead. Note that the state variable will be moved into a context structure later. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* ui-tree.c: Pass current revision to print_object()Gravatar Lukas Fleischer2013-03-04-3/+3
| | | | | | | | | | No longer access the global curr_rev variable in print_object(). This will make it easier to squash the curr_rev variable into a context structure without having to pass the context to the print_object() function. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* White space around control verbs.Gravatar Jason A. Donenfeld2013-03-04-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* Fix several whitespace errorsGravatar Lukas Fleischer2013-03-04-2/+2
| | | | | | | | | | * Remove whitespace at the end of lines. * Replace space indentation by tabs. * Add whitespace before/after several operators ("+", "-", "*", ...) * Add whitespace to assignments ("foo = bar;"). * Fix whitespace in parameter lists ("foobar(foo, bar, 42)"). Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* Update git to v1.7.6.5Gravatar John Keeping2013-03-03-3/+13
| | | | | | struct pathspec is now used in more places. Signed-off-by: John Keeping <john@keeping.me.uk>
* ui-tree.c: add support for path-selected submodule linksGravatar Lars Hjemli2011-06-15-9/+4
| | | | | | | | | | | The current 'repo.module-link' option is sufficient when all gitlinks in a repository can be converted to commit links in a uniform way, but not when different submodules/paths needs different settings. This patch adds support for 'repo.module-link.<path>', which will be used for linking to submodules at paths matching one such entry. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* cgit.c: always setup cgit repo environment variablesGravatar Lars Hjemli2011-06-14-1/+1
| | | | | | | | | | | | When cgit learned to setup environment variables for certain repo settings before invoking a filter process, the setup occurred inside cgit_open_filter(). This patch moves the setup out of cgit_open_filter() and into prepare_repo_cmd() to prepare for additional uses of these variables. Reviewed-by: Ferry Huberts <mailings@hupie.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'fh/filter-api'Gravatar Lars Hjemli2011-05-24-1/+1
|\ | | | | | | | | Conflicts: cgit.c
| * cgit_open_filter: also take the repo as a parameterGravatar Ferry Huberts2011-03-26-1/+1
| | | | | | | | | | | | | | | | To prepare for handing repo configuration to the filter script that is executed. Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | source_filter: fix a memory leakGravatar Ferry Huberts2011-03-26-0/+2
|/ | | | | Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* prefer html_raw() to write()Gravatar Mark Lodato2010-09-05-1/+1
| | | | | | | To make the code more consistent, and to not rely on the implementation of html(), always use html_raw(...) instead of write(htmlfd, ...). Signed-off-by: Mark Lodato <lodatom@gmail.com>
* fix errors in printf-style format stringsGravatar Mark Lodato2010-09-05-2/+2
| | | | | | | | | | | | | | | | | There were many places where the arguments to a printf-like function did not match the format string. Mostly, these were a missing 'l' flag, but there were three exceptions: - In ui-stats.c, a size_t argument must be printed. C99 has the "%zu" flag for this purpose, but not all compilers support this. Therefore, we mimic what git does - use a NO_C99_FORMAT Makefile variable. - In ui-stats.c, cgit_print_error() was called with a pointer instead of a character. - In ui-log.c, the "columns" argument was never used. Signed-off-by: Mark Lodato <lodatom@gmail.com>
* ui-tree: Remove unnecessary path breadcrumb navigationGravatar Johan Herland2010-06-19-13/+2
| | | | | | | | | | | | The path breadcrumb navigation at the top of the 'tree' page has now been duplicated in ui-shared, which leaves the ui-tree implementation unnecessary. This patch removes the breadcrumb navigation from ui-tree, and moves the "(plain)" link that followed the breadcrumb when displaying blobs to the end of the next line, following the blob SHA1. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tree: add link to plain view for blobs in tree listingGravatar Lars Hjemli2010-03-01-0/+2
| | | | | Suggested-by: Robert Weidlich <mail@robertweidlich.de> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'stable'Gravatar Lars Hjemli2009-12-12-1/+1
|\
| * Fix segfault on ppc when browsing treeGravatar Martins Polakovs2009-12-12-1/+1
| |
* | "max-blob-size" config var to limit generated HTML sizeGravatar Georg Lukas2009-11-28-0/+6
|/ | | | | | | | | Sometimes it is not feasible to generate the HTML pretty-print for large files, especially if a source-filter is involved or binary data is to be displayed. The "max-blob-size" config var allows to disable HTML output for blobs bigger than X KBytes. Plain downloads are not affected. Signed-off-by: Georg Lukas <georg@op-co.de>
* Rename "linenumbers" to "enable-tree-linenumbers", change default to "1"Gravatar Lars Hjemli2009-08-21-1/+1
| | | | | | | | | | | | | | 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>
* Add 'linenumbers' config optionGravatar Florian Pritz2009-08-21-11/+16
| | | | | Signed-off-by: Florian Pritz <bluewind@xssn.at> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tree.c: show line numbers when highlightingGravatar Florian Pritz2009-08-21-9/+11
| | | | | | | | | When source-filter is enabled, cgit currently will not display linenumbers in the tree view. This patch restores the linenumber function. Signed-off-by: Florian Pritz <bluewind@xssn.at> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/plugins'Gravatar Lars Hjemli2009-08-09-4/+14
|\ | | | | | | | | | | Conflicts: cgit.c cgit.h
| * Add support for repo.commit-filter and repo.source-filterGravatar Lars Hjemli2009-08-09-4/+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>
| * ui-tree: add support for source-filter optionGravatar Lars Hjemli2009-08-01-4/+14
| | | | | | | | | | | | | | | | | | | | 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>
* | Expose file extension in tree lists as class to allow nicer tree stylingGravatar Martin Szulecki2009-08-08-1/+7
|/ | | | Signed-off-by: Martin Szulecki <opensuse@sukimashita.com>
* fix segfault when displaying empty blobsGravatar Eric Wong2009-03-15-5/+8
| | | | | | | | When size is zero, subtracting one from it turns it into ULONG_MAX which causes an out-of-bounds access on buf. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tree: escape ascii-text properly in hexdump viewGravatar Lars Hjemli2009-02-12-4/+9
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tree: show hexdump of binary blobsGravatar Lars Hjemli2009-02-01-23/+48
| | | | | | | This teaches ui-tree to detect binary blobs and display them similar to `hexdump -C` (only wider). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'og/tree-view-selection'Gravatar Lars Hjemli2009-01-28-15/+16
|\ | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * changed objects are outputted, allowing for selections of code onlyGravatar Onne Gorter2009-01-10-15/+16
| |
* | Merge branch 'lh/stats'Gravatar Lars Hjemli2009-01-28-0/+3
|\ \ | |/ |/| | | | | | | | | | | | | | | Conflicts: cgit.c cgit.css cgit.h ui-tree.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-tree: add link to stats page per pathGravatar Lars Hjemli2008-12-07-0/+3
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'stable'Gravatar Lars Hjemli2009-01-07-2/+4
|\ \
| * | ui-tree.c: do not add blank line when displaying blobsGravatar Lars Hjemli2009-01-07-2/+4
| |/ | | | | | | | | | | | | Also, fix a related bug in the test-suite. Noticed-by: Jim Meyering <jim@meyering.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-log: add support for showing the full commit messageGravatar Lars Hjemli2008-11-30-1/+1
|/ | | | | | | | | | | | | | | 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>
* ui-tree: link to plain view instead of blob viewGravatar Lars Hjemli2008-08-06-4/+4
| | | | | | | | | | | The urls for plain view makes it possible to download blobs without knowing their SHA1, but the function needs to be promoted and the link from tree view seems like a perfect fit. PS: Although hidden, the blob view still is nice for direct blob access so there's no point in removing it. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Adjust to new calling convention for read_tree_recursive()Gravatar Lars Hjemli2008-07-21-5/+7
| | | | | | | | In GIT-1.6.0, read_tree_recursive takes an extra void pointer for callback data. We might want to use this to avoid some global variables, but for now lets just make sure that we can still compile. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-tree.c: avoid peeking at GITLINK objectsGravatar Lars Hjemli2008-05-21-6/+8
| | | | | | | | | When an object in the tree has GITLINK mode-bits we don't need to get any more info about that particular object (and trying to get more info about it will usually generate an annoying warning on stderr since the object typically doesn't exist in the repo anyways). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Don't specify mimetype in ui-blob.cGravatar Lars Hjemli2008-04-09-1/+2
| | | | | | | | But be sure to specify correct filename. This way, the client can hopefully guess a sensible mimetype based on the filename suffix, and cgit can ignore the issue altogether. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add ui-shared.hGravatar Lars Hjemli2008-03-25-0/+1
| | | | | | | This is finally a proper headerfile for the shared ui-functions which used to reside in cgit.h Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Introduce html.hGravatar Lars Hjemli2008-03-18-1/+2
| | | | | | | | All html-functions can be quite easily separated from the rest of cgit, so lets do it; the only issue was html_filemode which uses some git-defined macros so the function is moved into ui-shared.c::cgit_print_filemode(). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Move cgit_repo into cgit_contextGravatar Lars Hjemli2008-02-16-1/+1
| | | | | | | | This removes the global variable which is used to keep track of the currently selected repository, and adds a new variable in the cgit_context structure. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Introduce struct cgit_contextGravatar Lars Hjemli2008-02-16-10/+10
| | | | | | | | | This struct will hold all the cgit runtime information currently found in a multitude of global variables. The first cleanup removes all querystring-related variables. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Fix html error detected by test-suiteGravatar Lars Hjemli2007-11-11-3/+3
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>