diff options
author | Alan Coopersmith <alan.coopersmith@sun.com> | 2009-09-17 18:33:54 -0700 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@sun.com> | 2009-09-17 19:22:24 -0700 |
commit | da3cfcdd197bd900633c563412685315316804f4 (patch) | |
tree | 2eb75e260543cf41cc264e697ff083184328f86c | |
parent | a7e166298a94c012420713dbfcd0b1628f5c7062 (diff) |
Refactor & constify error logging code
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
-rw-r--r-- | dm_error.h | 12 | ||||
-rw-r--r-- | error.c | 121 | ||||
-rw-r--r-- | greet.h | 12 | ||||
-rw-r--r-- | greeter/greet.c | 6 |
4 files changed, 71 insertions, 80 deletions
@@ -40,13 +40,13 @@ authorization. # define GCC_PRINTFLIKE(fmt,var) /*nothing*/ # endif -extern void Debug (char * fmt, ...) GCC_PRINTFLIKE(1,2); +extern void Debug (const char * fmt, ...) GCC_PRINTFLIKE(1,2); extern void InitErrorLog (void); -extern void LogAppend (char * fmt, ...) GCC_PRINTFLIKE(1,2); -extern void LogError (char * fmt, ...) GCC_PRINTFLIKE(1,2); -extern void LogInfo (char * fmt, ...) GCC_PRINTFLIKE(1,2); -extern void LogOutOfMem (char * fmt, ...) GCC_PRINTFLIKE(1,2); -extern void LogPanic (char * fmt, ...) GCC_PRINTFLIKE(1,2); +extern void LogAppend (const char * fmt, ...) GCC_PRINTFLIKE(1,2); +extern void LogError (const char * fmt, ...) GCC_PRINTFLIKE(1,2); +extern void LogInfo (const char * fmt, ...) GCC_PRINTFLIKE(1,2); +extern void LogOutOfMem (const char * fmt, ...) GCC_PRINTFLIKE(1,2); +extern void LogPanic (const char * fmt, ...) GCC_PRINTFLIKE(1,2); #endif /* _DM_ERROR_H_ */ @@ -42,70 +42,63 @@ from The Open Group. #include "dm.h" #include "dm_error.h" -#define WRITES(fd, buf) write(fd, buf, strlen(buf)) - -/* Append more text to the log without a new header, right after - having called LogInfo or LogError */ -void LogAppend(char * fmt, ...) +/* This function does the actual log message writes. */ +static inline void +LogVWrite(const char *fmt, va_list args) { char buf[1024]; + int len; - { - va_list args; - va_start(args, fmt); - vsnprintf (buf, sizeof buf, fmt, args); - va_end(args); + len = vsnprintf (buf, sizeof(buf), fmt, args); + if (len >= sizeof(buf)) { + len = sizeof(buf) - 1; } - WRITES(STDERR_FILENO, buf); + write(STDERR_FILENO, buf, len); } -void LogInfo(char * fmt, ...) -{ - char buf[1024]; +#define LogVarArgsWrite(fmt) \ + do { \ + va_list args; \ + va_start(args, fmt); \ + LogVWrite(fmt, args); \ + va_end(args); \ + } while(0) - snprintf(buf, sizeof buf, "xdm info (pid %ld): ", (long)getpid()); - WRITES(STDERR_FILENO, buf); - { - va_list args; - va_start(args, fmt); - vsnprintf (buf, sizeof buf, fmt, args); - va_end(args); - } - WRITES(STDERR_FILENO, buf); -} +#define LogHeader(type) \ + LogAppend("xdm %s (pid %ld): ", type, (long)getpid()) -void LogError (char * fmt, ...) +/* Append more text to the log without a new header, right after + having called LogInfo or LogError */ +void +LogAppend(const char * fmt, ...) { - char buf[1024]; + LogVarArgsWrite(fmt); +} - snprintf (buf, sizeof buf, "xdm error (pid %ld): ", (long)getpid()); - WRITES(STDERR_FILENO, buf); - { - va_list args; - va_start(args, fmt); - vsnprintf (buf, sizeof buf, fmt, args); - va_end(args); - } - WRITES(STDERR_FILENO, buf); +void +LogInfo(const char * fmt, ...) +{ + LogHeader("info"); + LogVarArgsWrite(fmt); } -void LogPanic (char * fmt, ...) +void +LogError (const char * fmt, ...) { - char buf[1024]; + LogHeader("error"); + LogVarArgsWrite(fmt); +} - snprintf (buf, sizeof buf, "xdm panic (pid %ld): ", (long)getpid()); - WRITES(STDERR_FILENO, buf); - { - va_list args; - va_start(args, fmt); - vsnprintf (buf, sizeof buf, fmt, args); - va_end(args); - } - WRITES(STDERR_FILENO, buf); +void +LogPanic (const char * fmt, ...) +{ + LogHeader("panic"); + LogVarArgsWrite(fmt); _exit (1); } -void LogOutOfMem (char * fmt, ...) +void +LogOutOfMem (const char * fmt, ...) { fprintf (stderr, "xdm: out of memory in routine "); { @@ -117,31 +110,29 @@ void LogOutOfMem (char * fmt, ...) fflush (stderr); } -void Debug (char * fmt, ...) +void +Debug (const char * fmt, ...) { char buf[1024]; if (debugLevel > 0) { - va_list args; - va_start(args, fmt); - vsnprintf (buf, sizeof buf, fmt, args); - va_end(args); - WRITES(STDOUT_FILENO, buf); + LogVarArgsWrite(fmt); } } -void InitErrorLog (void) +void +InitErrorLog (void) { - int i; - if (errorLogFile[0]) { - i = creat (errorLogFile, 0666); - if (i != -1) { - if (i != 2) { - dup2 (i, 2); - close (i); - } - } else - LogError ("Cannot open errorLogFile %s\n", errorLogFile); - } + int i; + if (errorLogFile[0]) { + i = creat (errorLogFile, 0666); + if (i != -1) { + if (i != STDERR_FILENO) { + dup2 (i, STDERR_FILENO); + close (i); + } + } else + LogError ("Cannot open errorLogFile %s\n", errorLogFile); + } } @@ -54,13 +54,13 @@ from The Open Group. struct dlfuncs { int (*_PingServer)(struct display *d, Display *alternateDpy); void (*_SessionPingFailed)(struct display *d); - void (*_Debug)(char * fmt, ...); + void (*_Debug)(const char * fmt, ...); void (*_RegisterCloseOnFork)(int fd); void (*_SecureDisplay)(struct display *d, Display *dpy); void (*_UnsecureDisplay)(struct display *d, Display *dpy); void (*_ClearCloseOnFork)(int fd); void (*_SetupDisplay)(struct display *d); - void (*_LogError)(char * fmt, ...); + void (*_LogError)(const char * fmt, ...); void (*_SessionExit)(struct display *d, int status, int removeAuth); void (*_DeleteXloginResources)(struct display *d, Display *dpy); int (*_source)(char **environ, char *file); @@ -70,7 +70,7 @@ struct dlfuncs { char **(*_parseArgs)(char **argv, char *string); void (*_printEnv)(char **e); char **(*_systemEnv)(struct display *d, char *user, char *home); - void (*_LogOutOfMem)(char * fmt, ...); + void (*_LogOutOfMem)(const char * fmt, ...); SETGRENT_TYPE (*_setgrent)(void); /* no longer used */ struct group *(*_getgrent)(void); /* no longer used */ void (*_endgrent)(void); /* no longer used */ @@ -138,13 +138,13 @@ typedef greet_user_rtn (*GreetUserProc)(struct display *, Display **, extern int (*__xdm_PingServer)(struct display *d, Display *alternateDpy); extern void (*__xdm_SessionPingFailed)(struct display *d); -extern void (*__xdm_Debug)(char * fmt, ...); +extern void (*__xdm_Debug)(const char * fmt, ...); extern void (*__xdm_RegisterCloseOnFork)(int fd); extern void (*__xdm_SecureDisplay)(struct display *d, Display *dpy); extern void (*__xdm_UnsecureDisplay)(struct display *d, Display *dpy); extern void (*__xdm_ClearCloseOnFork)(int fd); extern void (*__xdm_SetupDisplay)(struct display *d); -extern void (*__xdm_LogError)(char * fmt, ...); +extern void (*__xdm_LogError)(const char * fmt, ...); extern void (*__xdm_SessionExit)(struct display *d, int status, int removeAuth); extern void (*__xdm_DeleteXloginResources)(struct display *d, Display *dpy); extern int (*__xdm_source)(char **environ, char *file); @@ -154,7 +154,7 @@ extern char **(*__xdm_putEnv)(const char *string, char **env); extern char **(*__xdm_parseArgs)(char **argv, char *string); extern void (*__xdm_printEnv)(char **e); extern char **(*__xdm_systemEnv)(struct display *d, char *user, char *home); -extern void (*__xdm_LogOutOfMem)(char * fmt, ...); +extern void (*__xdm_LogOutOfMem)(const char * fmt, ...); extern void (*__xdm_setgrent)(void); extern struct group *(*__xdm_getgrent)(void); extern void (*__xdm_endgrent)(void); diff --git a/greeter/greet.c b/greeter/greet.c index a4e799c..17d21c8 100644 --- a/greeter/greet.c +++ b/greeter/greet.c @@ -105,13 +105,13 @@ extern int getdomainname(char *name, size_t len); int (*__xdm_PingServer)(struct display *d, Display *alternateDpy) = NULL; void (*__xdm_SessionPingFailed)(struct display *d) = NULL; -void (*__xdm_Debug)(char * fmt, ...) = NULL; +void (*__xdm_Debug)(const char * fmt, ...) = NULL; void (*__xdm_RegisterCloseOnFork)(int fd) = NULL; void (*__xdm_SecureDisplay)(struct display *d, Display *dpy) = NULL; void (*__xdm_UnsecureDisplay)(struct display *d, Display *dpy) = NULL; void (*__xdm_ClearCloseOnFork)(int fd) = NULL; void (*__xdm_SetupDisplay)(struct display *d) = NULL; -void (*__xdm_LogError)(char * fmt, ...) = NULL; +void (*__xdm_LogError)(const char * fmt, ...) = NULL; void (*__xdm_SessionExit)(struct display *d, int status, int removeAuth) = NULL; void (*__xdm_DeleteXloginResources)(struct display *d, Display *dpy) = NULL; int (*__xdm_source)(char **environ, char *file) = NULL; @@ -121,7 +121,7 @@ char **(*__xdm_putEnv)(const char *string, char **env) = NULL; char **(*__xdm_parseArgs)(char **argv, char *string) = NULL; void (*__xdm_printEnv)(char **e) = NULL; char **(*__xdm_systemEnv)(struct display *d, char *user, char *home) = NULL; -void (*__xdm_LogOutOfMem)(char * fmt, ...) = NULL; +void (*__xdm_LogOutOfMem)(const char * fmt, ...) = NULL; void (*__xdm_setgrent)(void) = NULL; struct group *(*__xdm_getgrent)(void) = NULL; void (*__xdm_endgrent)(void) = NULL; |