]> gitweb.ps.run Git - ps-cgit/commitdiff
cgit.c: only print first line of repo.desc in print_repo()
authorLars Hjemli <hjemli@gmail.com>
Mon, 24 Aug 2009 11:27:15 +0000 (13:27 +0200)
committerLars Hjemli <hjemli@gmail.com>
Mon, 24 Aug 2009 11:27:15 +0000 (13:27 +0200)
Since repo.desc might have been populated by reading the 'description'
file in GIT_DIR, it may contain newlines. And by printing the literal
value, we may then generate an invalid cgitrc include-file.

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

diff --git a/cgit.c b/cgit.c
index 93a7a69f78d2fa37aa86df19fb9d4c6724f2eaf0..838163084e91795816184f150fbcea310d0bfb90 100644 (file)
--- a/cgit.c
+++ b/cgit.c
@@ -457,6 +457,15 @@ char *build_snapshot_setting(int bitmap)
        return result;
 }
 
+char *get_first_line(char *txt)
+{
+       char *t = xstrdup(txt);
+       char *p = strchr(t, '\n');
+       if (p)
+               *p = '\0';
+       return t;
+}
+
 void print_repo(FILE *f, struct cgit_repo *repo)
 {
        fprintf(f, "repo.url=%s\n", repo->url);
@@ -464,8 +473,11 @@ void print_repo(FILE *f, struct cgit_repo *repo)
        fprintf(f, "repo.path=%s\n", repo->path);
        if (repo->owner)
                fprintf(f, "repo.owner=%s\n", repo->owner);
-       if (repo->desc)
-               fprintf(f, "repo.desc=%s\n", repo->desc);
+       if (repo->desc) {
+               char *tmp = get_first_line(repo->desc);
+               fprintf(f, "repo.desc=%s\n", tmp);
+               free(tmp);
+       }
        if (repo->readme)
                fprintf(f, "repo.readme=%s\n", repo->readme);
        if (repo->defbranch)