X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=stagit.c;h=bb8b404f49b7f70be9aa27284183a904f396a383;hb=dee83b1f1087f9f56114741c6dff52a01ed0d7cb;hp=1fc6c1e592458935fe348ef2a480b0b8018d7fa1;hpb=bb1d06eb204b1d1135fcddccd14f6306abcd7f72;p=stagit.git diff --git a/stagit.c b/stagit.c index 1fc6c1e..bb8b404 100644 --- a/stagit.c +++ b/stagit.c @@ -3,12 +3,13 @@ #include #include -#include #include #include +#include #include #include #include +#include #include #include @@ -364,11 +365,11 @@ writeheader(FILE *fp, const char *title) xmlencode(fp, description, strlen(description)); fputs("", fp); if (cloneurl[0]) { - fputs("git clone git clone ", fp); xmlencode(fp, cloneurl, strlen(cloneurl)); - fputs("", fp); + fputs("", fp); } fputs("\n", fp); fprintf(fp, "Log | ", relpath); @@ -396,7 +397,7 @@ int writeblobhtml(FILE *fp, const git_blob *blob) { size_t n = 0, i, prev; - const char *nfmt = "%7d "; + const char *nfmt = "%7d"; const char *s = git_blob_rawcontent(blob); git_off_t len = git_blob_rawsize(blob); @@ -409,6 +410,7 @@ writeblobhtml(FILE *fp, const git_blob *blob) n++; fprintf(fp, nfmt, n, n, n); xmlencode(fp, &s[prev], i - prev + 1); + fprintf(fp, ""); prev = i + 1; } /* trailing data */ @@ -416,6 +418,7 @@ writeblobhtml(FILE *fp, const git_blob *blob) n++; fprintf(fp, nfmt, n, n, n); xmlencode(fp, &s[prev], len - prev); + fprintf(fp, ""); } } @@ -532,9 +535,15 @@ printshowfile(FILE *fp, struct commitinfo *ci) for (i = 0; i < ci->ndeltas; i++) { patch = ci->deltas[i]->patch; delta = git_patch_get_delta(patch); - fprintf(fp, "diff --git a/%s b/%s\n", - i, relpath, delta->old_file.path, delta->old_file.path, - relpath, delta->new_file.path, delta->new_file.path); + fprintf(fp, "diff --git a/old_file.path, strlen(delta->old_file.path)); + fputs(".html\">", fp); + xmlencode(fp, delta->old_file.path, strlen(delta->old_file.path)); + fprintf(fp, " b/new_file.path, strlen(delta->new_file.path)); + fprintf(fp, ".html\">"); + xmlencode(fp, delta->new_file.path, strlen(delta->new_file.path)); + fprintf(fp, "\n"); /* check binary data */ if (delta->flags & GIT_DIFF_FLAG_BINARY) { @@ -687,11 +696,11 @@ printcommitatom(FILE *fp, struct commitinfo *ci) xmlencode(fp, ci->summary, strlen(ci->summary)); fputs("\n", fp); } - fprintf(fp, "", + fprintf(fp, "\n", ci->oid); if (ci->author) { - fputs("", fp); + fputs("\n", fp); xmlencode(fp, ci->author->name, strlen(ci->author->name)); fputs("\n", fp); xmlencode(fp, ci->author->email, strlen(ci->author->email)); @@ -881,7 +890,9 @@ writefilestree(FILE *fp, git_tree *tree, const char *path) fputs("", fp); fputs(filemode(git_tree_entry_filemode(entry)), fp); - fprintf(fp, "", relpath, filepath); + fprintf(fp, "", fp); xmlencode(fp, entrypath, strlen(entrypath)); fputs("", fp); if (lc > 0) @@ -1087,6 +1098,13 @@ main(int argc, char *argv[]) git_libgit2_init(); #ifdef __OpenBSD__ + if (unveil(repodir, "r") == -1) + err(1, "unveil: %s", repodir); + if (unveil(".", "rwc") == -1) + err(1, "unveil: ."); + if (cachefile && unveil(cachefile, "rwc") == -1) + err(1, "unveil: %s", cachefile); + if (cachefile) { if (pledge("stdio rpath wpath cpath fattr", NULL) == -1) err(1, "pledge");