static const char *repodir;
static char *name = "";
-static char *strippedname;
+static char *strippedname = "";
static char description[255];
static char cloneurl[1024];
static int haslicense, hasreadme, hassubmodules;
static const char *cachefile;
#ifndef USE_PLEDGE
-int
-pledge(const char *promises, const char *paths[])
-{
- return 0;
-}
+#define pledge(p1,p2) 0
#endif
void
writeheader(FILE *fp, const char *title)
{
fputs("<!DOCTYPE html>\n"
- "<html dir=\"ltr\" lang=\"en\">\n<head>\n"
+ "<html>\n<head>\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n"
- "<meta http-equiv=\"Content-Language\" content=\"en\" />\n<title>", fp);
+ "<title>", fp);
xmlencode(fp, title, strlen(title));
if (title[0] && strippedname[0])
fputs(" - ", fp);
}
int
-writefilestree(FILE *fp, git_tree *tree, const char *branch, const char *path)
+writefilestree(FILE *fp, git_tree *tree, const char *path)
{
const git_tree_entry *entry = NULL;
git_submodule *module = NULL;
break;
case GIT_OBJ_TREE:
/* NOTE: recurses */
- ret = writefilestree(fp, (git_tree *)obj, branch,
+ ret = writefilestree(fp, (git_tree *)obj,
entrypath);
git_object_free(obj);
if (ret)
}
int
-writefiles(FILE *fp, const git_oid *id, const char *branch)
+writefiles(FILE *fp, const git_oid *id)
{
git_tree *tree = NULL;
git_commit *commit = NULL;
"<td>Mode</td><td>Name</td><td class=\"num\">Size</td>"
"</tr>\n</thead><tbody>\n", fp);
- if (git_commit_lookup(&commit, repo, id) ||
- git_commit_tree(&tree, commit))
- goto err;
- ret = writefilestree(fp, tree, branch, "");
+ if (!git_commit_lookup(&commit, repo, id) &&
+ !git_commit_tree(&tree, commit))
+ ret = writefilestree(fp, tree, "");
-err:
fputs("</tbody></table>", fp);
git_commit_free(commit);
{
git_reference *r1 = (*(git_reference **)v1);
git_reference *r2 = (*(git_reference **)v2);
- int t1, t2;
-
- t1 = git_reference_is_branch(r1);
- t2 = git_reference_is_branch(r2);
+ int r;
- if (t1 != t2)
- return t1 - t2;
+ if ((r = git_reference_is_branch(r1) - git_reference_is_branch(r2)))
+ return r;
return strcmp(git_reference_shorthand(r1),
git_reference_shorthand(r2));
default:
continue;
}
- if (!(id = git_reference_target(r)))
- goto err;
- if (git_reference_peel(&obj, r, GIT_OBJ_ANY))
+ if (!git_reference_target(r) ||
+ git_reference_peel(&obj, r, GIT_OBJ_ANY))
goto err;
if (!(id = git_object_id(obj)))
goto err;
}
/* find HEAD */
- if (git_revparse_single(&obj, repo, "HEAD"))
- return 1;
- head = git_object_id(obj);
+ if (!git_revparse_single(&obj, repo, "HEAD"))
+ head = git_object_id(obj);
git_object_free(obj);
+ /* don't cache if there is no HEAD */
+ if (!head)
+ cachefile = NULL;
+
/* use directory name as name */
if ((name = strrchr(repodirabs, '/')))
name++;
}
/* check LICENSE */
- haslicense = !git_revparse_single(&obj, repo, "HEAD:LICENSE");
+ haslicense = (!git_revparse_single(&obj, repo, "HEAD:LICENSE") &&
+ git_object_type(obj) == GIT_OBJ_BLOB);
git_object_free(obj);
+
/* check README */
- hasreadme = !git_revparse_single(&obj, repo, "HEAD:README");
+ hasreadme = (!git_revparse_single(&obj, repo, "HEAD:README") &&
+ git_object_type(obj) == GIT_OBJ_BLOB);
git_object_free(obj);
- hassubmodules = !git_revparse_single(&obj, repo, "HEAD:.gitmodules");
+
+ hassubmodules = (!git_revparse_single(&obj, repo, "HEAD:.gitmodules") &&
+ git_object_type(obj) == GIT_OBJ_BLOB);
git_object_free(obj);
/* log for HEAD */
}
fclose(wcachefp);
} else {
- writelog(fp, head);
+ if (head)
+ writelog(fp, head);
}
fputs("</tbody></table>", fp);
/* files for HEAD */
fp = efopen("files.html", "w");
writeheader(fp, "Files");
- writefiles(fp, head, "HEAD");
+ if (head)
+ writefiles(fp, head);
writefooter(fp);
fclose(fp);