summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@sun.com>2009-09-17 18:33:54 -0700
committerAlan Coopersmith <alan.coopersmith@sun.com>2009-09-17 19:22:24 -0700
commitda3cfcdd197bd900633c563412685315316804f4 (patch)
tree2eb75e260543cf41cc264e697ff083184328f86c
parenta7e166298a94c012420713dbfcd0b1628f5c7062 (diff)
Refactor & constify error logging code
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
-rw-r--r--dm_error.h12
-rw-r--r--error.c121
-rw-r--r--greet.h12
-rw-r--r--greeter/greet.c6
4 files changed, 71 insertions, 80 deletions
diff --git a/dm_error.h b/dm_error.h
index e32ba0b..739da7b 100644
--- a/dm_error.h
+++ b/dm_error.h
@@ -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_ */
diff --git a/error.c b/error.c
index f1cb951..d1bd16e 100644
--- a/error.c
+++ b/error.c
@@ -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);
+ }
}
diff --git a/greet.h b/greet.h
index ca6ee73..bf3ddd1 100644
--- a/greet.h
+++ b/greet.h
@@ -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;