diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>
committerLars Hjemli <hjemli@gmail.com>
commit
parent
tree
download
Update to libgit 1.5.2-rc2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r--Makefile12
-rw-r--r--cgit.h20
-rw-r--r--git.h699
-rw-r--r--parsing.c6
-rw-r--r--ui-diff.c5
-rw-r--r--ui-summary.c2
-rw-r--r--ui-tree.c24
-rw-r--r--ui-view.c14
-rw-r--r--xdiff.h105
9 files changed, 50 insertions, 837 deletions
diff --git a/Makefile b/Makefile
index b1c3a4e..24c3963 100644
--- a/Makefile
+++ b/Makefile
@@ -3,10 +3,12 @@ CGIT_VERSION = 0.2
prefix = /var/www/htdocs/cgit
gitsrc = ../git
+SHA1_HEADER = <openssl/sha.h>
+
CACHE_ROOT = /var/cache/cgit
EXTLIBS = $(gitsrc)/libgit.a $(gitsrc)/xdiff/lib.a -lz -lcrypto
OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \
- ui-summary.o ui-log.o ui-view.c ui-tree.c ui-commit.c ui-diff.o \
+ ui-summary.o ui-log.o ui-view.o ui-tree.o ui-commit.o ui-diff.o \
ui-snapshot.o
CFLAGS += -Wall
@@ -15,6 +17,8 @@ ifdef DEBUG
CFLAGS += -g
endif
+CFLAGS += -I$(gitsrc) -DSHA1_HEADER='$(SHA1_HEADER)'
+
all: cgit
install: all clean-cache
@@ -22,13 +26,11 @@ install: all clean-cache
install cgit $(prefix)/cgit.cgi
install cgit.css $(prefix)/cgit.css
-cgit: cgit.c cgit.h git.h $(OBJECTS) $(gitsrc)/libgit.a
+cgit: cgit.c cgit.h $(OBJECTS) $(gitsrc)/libgit.a
$(CC) $(CFLAGS) -DCGIT_VERSION='"$(CGIT_VERSION)"' cgit.c -o cgit \
$(OBJECTS) $(EXTLIBS)
-$(OBJECTS): cgit.h git.h
-
-ui-diff.o: xdiff.h
+$(OBJECTS): cgit.h
$(gitsrc)/libgit.a:
$(MAKE) -C $(gitsrc)
diff --git a/cgit.h b/cgit.h
index 6e95673..222c9c2 100644
--- a/cgit.h
+++ b/cgit.h
@@ -1,10 +1,22 @@
#ifndef CGIT_H
#define CGIT_H
-#include "git.h"
-#include <openssl/sha.h>
-#include <ctype.h>
-#include <sched.h>
+
+#include <git-compat-util.h>
+#include <cache.h>
+#include <grep.h>
+#include <object.h>
+#include <tree.h>
+#include <commit.h>
+#include <tag.h>
+#include <diff.h>
+#include <diffcore.h>
+#include <refs.h>
+#include <revision.h>
+#include <log-tree.h>
+#include <archive.h>
+#include <xdiff/xdiff.h>
+
typedef void (*configfn)(const char *name, const char *value);
diff --git a/git.h b/git.h
deleted file mode 100644
index a1d1c4b..0000000
--- a/git.h
+++ /dev/null
This diff is too large to be rendered inline. View it on its own page.
diff --git a/parsing.c b/parsing.c
index 1013dad..332d61c 100644
--- a/parsing.c
+++ b/parsing.c
@@ -201,13 +201,13 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
struct taginfo *cgit_parse_tag(struct tag *tag)
{
void *data;
- char type[20];
+ enum object_type type;
unsigned long size;
char *p, *t;
struct taginfo *ret;
- data = read_sha1_file(tag->object.sha1, type, &size);
- if (!data || strcmp(type, tag_type)) {
+ data = read_sha1_file(tag->object.sha1, &type, &size);
+ if (!data || type != OBJ_TAG) {
free(data);
return 0;
}
diff --git a/ui-diff.c b/ui-diff.c
index b6486f1..0ad9faf 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -7,7 +7,6 @@
*/
#include "cgit.h"
-#include "xdiff.h"
char *diff_buffer;
int diff_buffer_size;
@@ -82,13 +81,13 @@ int diff_cb(void *priv_, mmbuffer_t *mb, int nbuf)
static int load_mmfile(mmfile_t *file, const unsigned char *sha1)
{
- char type[20];
+ enum object_type type;
if (is_null_sha1(sha1)) {
file->ptr = (char *)"";
file->size = 0;
} else {
- file->ptr = read_sha1_file(sha1, type, &file->size);
+ file->ptr = read_sha1_file(sha1, &type, &file->size);
}
return 1;
}
diff --git a/ui-summary.c b/ui-summary.c
index 42f4300..0a7869b 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -62,7 +62,7 @@ static void cgit_print_object_ref(struct object *obj)
url = cgit_pageurl(cgit_query_repo, page,
fmt("id=%s", sha1_to_hex(obj->sha1)));
html_link_open(url, NULL, NULL);
- htmlf("%s %s", type_names[obj->type],
+ htmlf("%s %s", typename(obj->type),
sha1_to_hex(obj->sha1));
html_link_close();
}
diff --git a/ui-tree.c b/ui-tree.c
index b00670e..60f7560 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -14,37 +14,39 @@ static int print_entry(const unsigned char *sha1, const char *base,
int stage)
{
char *name;
- char type[20];
+ enum object_type type;
unsigned long size;
- if (sha1_object_info(sha1, type, &size)) {
- cgit_print_error(fmt("Bad object name: %s",
- sha1_to_hex(sha1)));
+ name = xstrdup(pathname);
+ type = sha1_object_info(sha1, &size);
+ if (type == OBJ_BAD) {
+ htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>",
+ name,
+ sha1_to_hex(sha1));
return 0;
}
- name = xstrdup(pathname);
html("<tr><td class='filemode'>");
html_filemode(mode);
html("</td><td>");
- if (S_ISDIR(mode)) {
+ if (S_ISDIRLNK(mode)) {
+ htmlf("<div class='ls-dirlnk'>%s => submodule</div>", name);
+ } else if (S_ISDIR(mode)) {
html("<div class='ls-dir'><a href='");
html_attr(cgit_pageurl(cgit_query_repo, "tree",
fmt("id=%s&path=%s%s/",
sha1_to_hex(sha1),
cgit_query_path ? cgit_query_path : "",
pathname)));
+ htmlf("'>%s</a></div>", name);
} else {
html("<div class='ls-blob'><a href='");
html_attr(cgit_pageurl(cgit_query_repo, "view",
fmt("id=%s&path=%s%s", sha1_to_hex(sha1),
cgit_query_path ? cgit_query_path : "",
pathname)));
+ htmlf("'>%s</a></div>", name);
}
- html("'>");
- html_txt(name);
- if (S_ISDIR(mode))
- html("/");
- html("</a></div></td>");
+ html("</div></td>");
htmlf("<td class='filesize'>%li</td>", size);
html("</tr>\n");
free(name);
diff --git a/ui-view.c b/ui-view.c
index 85e223c..9d23c45 100644
--- a/ui-view.c
+++ b/ui-view.c
@@ -11,7 +11,7 @@
void cgit_print_view(const char *hex)
{
unsigned char sha1[20];
- char type[20];
+ enum object_type type;
unsigned char *buf;
unsigned long size;
@@ -20,20 +20,22 @@ void cgit_print_view(const char *hex)
return;
}
- if (sha1_object_info(sha1, type, &size)){
- cgit_print_error("Bad object name");
+ type = sha1_object_info(sha1, &size);
+ if (type == OBJ_BAD) {
+ cgit_print_error(fmt("Bad object name: %s", hex));
return;
}
- buf = read_sha1_file(sha1, type, &size);
+ buf = read_sha1_file(sha1, &type, &size);
if (!buf) {
- cgit_print_error("Error reading object");
+ cgit_print_error(fmt("Error reading object %s", hex));
return;
}
buf[size] = '\0';
html("<table class='list'>\n");
- htmlf("<tr class='nohover'><th class='left'>%s %s, %li bytes</th></tr>\n", type, hex, size);
+ htmlf("<tr class='nohover'><th class='left'>%s %s, %li bytes</th></tr>\n",
+ typename(type), hex, size);
html("<tr><td class='blob'>\n");
html_txt(buf);
html("\n</td></tr>\n");
diff --git a/xdiff.h b/xdiff.h
deleted file mode 100644
index fa409d5..0000000
--- a/xdiff.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * LibXDiff by Davide Libenzi ( File Differential Library )
- * Copyright (C) 2003 Davide Libenzi
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Davide Libenzi <davidel@xmailserver.org>
- *
- */
-
-#if !defined(XDIFF_H)
-#define XDIFF_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* #ifdef __cplusplus */
-
-
-#define XDF_NEED_MINIMAL (1 << 1)
-#define XDF_IGNORE_WHITESPACE (1 << 2)
-#define XDF_IGNORE_WHITESPACE_CHANGE (1 << 3)
-#define XDF_WHITESPACE_FLAGS (XDF_IGNORE_WHITESPACE | XDF_IGNORE_WHITESPACE_CHANGE)
-
-#define XDL_PATCH_NORMAL '-'
-#define XDL_PATCH_REVERSE '+'
-#define XDL_PATCH_MODEMASK ((1 << 8) - 1)
-#define XDL_PATCH_IGNOREBSPACE (1 << 8)
-
-#define XDL_EMIT_FUNCNAMES (1 << 0)
-#define XDL_EMIT_COMMON (1 << 1)
-
-#define XDL_MMB_READONLY (1 << 0)
-
-#define XDL_MMF_ATOMIC (1 << 0)
-
-#define XDL_BDOP_INS 1
-#define XDL_BDOP_CPY 2
-#define XDL_BDOP_INSB 3
-
-#define XDL_MERGE_MINIMAL 0
-#define XDL_MERGE_EAGER 1
-#define XDL_MERGE_ZEALOUS 2
-
-typedef struct s_mmfile {
- char *ptr;
- long size;
-} mmfile_t;
-
-typedef struct s_mmbuffer {
- char *ptr;
- long size;
-} mmbuffer_t;
-
-typedef struct s_xpparam {
- unsigned long flags;
-} xpparam_t;
-
-typedef struct s_xdemitcb {
- void *priv;
- int (*outf)(void *, mmbuffer_t *, int);
-} xdemitcb_t;
-
-typedef struct s_xdemitconf {
- long ctxlen;
- unsigned long flags;
-} xdemitconf_t;
-
-typedef struct s_bdiffparam {
- long bsize;
-} bdiffparam_t;
-
-
-#define xdl_malloc(x) malloc(x)
-#define xdl_free(ptr) free(ptr)
-#define xdl_realloc(ptr,x) realloc(ptr,x)
-
-void *xdl_mmfile_first(mmfile_t *mmf, long *size);
-void *xdl_mmfile_next(mmfile_t *mmf, long *size);
-long xdl_mmfile_size(mmfile_t *mmf);
-
-int xdl_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
- xdemitconf_t const *xecfg, xdemitcb_t *ecb);
-
-int xdl_merge(mmfile_t *orig, mmfile_t *mf1, const char *name1,
- mmfile_t *mf2, const char *name2,
- xpparam_t const *xpp, int level, mmbuffer_t *result);
-
-#ifdef __cplusplus
-}
-#endif /* #ifdef __cplusplus */
-
-#endif /* #if !defined(XDIFF_H) */
-