[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] Efficiency hack: call tor_fix_source_file late, not early. ...



Update of /home/or/cvsroot/tor/src/common
In directory moria:/tmp/cvs-serv20694/src/common

Modified Files:
	compat.c compat.h log.c log.h tortls.c tortls.h util.c util.h 
Log Message:
Efficiency hack: call tor_fix_source_file late, not early.  Add "BUG" domain. Domains are now bitmasks... just in case. Make some err msgs non-general.

Index: compat.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/compat.c,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -d -r1.75 -r1.76
--- compat.c	24 Oct 2005 18:37:09 -0000	1.75
+++ compat.c	25 Oct 2005 07:05:03 -0000	1.76
@@ -177,6 +177,7 @@
 #endif
 }
 
+#ifdef MS_WINDOWS
 /** Take a filename and return a pointer to its final element.  This
  * function is called on __FILE__ to fix a MSVC nit where __FILE__
  * contains the full path to the file.  This is bad, because it
@@ -184,7 +185,7 @@
  * compiled the binary in their warrning messages.
  */
 const char *
-_tor_fix_source_file(const char *fname)
+tor_fix_source_file(const char *fname)
 {
   const char *cp1, *cp2, *r;
   cp1 = strrchr(fname, '/');
@@ -200,6 +201,7 @@
   }
   return r;
 }
+#endif
 
 #ifndef UNALIGNED_INT_ACCESS_OK
 /**
@@ -499,7 +501,7 @@
   if (user) {
     pw = getpwnam(user);
     if (pw == NULL) {
-      err("User '%s' not found.", user);
+      err(LD_CONFIG,"User '%s' not found.", user);
       return -1;
     }
   }
@@ -508,17 +510,17 @@
   if (group) {
     gr = getgrnam(group);
     if (gr == NULL) {
-      err("Group '%s' not found.", group);
+      err(LD_CONFIG,"Group '%s' not found.", group);
       return -1;
     }
 
     if (setgid(gr->gr_gid) != 0) {
-      err("Error setting GID: %s", strerror(errno));
+      err(LD_GENERAL,"Error setting GID: %s", strerror(errno));
       return -1;
     }
   } else if (user) {
     if (setgid(pw->pw_gid) != 0) {
-      err("Error setting GID: %s", strerror(errno));
+      err(LD_GENERAL,"Error setting GID: %s", strerror(errno));
       return -1;
     }
   }
@@ -527,7 +529,7 @@
      privileges */
   if (user) {
     if (setuid(pw->pw_uid) != 0) {
-      err("Error setting UID: %s", strerror(errno));
+      err(LD_GENERAL,"Error setting UID: %s", strerror(errno));
       return -1;
     }
   }
@@ -535,8 +537,7 @@
   return 0;
 #endif
 
-  err("User or group specified, but switching users is not supported.");
-
+  err(LD_CONFIG,"User or group specified, but switching users is not supported.");
   return -1;
 }
 
@@ -550,7 +551,7 @@
   tor_assert(username);
 
   if (!(pw = getpwnam(username))) {
-    err("User \"%s\" not found.", username);
+    err(LD_CONFIG,"User \"%s\" not found.", username);
     return NULL;
   }
   return tor_strdup(pw->pw_dir);
@@ -894,7 +895,7 @@
   /* number of 100-nsec units since Jan 1, 1601 */
   GetSystemTimeAsFileTime(&ft.ft_ft);
   if (ft.ft_64 < EPOCH_BIAS) {
-    err("System time is before 1970; failing.");
+    err(LD_GENERAL,"System time is before 1970; failing.");
     exit(1);
   }
   ft.ft_64 -= EPOCH_BIAS;
@@ -902,7 +903,7 @@
   timeval->tv_usec = (unsigned) ((ft.ft_64 / UNITS_PER_USEC) % USEC_PER_SEC);
 #elif defined(HAVE_GETTIMEOFDAY)
   if (gettimeofday(timeval, NULL)) {
-    err("gettimeofday failed.");
+    err(LD_GENERAL,"gettimeofday failed.");
     /* If gettimeofday dies, we have either given a bad timezone (we didn't),
        or segfaulted.*/
     exit(1);

Index: compat.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/compat.h,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- compat.h	6 Oct 2005 04:33:40 -0000	1.37
+++ compat.h	25 Oct 2005 07:05:03 -0000	1.38
@@ -100,8 +100,13 @@
 #define TOR_ISDIGIT(c)   isdigit((int)(unsigned char)(c))
 #define TOR_ISPRINT(c)   isprint((int)(unsigned char)(c))
 
-#define _SHORT_FILE_ (_tor_fix_source_file(__FILE__))
-const char *_tor_fix_source_file(const char *fname);
+#ifdef MS_WINDOWS
+#define _SHORT_FILE_ (tor_fix_source_file(__FILE__))
+const char *tor_fix_source_file(const char *fname);
+#else
+#define _SHORT_FILE_ (__FILE__)
+#define tor_fix_source_file(s) (s)
+#endif
 
 /* ===== Time compatibility */
 #if !defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_STRUCT_TIMEVAL_TV_SEC)

Index: log.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/log.c,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -d -r1.101 -r1.102
--- log.c	18 Oct 2005 21:58:19 -0000	1.101
+++ log.c	25 Oct 2005 07:05:03 -0000	1.102
@@ -184,7 +184,7 @@
  * message.  The actual message is derived as from tor_snprintf(format,ap).
  */
 static void
-logv(int severity, int domain, const char *funcname, const char *format,
+logv(int severity, unsigned int domain, const char *funcname, const char *format,
      va_list ap)
 {
   char buf[10024];
@@ -234,7 +234,7 @@
 
 /** Output a message to the log. */
 void
-_log(int severity, int domain, const char *format, ...)
+_log(int severity, unsigned int domain, const char *format, ...)
 {
   va_list ap;
   va_start(ap,format);
@@ -245,7 +245,7 @@
 /** Output a message to the log, prefixed with a function name <b>fn</b>. */
 #ifdef __GNUC__
 void
-_log_fn(int severity, int domain, const char *fn, const char *format, ...)
+_log_fn(int severity, unsigned int domain, const char *fn, const char *format, ...)
 {
   va_list ap;
   va_start(ap,format);
@@ -255,7 +255,7 @@
 #else
 const char *_log_fn_function_name=NULL;
 void
-_log_fn(int severity, int domain, const char *format, ...)
+_log_fn(int severity, unsigned int domain, const char *format, ...)
 {
   va_list ap;
   va_start(ap,format);
@@ -264,7 +264,7 @@
   _log_fn_function_name = NULL;
 }
 void
-_debug(int domain, const char *format, ...)
+_debug(unsigned int domain, const char *format, ...)
 {
   va_list ap;
   va_start(ap,format);
@@ -273,7 +273,7 @@
   _log_fn_function_name = NULL;
 }
 void
-_info(int domain, const char *format, ...)
+_info(unsigned int domain, const char *format, ...)
 {
   va_list ap;
   va_start(ap,format);
@@ -282,7 +282,7 @@
   _log_fn_function_name = NULL;
 }
 void
-_notice(int domain, const char *format, ...)
+_notice(unsigned int domain, const char *format, ...)
 {
   va_list ap;
   va_start(ap,format);
@@ -291,7 +291,7 @@
   _log_fn_function_name = NULL;
 }
 void
-_warn(int domain, const char *format, ...)
+_warn(unsigned int domain, const char *format, ...)
 {
   va_list ap;
   va_start(ap,format);
@@ -300,11 +300,11 @@
   _log_fn_function_name = NULL;
 }
 void
-_err(const char *format, ...)
+_err(unsigned int domain, const char *format, ...)
 {
   va_list ap;
   va_start(ap,format);
-  logv(LOG_ERR, LD_GENERAL, _log_fn_function_name, format, ap);
+  logv(LOG_ERR, domain, _log_fn_function_name, format, ap);
   va_end(ap);
   _log_fn_function_name = NULL;
 }

Index: log.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/log.h,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- log.h	24 Oct 2005 19:36:43 -0000	1.52
+++ log.h	25 Oct 2005 07:05:03 -0000	1.53
@@ -53,39 +53,41 @@
 /* Logging domains */
 
 /** Catch-all for miscellaneous events and fatal errors */
-#define LD_GENERAL  0
+#define LD_GENERAL  (1u<<0)
 /** The cryptography subsytem */
-#define LD_CRYPTO   1
+#define LD_CRYPTO   (1u<<1)
 /** Networking */
-#define LD_NET      2
+#define LD_NET      (1u<<2)
 /** Parsing and acting on our configuration */
-#define LD_CONFIG   3
+#define LD_CONFIG   (1u<<3)
 /** Reading and writing from the filesystem */
-#define LD_FS       4
+#define LD_FS       (1u<<4)
 /** Other servers' (non)compliance with the Tor protocol */
-#define LD_PROTOCOL 5
+#define LD_PROTOCOL (1u<<5)
 /** Memory management */
-#define LD_MM       6
+#define LD_MM       (1u<<6)
 /** HTTP implementation */
-#define LD_HTTP     7
+#define LD_HTTP     (1u<<7)
 /** Application (socks) requests */
-#define LD_APP      8
+#define LD_APP      (1u<<8)
 /** Communication via the controller protocol */
-#define LD_CONTROL  9
+#define LD_CONTROL  (1u<<9)
 /** Building, using, and managing circuits */
-#define LD_CIRC     10
+#define LD_CIRC     (1u<<10)
 /** Hidden services */
-#define LD_REND     11
+#define LD_REND     (1u<<11)
 /** Internal errors in this Tor process. */
-#define LD_BUG      12
+#define LD_BUG      (1u<<12)
 /** Learning and using information about Tor servers. */
-#define LD_DIR      13
+#define LD_DIR      (1u<<13)
 /** Learning and using information about Tor servers. */
-#define LD_DIRSERV  14
+#define LD_DIRSERV  (1u<<14)
 /** Onion routing protocol. */
-#define LD_OR       15
+#define LD_OR       (1u<<15)
+/** Connections leaving Tor, other exit stuff. */
+#define LD_EXIT     (1u<<16)
 
-typedef void (*log_callback)(int severity, int domain, const char *msg);
+typedef void (*log_callback)(int severity, unsigned int domain, const char *msg);
 
 int parse_log_level(const char *level);
 const char *log_level_to_string(int level);
@@ -108,10 +110,10 @@
                                   log_callback cb);
 
 /* Outputs a message to stdout */
-void _log(int severity, int domain, const char *format, ...) CHECK_PRINTF(3,4);
+void _log(int severity, unsigned int domain, const char *format, ...) CHECK_PRINTF(3,4);
 
 #ifdef __GNUC__
-void _log_fn(int severity, int domain,
+void _log_fn(int severity, unsigned int domain,
              const char *funcname, const char *format, ...)
   CHECK_PRINTF(4,5);
 /** Log a message at level <b>severity</b>, using a pretty-printed version
@@ -134,16 +136,16 @@
   _log_fn(LOG_INFO, domain, __PRETTY_FUNCTION__, args)
 #define warn(domain, args...)                           \
   _log_fn(LOG_INFO, domain, __PRETTY_FUNCTION__, args)
-#define err(args...)                                    \
-  _log_fn(LOG_ERR, LD_GENERAL, __PRETTY_FUNCTION__, args)
+#define err(domain, args...)                            \
+  _log_fn(LOG_ERR, domain, __PRETTY_FUNCTION__, args)
 #else
 
-void _log_fn(int severity, int domain, const char *format, ...);
-void _debug(int domain, const char *format, ...);
-void _info(int domain, const char *format, ...);
-void _notice(int domain, const char *format, ...);
-void _warn(int domain, const char *format, ...);
-void _err(const char *format, ...);
+void _log_fn(int severity, unsigned int domain, const char *format, ...);
+void _debug(unsigned int domain, const char *format, ...);
+void _info(unsigned int domain, const char *format, ...);
+void _notice(unsigned int domain, const char *format, ...);
+void _warn(unsigned int domain, const char *format, ...);
+void _err(unsigned int domain, const char *format, ...);
 
 #define log _log /* hack it so we don't conflict with log() as much */
 

Index: tortls.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/tortls.c,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -d -r1.109 -r1.110
--- tortls.c	24 Oct 2005 18:37:09 -0000	1.109
+++ tortls.c	25 Oct 2005 07:05:03 -0000	1.110
@@ -866,8 +866,8 @@
 {
   if (ERR_peek_error() == 0)
     return;
-  log_fn(LOG_WARN, LD_CRYPTO, "Unhandled OpenSSL errors found at %s:%d: ",
-         fname, line);
+  log(LOG_WARN, LD_CRYPTO, "Unhandled OpenSSL errors found at %s:%d: ",
+      tor_fix_source_file(fname), line);
   tls_log_errors(LOG_WARN, NULL);
 }
 

Index: tortls.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/tortls.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- tortls.h	17 Oct 2005 00:35:51 -0000	1.31
+++ tortls.h	25 Oct 2005 07:05:03 -0000	1.32
@@ -46,7 +46,7 @@
 
 /* Log and abort if there are unhandled TLS errors in OpenSSL's error stack.
  */
-#define check_no_tls_errors() _check_no_tls_errors(_SHORT_FILE_,__LINE__)
+#define check_no_tls_errors() _check_no_tls_errors(__FILE__,__LINE__)
 
 void _check_no_tls_errors(const char *fname, int line);
 

Index: util.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/util.c,v
retrieving revision 1.230
retrieving revision 1.231
diff -u -d -r1.230 -r1.231
--- util.c	24 Oct 2005 18:37:09 -0000	1.230
+++ util.c	25 Oct 2005 07:05:03 -0000	1.231
@@ -127,7 +127,7 @@
   result = dmalloc_malloc(file, line, size, DMALLOC_FUNC_MALLOC, 0, 0);
 
   if (!result) {
-    err("Out of memory. Dying.");
+    err(LD_MM,"Out of memory. Dying.");
     /* XXX if these functions die within a worker process, they won't
      * call spawn_exit */
     exit(1);
@@ -159,7 +159,7 @@
 
   result = dmalloc_realloc(file, line, ptr, size, DMALLOC_FUNC_REALLOC, 0);
   if (!result) {
-    err("Out of memory. Dying.");
+    err(LD_MM,"Out of memory. Dying.");
     exit(1);
   }
   return result;
@@ -177,7 +177,7 @@
 
   dup = dmalloc_strdup(file, line, s, 0);
   if (!dup) {
-    err("Out of memory. Dying.");
+    err(LD_MM,"Out of memory. Dying.");
     exit(1);
   }
   return dup;
@@ -1594,7 +1594,7 @@
   pipe(daemon_filedes);
   pid = fork();
   if (pid < 0) {
-    err("fork failed. Exiting.");
+    err(LD_GENERAL,"fork failed. Exiting.");
     exit(1);
   }
   if (pid) {  /* Parent */
@@ -1649,14 +1649,14 @@
     desired_cwd = "/";
    /* Don't hold the wrong FS mounted */
   if (chdir(desired_cwd) < 0) {
-    err("chdir to \"%s\" failed. Exiting.",desired_cwd);
+    err(LD_GENERAL,"chdir to \"%s\" failed. Exiting.",desired_cwd);
     exit(1);
   }
 
   nullfd = open("/dev/null",
                 O_CREAT | O_RDWR | O_APPEND);
   if (nullfd < 0) {
-    err("/dev/null can't be opened. Exiting.");
+    err(LD_GENERAL,"/dev/null can't be opened. Exiting.");
     exit(1);
   }
   /* close fds linking to invoking terminal, but
@@ -1666,7 +1666,7 @@
   if (dup2(nullfd,0) < 0 ||
       dup2(nullfd,1) < 0 ||
       dup2(nullfd,2) < 0) {
-    err("dup2 failed. Exiting.");
+    err(LD_GENERAL,"dup2 failed. Exiting.");
     exit(1);
   }
   if (nullfd > 2)

Index: util.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/util.h,v
retrieving revision 1.145
retrieving revision 1.146
diff -u -d -r1.145 -r1.146
--- util.h	18 Oct 2005 21:58:19 -0000	1.145
+++ util.h	25 Oct 2005 07:05:03 -0000	1.146
@@ -39,23 +39,23 @@
 #error "Sorry; we don't support building with NDEBUG."
 #else
 #ifdef OLD_LOG_INTERFACE
-#define tor_assert(expr) do {                                            \
- if (!(expr)) {                                                          \
-   log(LOG_ERR, "%s:%d: %s: Assertion %s failed; aborting.",            \
-       _SHORT_FILE_, __LINE__, __FUNCTION__, #expr);                     \
-   fprintf(stderr,"%s:%d %s: Assertion %s failed; aborting.\n",          \
-       _SHORT_FILE_, __LINE__, __FUNCTION__, #expr);                     \
-   abort();  /* unreached */                                             \
- } } while (0)
+#define tor_assert(expr) do {                                           \
+    if (!(expr)) {                                                      \
+      log(LOG_ERR, "%s:%d: %s: Assertion %s failed; aborting.",         \
+          _SHORT_FILE_, __LINE__, __FUNCTION__, #expr);                 \
+      fprintf(stderr,"%s:%d %s: Assertion %s failed; aborting.\n",      \
+              _SHORT_FILE_, __LINE__, __FUNCTION__, #expr);             \
+      abort();  /* unreached */                                         \
+    } } while (0)
 #else
-#define tor_assert(expr) do {                                            \
- if (!(expr)) {                                                          \
-   log(LOG_ERR, LD_GENERAL, "%s:%d: %s: Assertion %s failed; aborting.", \
-       _SHORT_FILE_, __LINE__, __FUNCTION__, #expr);                     \
-   fprintf(stderr,"%s:%d %s: Assertion %s failed; aborting.\n",          \
-       _SHORT_FILE_, __LINE__, __FUNCTION__, #expr);                     \
-   abort();  /* unreached */                                             \
- } } while (0)
+#define tor_assert(expr) do {                                           \
+    if (!(expr)) {                                                      \
+      log(LOG_ERR, LD_BUG, "%s:%d: %s: Assertion %s failed; aborting.", \
+          _SHORT_FILE_, __LINE__, __FUNCTION__, #expr);                 \
+      fprintf(stderr,"%s:%d %s: Assertion %s failed; aborting.\n",      \
+              _SHORT_FILE_, __LINE__, __FUNCTION__, #expr);             \
+      abort();  /* unreached */                                         \
+    } } while (0)
 #endif
 #endif