webgit_enter_repository is now webgit_repo_enter and returns a repo_info
authorChristian Thaeter <ct@pipapo.org>
Tue, 15 Jan 2008 15:50:15 +0000 (16:50 +0100)
committerChristian Thaeter <ct@pipapo.org>
Tue, 15 Jan 2008 15:50:15 +0000 (16:50 +0100)
src/actions.c
src/log.c
src/repo.c
src/repo.h
src/webgit.c
src/webgit.h

index b392ba9..09c5f08 100644 (file)
@@ -158,6 +158,8 @@ webgit_summary_action (struct webgit_query* query)
 static Html
 webgit_log_action (struct webgit_query* query)
 {
+  webgit_repo_enter (query);
+
   return html(
               html(html_tag("div"), webgit_log_menu_action (query)), html_nl (),
               html(html_tag("div"), webgit_log_content_action (query)), html_nl ()
@@ -182,7 +184,7 @@ webgit_diff_action (struct webgit_query* query)
 static Html
 webgit_object_action (struct webgit_query* query)
 {
-  webgit_enter_repository (query);
+  webgit_repo_enter (query);
 
   unsigned char sha1[20];
   if (get_sha1 (query->object, sha1))
@@ -226,7 +228,7 @@ webgit_tree_action (struct webgit_query* query)
 static Html
 webgit_raw_action (struct webgit_query* query)
 {
-  webgit_enter_repository (query);
+  webgit_repo_enter (query);
 
   unsigned char sha1[20];
   if (get_sha1 (query->object, sha1))
index c220aca..62560ed 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -69,8 +69,6 @@ webgit_log_menu_action (struct webgit_query* query)
 Html
 webgit_log_content_action (struct webgit_query* query)
 {
-  webgit_enter_repository (query);
-
   struct rev_info rev;
   const char* object;
   if (query->object)
index 4f19638..feb3234 100644 (file)
@@ -126,6 +126,8 @@ webgit_repo_conf_cb (const char *var, const char *value)
 static int
 find_last (const char *refname, const unsigned char *sha1, int flags, void *ri)
 {
+  (void) flags;
+
   struct webgit_repo_info* self = (struct webgit_repo_info*) ri;
 
   void* buf;
@@ -136,9 +138,6 @@ find_last (const char *refname, const unsigned char *sha1, int flags, void *ri)
   if (!buf)
     return 1;
 
-  const char* author_beg = NULL;
-  const char* author_end = NULL;
-
   unsigned long age = ~0;
 
   /* first pass, get last commit time */
@@ -165,7 +164,7 @@ find_last (const char *refname, const unsigned char *sha1, int flags, void *ri)
     }
 
   /* second pass, found a newer commit */
-  if (age != ~0 && (self->age == ~0 || age < self->age))
+  if (age != ~0UL && (self->age == ~0UL || age < self->age))
     {
       self->age = age;
       free (self->last_commit);
@@ -174,7 +173,7 @@ find_last (const char *refname, const unsigned char *sha1, int flags, void *ri)
       self->last_head = cwa_strndup (refname, SIZE_MAX);
 
       i = buf;
-      while (i && i < buf+size)
+      while (i && (void*)i < buf+size)
         {
           if (*i == '\n')
             break;
@@ -184,7 +183,6 @@ find_last (const char *refname, const unsigned char *sha1, int flags, void *ri)
             }
           else if (!strncmp (i, "committer ", 10))
             {
-              const char* name_beg = i+10;
               char* email_beg = strchr (i, '<');
               char* email_end = strchr (email_beg, '>');
 
@@ -193,19 +191,40 @@ find_last (const char *refname, const unsigned char *sha1, int flags, void *ri)
             }
           else if (!strncmp (i, "author ", 7))
             {
-              const char* name_beg = i+7;
               char* email_beg = strchr (i, '<');
               char* email_end = strchr (email_beg, '>');
 
               self->last_author_name = cwa_strndup (i+7, email_beg - i - 8);
               self->last_author_email = cwa_strndup (email_beg + 1, email_end - email_beg - 1);
             }
-          (i = strchr (i, '\n')) && ++i;
+          if ((i = strchr (i, '\n')))
+            ++i;
         }
     }
   return 0;
 }
 
+struct webgit_repo_info*
+webgit_repo_enter (struct webgit_query* query)
+{
+  struct webgit_repo_info* ri;
+  LLIST_FOREACH (&query->repos, node)
+    {
+      ri = (struct webgit_repo_info*) node;
+      if (!strcmp (ri->name, query->repo))
+        {
+          if (chdir (ri->path))
+            die ("error: wrong path %s", ri->path);
+          break;
+        }
+    }
+  setup_git_directory ();
+
+  in_flight = ri;
+  git_config (webgit_repo_conf_cb);
+
+  return ri;
+}
 
 struct webgit_repo_info*
 webgit_repoinfo_new (struct webgit_query* query, const char* path)
index b781049..40ef73f 100644 (file)
@@ -63,4 +63,7 @@ webgit_repoinfo_free (struct webgit_repo_info* self);
 void
 webgit_repoinfo_find_last (struct webgit_repo_info* self);
 
+struct webgit_repo_info*
+webgit_repo_enter (struct webgit_query* query);
+
 #endif
index a5a19b5..390d6cf 100644 (file)
@@ -81,23 +81,6 @@ webgit_email_link (Html name, Html email)
 }
 
 
-void
-webgit_enter_repository (struct webgit_query* query)
-{
-  LLIST_FOREACH (&query->repos, node)
-    {
-      struct webgit_repo_info* ri = (struct webgit_repo_info*) node;
-      if (!strcmp (ri->name, query->repo))
-        {
-          if (chdir (ri->path))
-            return die ("error: wrong path %s", ri->path);
-          break;
-        }
-    }
-  setup_git_directory ();
-}
-
-
 const char*
 webgit_mimetype (const char* name)
 {
index 257227f..0fa5202 100644 (file)
@@ -83,9 +83,6 @@ struct webgit_repo_info
 Html
 webgit_email_link (Html name, Html email);
 
-void
-webgit_enter_repository (struct webgit_query* query);
-
 const char*
 webgit_mimetype (const char* name);