[PATCH 06/10] improve error logging

Julien Cristau jcristau at debian.org
Tue Jan 5 10:18:20 PST 2010


From: Branden Robinson <branden at debian.org>

Make several LogError() and Debug() messages more informative.
Change LogError() invocations to use _SysErrorMsg() where errno might be set
(and not clobbered by intermediate calls).  Also make LogError() the first
thing we do after an error condition in those cases.

Forward-ported by Julien Cristau <jcristau at debian.org>.
---
 auth.c |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/auth.c b/auth.c
index 571276a..822f4dd 100644
--- a/auth.c
+++ b/auth.c
@@ -403,6 +403,7 @@ SaveServerAuthorizations (
     int		i;
     char	dummy_auth[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 		               "XXXXXXXXXXXXXXXXX"; /* 64 "X"s */
+    int		err = 0;
 
     mask = umask (0077);
     ret = MakeServerAuthFile(d, &auth_file);
@@ -410,10 +411,8 @@ SaveServerAuthorizations (
     if (!ret)
 	return FALSE;
     if (!auth_file) {
-	Debug ("Can't creat auth file %s\n", d->authFile);
-	LogError ("Cannot open server authorization file %s\n", d->authFile);
-	free (d->authFile);
-	d->authFile = NULL;
+	LogError ("cannot open server authorization file %s: %s\n",
+		  d->authFile, _SysErrorMsg (errno));
 	ret = FALSE;
     }
     else
@@ -436,8 +435,7 @@ SaveServerAuthorizations (
 		(void) fflush (auth_file);
 		if (ferror (auth_file))
 		{
-		    LogError ("Cannot write server authorization file %s\n",
-			      d->authFile);
+		    err = errno;
 		    ret = FALSE;
 		}
 		/*
@@ -453,14 +451,15 @@ SaveServerAuthorizations (
 	     * to the auth file so xrdb and setup programs don't fail.
 	     */
 	    if (auths[i]->data_length > 0)
-		if (!XauWriteAuth (auth_file, auths[i]) ||
-		    fflush (auth_file) == EOF)
+		if (!XauWriteAuth (auth_file, auths[i]))
+		{
+		    Debug ("XauWriteAuth() failed\n");
+		}
+		(void) fflush (auth_file);
+		if (ferror (auth_file))
 		{
-		    LogError ("Cannot write server authorization file %s\n",
-			      d->authFile);
+		    err = errno;
 		    ret = FALSE;
-		    free (d->authFile);
-		    d->authFile = NULL;
 		}
     	}
 	/*
@@ -471,6 +470,16 @@ SaveServerAuthorizations (
 		Debug ("ftruncate() failed\n");
 	}
 	fclose (auth_file);
+
+    }
+    if (ret == FALSE)
+    {
+	LogError ("Cannot write to server authorization file %s%s%s\n",
+		  d->authFile,
+		  err ? ": " : "",
+		  err ? _SysErrorMsg (errno) : "");
+	free (d->authFile);
+	d->authFile = NULL;
     }
     return ret;
 }
-- 
1.6.5.7



More information about the xorg-devel mailing list