Start NoBug'ification
authorChristian Thaeter <ct@pipapo.org>
Tue, 18 Mar 2008 16:42:32 +0000 (17:42 +0100)
committerChristian Thaeter <ct@pipapo.org>
Tue, 18 Mar 2008 16:42:32 +0000 (17:42 +0100)
Makefile.am
configure.ac
src/webgit.c

index 5a8d53c..35358af 100644 (file)
@@ -78,7 +78,7 @@ noinst_HEADERS =                              \
 
 webgit_DEPENDENCIES = $(abs_top_builddir)/git/libgit.a $(abs_top_builddir)/git/xdiff/lib.a
 
-webgit_LDADD = -lcwa -lssl git/libgit.a git/xdiff/lib.a
+webgit_LDADD = -lcwa -lssl -lnobug git/libgit.a git/xdiff/lib.a
 
 #### test suite
 ##check_PROGRAMS =
index cdd5d43..65f086f 100644 (file)
@@ -34,6 +34,34 @@ AC_PROG_RANLIB
 #
 AC_STDC_HEADERS
 
+
+#
+# user options
+#
+
+############## NoBug build levels
+AH_TEMPLATE(EBUG_ALPHA, [Define to 1 for selecting NoBug ALPHA build level])
+AH_TEMPLATE(EBUG_BETA, [Define to 1 for selecting NoBug BETA build level])
+AH_TEMPLATE(NDEBUG, [Define to 1 for selecting NoBug RELEASE build level])
+AC_ARG_ENABLE(alpha, AC_HELP_STRING([--enable-alpha], [select NoBug ALPHA build level]),
+              nobug_level=alpha
+              AC_DEFINE(EBUG_ALPHA),
+[
+AC_ARG_ENABLE(beta, AC_HELP_STRING([--enable-beta], [select NoBug BETA build level]),
+              nobug_level=beta
+              AC_DEFINE(EBUG_BETA),
+[
+AC_ARG_ENABLE(release, AC_HELP_STRING([--enable-release], [select NoBug RELEASE build level]),
+              nobug_level=release
+              AC_DEFINE(NDEBUG),
+
+# default to ALPHA
+              nobug_level=alpha
+              AC_DEFINE(EBUG_ALPHA)
+)])])
+AC_MSG_RESULT([NoBug build level: $nobug_level])
+# END NoBug
+
 AC_CONFIG_SUBDIRS(cwa git)
 AC_CONFIG_FILES(Makefile)
 AC_OUTPUT
index 93e70a0..3c03e9f 100644 (file)
@@ -30,6 +30,8 @@
 #include "git/git-compat-util.h"
 
 #include <cwa.h>
+#define NOBUG_LOG_TARGET NOBUG_TARGET_APPLICATION
+#include <nobug.h>
 
 #include <stdio.h>
 #include <stdarg.h>
 #include <time.h>
 #include <setjmp.h>
 
+NOBUG_DEFINE_FLAG_LIMIT(webgit, LOG_DEBUG);
+NOBUG_DEFINE_FLAG_PARENT(query, webgit);        /* query handling */
+NOBUG_DEFINE_FLAG_PARENT(git, webgit);          /* libgit calls */
+NOBUG_DEFINE_FLAG_PARENT(html, webgit);         /* output generation */
+
 Html error_log;
 jmp_buf err_jmp;
 
+static char errbuf[1024];
+
+void webgit_nobug_callback (struct nobug_flag* flag, int priority, const char *log, void* data)
+{
+  (void) flag;
+  (void) priority;
+  html_list_append ((Html) data, html_strndup (log, 1024), "<br />");
+}
+
 static void
 webgit_err_vargs (const char *err, va_list params)
 {
-  html_list_append (error_log, html (html_fmt_vargs (err, params, html_print_escaped), "<br />"));
+  vsnprintf (errbuf,  1024, err, params);
+  ERROR (git, "%s", errbuf);
   longjmp (err_jmp, 0);
 }
 
@@ -61,7 +78,8 @@ webgit_err (const char *err, ...)
 static void
 webgit_warn_vargs (const char *err, va_list params)
 {
-  html_list_append (error_log, html (html_fmt_vargs (err, params, html_print_escaped), "<br />"));
+  vsnprintf (errbuf,  1024, err, params);
+  WARN (git, "%s", errbuf);
 }
 
 
@@ -176,12 +194,18 @@ main (int argc, char**argv)
   Html page;
   struct webgit_query query;
 
-  setreuid (geteuid (), -1);
-  setregid (getegid (), -1);
+  NOBUG_INIT;
+  NOBUG_INIT_FLAG(webgit);
+  NOBUG_INIT_FLAG(query);
+  NOBUG_INIT_FLAG(git);
+  NOBUG_INIT_FLAG(html);
+  nobug_callback = webgit_nobug_callback;
+  nobug_callback_data = error_log = html_list();
 
   webgit_setup();
 
-  error_log = html_list();
+  setreuid (geteuid (), -1);
+  setregid (getegid (), -1);
 
   clock_t timestat = clock();