]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-shared.c
Convert cgit_print_error to a variadic function
[ps-cgit] / ui-shared.c
index d4fb3d9e869139296f5e776bee1466d63dfc5158..b93b77aee4f5718ad74e36a3bc3d4d3a3ed9f65e 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "cgit.h"
+#include "ui-shared.h"
 #include "cmd.h"
 #include "html.h"
 
@@ -27,14 +28,25 @@ static char *http_date(time_t t)
                   tm->tm_hour, tm->tm_min, tm->tm_sec);
 }
 
-void cgit_print_error(const char *msg)
+void cgit_print_error(const char *fmt, ...)
 {
+       va_list ap;
+       va_start(ap, fmt);
+       cgit_vprint_error(fmt, ap);
+       va_end(ap);
+}
+
+void cgit_vprint_error(const char *fmt, va_list ap)
+{
+       va_list cp;
        html("<div class='error'>");
-       html_txt(msg);
+       va_copy(cp, ap);
+       html_vtxtf(fmt, cp);
+       va_end(cp);
        html("</div>\n");
 }
 
-char *cgit_httpscheme()
+const char *cgit_httpscheme()
 {
        if (ctx.env.https && !strcmp(ctx.env.https, "on"))
                return "https://";
@@ -42,7 +54,7 @@ char *cgit_httpscheme()
                return "http://";
 }
 
-char *cgit_hosturl()
+const char *cgit_hosturl()
 {
        if (ctx.env.http_host)
                return ctx.env.http_host;
@@ -53,10 +65,10 @@ char *cgit_hosturl()
        return xstrdup(fmt("%s:%s", ctx.env.server_name, ctx.env.server_port));
 }
 
-char *cgit_rooturl()
+const char *cgit_rooturl()
 {
        if (ctx.cfg.virtual_root)
-               return fmt("%s/", ctx.cfg.virtual_root);
+               return ctx.cfg.virtual_root;
        else
                return ctx.cfg.script_name;
 }
@@ -64,7 +76,7 @@ char *cgit_rooturl()
 char *cgit_repourl(const char *reponame)
 {
        if (ctx.cfg.virtual_root) {
-               return fmt("%s/%s/", ctx.cfg.virtual_root, reponame);
+               return fmt("%s%s/", ctx.cfg.virtual_root, reponame);
        } else {
                return fmt("?r=%s", reponame);
        }
@@ -77,7 +89,7 @@ char *cgit_fileurl(const char *reponame, const char *pagename,
        char *delim;
 
        if (ctx.cfg.virtual_root) {
-               tmp = fmt("%s/%s/%s/%s", ctx.cfg.virtual_root, reponame,
+               tmp = fmt("%s%s/%s/%s", ctx.cfg.virtual_root, reponame,
                          pagename, (filename ? filename:""));
                delim = "?";
        } else {
@@ -125,11 +137,9 @@ static void site_url(const char *page, const char *search, const char *sort, int
 {
        char *delim = "?";
 
-       if (ctx.cfg.virtual_root) {
+       if (ctx.cfg.virtual_root)
                html_attr(ctx.cfg.virtual_root);
-               if (ctx.cfg.virtual_root[strlen(ctx.cfg.virtual_root) - 1] != '/')
-                       html("/");
-       } else
+       else
                html(ctx.cfg.script_name);
 
        if (page) {
@@ -200,8 +210,6 @@ static char *repolink(const char *title, const char *class, const char *page,
        html(" href='");
        if (ctx.cfg.virtual_root) {
                html_url_path(ctx.cfg.virtual_root);
-               if (ctx.cfg.virtual_root[strlen(ctx.cfg.virtual_root) - 1] != '/')
-                       html("/");
                html_url_path(ctx.repo->url);
                if (ctx.repo->url[strlen(ctx.repo->url) - 1] != '/')
                        html("/");
@@ -651,7 +659,7 @@ void cgit_print_docstart(struct cgit_context *ctx)
                return;
        }
 
-       char *host = cgit_hosturl();
+       const char *host = cgit_hosturl();
        html(cgit_doctype);
        html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n");
        html("<head>\n");