You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
4.2 KiB
159 lines
4.2 KiB
# --- 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 <unistd.h> |
|
-#include <stdio.h> |
|
+#include <fcgi_stdio.h> |
|
#include <sys/stat.h> |
|
#include <fcntl.h> |
|
#include <stddef.h> |
|
--- ./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 <fcgi_stdio.h> |
|
#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 <unistd.h> |
|
-#include <stdio.h> |
|
+#include <fcgi_stdio.h> |
|
#include <stdlib.h> |
|
#include <stdarg.h> |
|
#include <string.h>
|
|
|