Revision
539
Author
lsansonetti@apple.com
Date
2008-08-30 22:21:23 -0700 (Sat, 30 Aug 2008)

Log Message

improved log facility by printing the file/line and optionally into a file

Modified Paths

Diff

Modified: MacRuby/trunk/debug.h (538 => 539)


--- MacRuby/trunk/debug.h	2008-08-31 04:29:45 UTC (rev 538)
+++ MacRuby/trunk/debug.h	2008-08-31 05:21:23 UTC (rev 539)
@@ -31,12 +31,15 @@
 
 #if ENABLE_DEBUG_LOGGING 
 # include "vm_core.h"
+# include <libgen.h>
 extern bool ruby_dlog_enabled;
-# define DLOG(mod, fmt, args...)         \
-    if (UNLIKELY(ruby_dlog_enabled)) {   \
-	printf("%10s   ", mod);          \
-	printf(fmt, ##args);             \
-	printf("\n");                    \
+extern FILE *ruby_dlog_file;
+# define DLOG(mod, fmt, args...) 					  \
+    if (UNLIKELY(ruby_dlog_enabled)) { 					  \
+	fprintf(ruby_dlog_file, "%s:%d %s ",				  \
+		basename((char *)rb_sourcefile()), rb_sourceline(), mod); \
+	fprintf(ruby_dlog_file, fmt, ##args); 				  \
+	fprintf(ruby_dlog_file, "\n");              			  \
     }
 #else
 # define DLOG(mod, fmt, args...)

Modified: MacRuby/trunk/eval.c (538 => 539)


--- MacRuby/trunk/eval.c	2008-08-31 04:29:45 UTC (rev 538)
+++ MacRuby/trunk/eval.c	2008-08-31 05:21:23 UTC (rev 539)
@@ -56,6 +56,7 @@
 
 #if WITH_OBJC
 bool ruby_dlog_enabled = false;
+FILE *ruby_dlog_file = NULL;
 #endif
 
 void
@@ -75,8 +76,22 @@
 #endif
 
 #if WITH_OBJC
-    char *s = getenv("MACRUBY_DEBUG");
+    char *s;
+   
+    s = getenv("MACRUBY_DEBUG");
     ruby_dlog_enabled = !(s == NULL || *s == '0');
+    s = getenv("MACRUBY_DEBUG_FILE");
+    if (s == NULL) {
+	ruby_dlog_file = stderr;
+    }
+    else {
+	ruby_dlog_file = fopen(s, "w");
+	if (ruby_dlog_file == NULL) {
+	    fprintf(stderr, "cannot open macruby debug file `%s'",
+		    strerror(errno));
+	    ruby_dlog_file = stderr;
+	}
+    }
 #endif
 
     Init_stack((void *)&state);