# --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: package/.../cgit/fastcgi.diff # Copyright (C) 2009 The OpenSDE Project # # More information can be found in the files COPYING and README. # # This patch file is dual-licensed. It is available under the license the # patched project is licensed under, as long as it is an OpenSource license # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms # of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # --- SDE-COPYRIGHT-NOTE-END --- stolen from http://www.docunext.com/wiki/Cgit --- ./git/wrapper.c.orig 2009-03-05 22:58:00.000000000 +0200 +++ ./git/wrapper.c 2009-03-05 22:59:49.000000000 +0200 @@ -133,6 +133,11 @@ } } +ssize_t ywrite(int fd, const void *buf, size_t len) +{ + return printf("%.*s",len,buf); +} + ssize_t read_in_full(int fd, void *buf, size_t count) { char *p = buf; --- ./git/git-compat-util.h.orig 2009-03-05 22:57:28.000000000 +0200 +++ ./git/git-compat-util.h 2009-03-05 22:57:51.000000000 +0200 @@ -48,7 +48,7 @@ #define _BSD_SOURCE 1 #include -#include +#include #include #include #include --- ./Makefile.orig 2009-03-05 22:36:24.000000000 +0200 +++ ./Makefile 2009-03-05 22:36:39.000000000 +0200 @@ -68,7 +68,7 @@ $(QUIET_CC)$(CC) -o $*.o -c $(CFLAGS) $< -EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto +EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto -lfcgi OBJECTS = OBJECTS += cache.o OBJECTS += cgit.o --- ./cache.c.orig 2009-03-05 22:36:46.000000000 +0200 +++ ./cache.c 2009-03-05 22:42:26.000000000 +0200 @@ -19,7 +19,7 @@ #define CACHE_BUFSIZE (1024 * 4) struct cache_slot { - const char *key; + char *key; int keylen; int ttl; cache_fill_fn fn; @@ -90,7 +90,7 @@ do { i = j = xread(slot->cache_fd, slot->buf, sizeof(slot->buf)); if (i > 0) - j = xwrite(STDOUT_FILENO, slot->buf, i); + j = ywrite(STDOUT_FILENO, slot->buf, i); } while (i > 0 && j == i); if (i < 0 || j != i) @@ -308,7 +308,7 @@ } /* Print cached content to stdout, generate the content if necessary. */ -int cache_process(int size, const char *path, const char *key, int ttl, +int cache_process(int size, char *path, const char *key, int ttl, cache_fill_fn fn, void *cbdata) { unsigned long hash; --- ./cache.h.orig 2009-03-05 22:44:25.000000000 +0200 +++ ./cache.h 2009-03-05 22:45:26.000000000 +0200 @@ -22,7 +22,7 @@ * Return value * 0 indicates success, everyting else is an error */ -extern int cache_process(int size, const char *path, const char *key, int ttl, +extern int cache_process(int size, char *path, const char *key, int ttl, cache_fill_fn fn, void *cbdata); --- ./cgit.c.orig 2009-03-05 22:49:34.000000000 +0200 +++ ./cgit.c 2009-03-05 22:53:58.000000000 +0200 @@ -6,6 +6,7 @@ * (see COPYING for full license text) */ +#include #include "cgit.h" #include "cache.h" #include "cmd.h" @@ -426,13 +427,15 @@ return ctx.cfg.cache_repo_ttl; } -int main(int argc, const char **argv) +int main(int argc, char **argv) { - const char *cgit_config_env = getenv("CGIT_CONFIG"); - const char *path; + char *path; char *qry; - int err, ttl; + while (FCGI_Accept() >= 0) { + const char *cgit_config_env = getenv("CGIT_CONFIG"); + int err, ttl; + prepare_context(&ctx); cgit_repolist.length = 0; cgit_repolist.count = 0; @@ -460,7 +463,6 @@ * long as PATH_INFO is included in the cache lookup key). */ path = getenv("PATH_INFO"); - if (!ctx.qry.url && path) { if (path[0] == '/') path++; ctx.qry.url = xstrdup(path); @@ -471,7 +473,6 @@ } else ctx.qry.raw = ctx.qry.url; cgit_parse_url(ctx.qry.url); - } ttl = calc_ttl(); ctx.page.expires += ttl*60; @@ -482,5 +483,6 @@ if (err) cgit_print_error(fmt("Error processing page: %s (%d)", strerror(err), err)); - return err; + } + return 0; } --- ./html.c.orig 2009-03-05 22:54:24.000000000 +0200 +++ ./html.c 2009-03-05 22:54:37.000000000 +0200 @@ -7,7 +7,7 @@ */ #include -#include +#include #include #include #include