[BusyBox-cvs] svn commit: trunk/busybox/miscutils

landley at busybox.net landley at busybox.net
Tue Jun 7 03:47:01 UTC 2005


Author: landley
Date: 2005-06-06 21:47:00 -0600 (Mon, 06 Jun 2005)
New Revision: 10480

Log:
Tito posted a devfsd error message fix.  It's highly deprecated and will
presumably be removed eventually (use udev), but as long as it's in there.

Tito says:

The sense of this patch is to call:
read_config_file_err:
#ifdef CONFIG_DEVFSD_VERBOSE
    msg_logger(((optional ==  0 ) && (errno == ENOENT))? DIE : NO_DIE, LOG_ERR, "read config file: %s: %m\n", path);
#else
    if(optional ==  0  && errno == ENOENT)
        exit(EXIT_FAILURE);
#endif

just after the failure of the  call that set errno ( stat and fopen)
to avoid false error messages.


Modified:
   trunk/busybox/miscutils/devfsd.c


Changeset:
Modified: trunk/busybox/miscutils/devfsd.c
===================================================================
--- trunk/busybox/miscutils/devfsd.c	2005-06-07 03:21:20 UTC (rev 10479)
+++ trunk/busybox/miscutils/devfsd.c	2005-06-07 03:47:00 UTC (rev 10480)
@@ -566,40 +566,36 @@
 #ifdef CONFIG_DEBUG
 	msg_logger( NO_DIE, LOG_INFO, "read_config_file(): %s\n", path);
 #endif
-	if (stat (path, &statbuf) != 0 || statbuf.st_size == 0 )
-		goto read_config_file_err;
-
-	if ( S_ISDIR (statbuf.st_mode) )
+	if (stat (path, &statbuf) == 0 )
 	{
-		/* strip last / from dirname so we don't need to check for it later */
-		while( path  && path[1]!='\0' && path[strlen(path)-1] == '/')
-			path[strlen(path) -1] = '\0';
-
-		dir_operation(READ_CONFIG, path, 0, event_mask);
-		return;
-	}
-
-	if ( ( fp = fopen (path, "r") ) != NULL )
-	{
-		while (fgets (buf, STRING_LENGTH, fp) != NULL)
+		/* Don't read 0 length files: ignored */
+		/*if( statbuf.st_size == 0 )
+				return;*/
+		if ( S_ISDIR (statbuf.st_mode) )
 		{
-			/*  GETS(3)       Linux Programmer's Manual
-			fgets() reads in at most one less than size characters from stream  and
-			stores  them  into  the buffer pointed to by s.  Reading stops after an
-			EOF or a newline.  If a newline is read, it is stored into the  buffer.
-			A '\0' is stored after the last character in the buffer.
-			*/
-			/*buf[strlen (buf) - 1] = '\0';*/
-			/*  Skip whitespace  */
-			for (line = buf; isspace (*line); ++line)
-				/*VOID*/;
-			if (line[0] == '\0' || line[0] == '#' )
-				continue;
-			process_config_line (line, event_mask);
+			/* strip last / from dirname so we don't need to check for it later */
+			while( path  && path[1]!='\0' && path[strlen(path)-1] == '/')
+				path[strlen(path) -1] = '\0';
+	
+			dir_operation(READ_CONFIG, path, 0, event_mask);
+			return;
 		}
-		fclose (fp);
-		errno=0;
-	}
+		if ( ( fp = fopen (path, "r") ) != NULL )
+		{
+			while (fgets (buf, STRING_LENGTH, fp) != NULL)
+			{
+				/*  Skip whitespace  */
+				for (line = buf; isspace (*line); ++line)
+					/*VOID*/;
+				if (line[0] == '\0' || line[0] == '#' )
+					continue;
+				process_config_line (line, event_mask);
+			}
+			fclose (fp);
+		} else {
+			goto read_config_file_err;
+		}
+	} else {
 read_config_file_err:
 #ifdef CONFIG_DEVFSD_VERBOSE
 	msg_logger(((optional ==  0 ) && (errno == ENOENT))? DIE : NO_DIE, LOG_ERR, "read config file: %s: %m\n", path);
@@ -607,6 +603,7 @@
 	if(optional ==  0  && errno == ENOENT)
 		exit(EXIT_FAILURE);
 #endif
+	}
 	return;
 }   /*  End Function read_config_file   */
 




More information about the busybox-cvs mailing list