cgit

commit ea2831f1c826d92c0158474c2d07837ec2f9fd6c

Author: Lars Hjemli <hjemli@gmail.com>

Don't hardcode urls when SCRIPT_NAME is available

Also, let the makefile define the name of the installed cgi and
use that definition as a default value for cgit_script_name variable.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>

 Makefile | 4 +++-
 cgit.c | 2 ++
 cgit.h | 1 +
 shared.c | 2 +-
 ui-shared.c | 4 ++--


diff --git a/Makefile b/Makefile
index 3d8edb81146190e2a4048c96a09cb56d6bdf2e26..96d68cbd0c781af77a074c23ca40aef759128532 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,7 @@
 SHA1_HEADER = <openssl/sha.h>
 CACHE_ROOT = /var/cache/cgit
 CGIT_CONFIG = /etc/cgitrc
+CGIT_SCRIPT_NAME = cgit.cgi
 
 EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lcrypto
 OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \
@@ -21,6 +22,7 @@ CFLAGS += -Igit
 CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER)'
 CFLAGS += -DCGIT_VERSION='"$(CGIT_VERSION)"'
 CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"'
+CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"'
 
 
 #
@@ -56,7 +58,7 @@ # phony targets
 #
 install: all clean-cache
 	mkdir -p $(prefix)
-	install cgit $(prefix)/cgit.cgi
+	install cgit $(prefix)/$(CGIT_SCRIPT_NAME)
 	install cgit.css $(prefix)/cgit.css
 	install add.png del.png $(prefix)/
 




diff --git a/cgit.c b/cgit.c
index 67ad103ed5367ac6e6fd89988d6bc0a164caaa19..3c11ff0a8f9021a20bf20771a617c7c53ebe6aac 100644
--- a/cgit.c
+++ b/cgit.c
@@ -244,6 +244,8 @@ 	cgit_repolist.count = 0;
 	cgit_repolist.repos = NULL;
 
 	cgit_read_config(CGIT_CONFIG, cgit_global_config_cb);
+	if (getenv("SCRIPT_NAME"))
+		cgit_script_name = xstrdup(getenv("SCRIPT_NAME"));
 	if (getenv("QUERY_STRING"))
 		cgit_querystring = xstrdup(getenv("QUERY_STRING"));
 	cgit_parse_args(argc, argv);




diff --git a/cgit.h b/cgit.h
index 0fff7b084bb7e24c41ca8b54ab32dfaa6d9ae6a4..f5906ad5ba8762de364caa6ced99810a6f8bd170 100644
--- a/cgit.h
+++ b/cgit.h
@@ -75,6 +75,7 @@ extern char *cgit_logo;
 extern char *cgit_logo_link;
 extern char *cgit_module_link;
 extern char *cgit_virtual_root;
+extern char *cgit_script_name;
 extern char *cgit_cache_root;
 
 extern int cgit_nocache;




diff --git a/shared.c b/shared.c
index 072bb6db4c6d0aa9d346f8f62a2aa5a47158ba3f..8505397a60c63e0f67f6ba4763f56d12f261459e 100644
--- a/shared.c
+++ b/shared.c
@@ -17,7 +17,7 @@ char *cgit_logo         = "/git-logo.png";
 char *cgit_logo_link    = "http://www.kernel.org/pub/software/scm/git/docs/";
 char *cgit_module_link  = "./?repo=%s&page=commit&id=%s";
 char *cgit_virtual_root = NULL;
-
+char *cgit_script_name  = CGIT_SCRIPT_NAME;
 char *cgit_cache_root   = "/var/cache/cgit";
 
 int cgit_nocache               =  0;




diff --git a/ui-shared.c b/ui-shared.c
index 6f5cf2b9155f6b4f5c158e34c0b2f14c3a2dff1f..b0cff7d3603a8027ffa3e3c17718feca1667b749 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -45,7 +45,7 @@ {
 	if (cgit_virtual_root)
 		return fmt("%s/", cgit_virtual_root);
 	else
-		return "./cgit.cgi";
+		return cgit_script_name;
 }
 
 char *cgit_repourl(const char *reponame)
@@ -71,7 +71,7 @@
 char *cgit_currurl()
 {
 	if (!cgit_virtual_root)
-		return "./cgit.cgi";
+		return cgit_script_name;
 	else if (cgit_query_page)
 		return fmt("%s/%s/%s/", cgit_virtual_root, cgit_query_repo, cgit_query_page);
 	else if (cgit_query_repo)