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)