diff --git a/ChangeLog b/ChangeLog
index 7bb0156e..461fd80a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-04-22  Nicolas François  <nicolas.francois@centraliens.net>
+
+	* libmisc/setupenv.c: Avoid assignments in comparisons.
+	* libmisc/setupenv.c: Added brackets and parenthesis.
+	* libmisc/setupenv.c: Ignore the return value of fclose (file
+	opened read-only)
+	* libmisc/setupenv.c: Ignore the return value of puts().
+	* libmisc/setupenv.c:Avoid implicit conversion of pointers to
+	booleans.
+
 2009-04-22  Nicolas François  <nicolas.francois@centraliens.net>
 
 	* libmisc/find_new_gid.c, libmisc/find_new_uid.c,
diff --git a/libmisc/setupenv.c b/libmisc/setupenv.c
index b3db3e88..7a665136 100644
--- a/libmisc/setupenv.c
+++ b/libmisc/setupenv.c
@@ -2,7 +2,7 @@
  * Copyright (c) 1989 - 1994, Julianne Frances Haugh
  * Copyright (c) 1996 - 2000, Marek Michałkiewicz
  * Copyright (c) 2001 - 2006, Tomasz Kłoczko
- * Copyright (c) 2007 - 2008, Nicolas François
+ * Copyright (c) 2007 - 2009, Nicolas François
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -76,21 +76,26 @@ static void read_env_file (const char *filename)
 
 		cp = buf;
 		/* ignore whitespace and comments */
-		while (*cp && isspace (*cp))
+		while (('\0' != *cp) && isspace (*cp)) {
 			cp++;
-		if (*cp == '\0' || *cp == '#')
+		}
+		if (('\0' == *cp) || ('#' == *cp)) {
 			continue;
+		}
 		/*
 		 * ignore lines which don't follow the name=value format
 		 * (for example, the "export NAME" shell commands)
 		 */
 		name = cp;
-		while (*cp && !isspace (*cp) && *cp != '=')
+		while (('\0' != *cp) && !isspace (*cp) && ('=' != *cp)) {
 			cp++;
-		if (*cp != '=')
+		}
+		if ('=' != *cp) {
 			continue;
+		}
 		/* NUL-terminate the name */
-		*cp++ = '\0';
+		*cp = '\0';
+		cp++;
 		val = cp;
 #if 0				/* XXX untested, and needs rewrite with fewer goto's :-) */
 /*
@@ -174,7 +179,7 @@ static void read_env_file (const char *filename)
 		 */
 		addenv (name, val);
 	}
-	fclose (fp);
+	(void) fclose (fp);
 }
 #endif				/* USE_PAM */
 
@@ -213,9 +218,9 @@ void setup_env (struct passwd *info)
 				 "unable to cd to `%s' for user `%s'\n",
 				 info->pw_dir, info->pw_name));
 			closelog ();
-			exit (1);
+			exit (EXIT_FAILURE);
 		}
-		puts (_("No directory, logging in with HOME=/"));
+		(void) puts (_("No directory, logging in with HOME=/"));
 		info->pw_dir = temp_pw_dir;
 	}
 
@@ -251,7 +256,7 @@ void setup_env (struct passwd *info)
 
 	cp = getdef_str ((info->pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH");
 
-	if (!cp) {
+	if (NULL == cp) {
 		/* not specified, use a minimal default */
 		addenv ("PATH=/bin:/usr/bin", NULL);
 	} else if (strchr (cp, '=')) {
@@ -269,23 +274,30 @@ void setup_env (struct passwd *info)
 	 */
 
 	if (getdef_bool ("MAIL_CHECK_ENAB")) {
-		if ((cp = getdef_str ("MAIL_DIR")))
+		cp = getdef_str ("MAIL_DIR");
+		if (NULL != cp) {
 			addenv_path ("MAIL", cp, info->pw_name);
-		else if ((cp = getdef_str ("MAIL_FILE")))
-			addenv_path ("MAIL", info->pw_dir, cp);
-		else {
+		} else {
+			cp = getdef_str ("MAIL_FILE");
+			if (NULL != cp) {
+				addenv_path ("MAIL", info->pw_dir, cp);
+			} else {
 #if defined(MAIL_SPOOL_FILE)
-			addenv_path ("MAIL", info->pw_dir, MAIL_SPOOL_FILE);
+				addenv_path ("MAIL", info->pw_dir, MAIL_SPOOL_FILE);
 #elif defined(MAIL_SPOOL_DIR)
-			addenv_path ("MAIL", MAIL_SPOOL_DIR, info->pw_name);
+				addenv_path ("MAIL", MAIL_SPOOL_DIR, info->pw_name);
 #endif
+			}
 		}
 	}
 
 	/*
 	 * Read environment from optional config file.  --marekm
 	 */
-	if ((envf = getdef_str ("ENVIRON_FILE")))
+	envf = getdef_str ("ENVIRON_FILE");
+	if (NULL != envf) {
 		read_env_file (envf);
+	}
 #endif				/* !USE_PAM */
 }
+