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.
This commit is contained in:
Rob Landley 2005-06-07 03:47:00 +00:00
parent 16cd02e01e
commit 06813d066b

View File

@ -566,40 +566,36 @@ static void read_config_file (char *path, int optional, unsigned long *event_mas
#ifdef CONFIG_DEBUG #ifdef CONFIG_DEBUG
msg_logger( NO_DIE, LOG_INFO, "read_config_file(): %s\n", path); msg_logger( NO_DIE, LOG_INFO, "read_config_file(): %s\n", path);
#endif #endif
if (stat (path, &statbuf) != 0 || statbuf.st_size == 0 ) if (stat (path, &statbuf) == 0 )
goto read_config_file_err;
if ( S_ISDIR (statbuf.st_mode) )
{ {
/* strip last / from dirname so we don't need to check for it later */ /* Don't read 0 length files: ignored */
while( path && path[1]!='\0' && path[strlen(path)-1] == '/') /*if( statbuf.st_size == 0 )
path[strlen(path) -1] = '\0'; return;*/
if ( S_ISDIR (statbuf.st_mode) )
dir_operation(READ_CONFIG, path, 0, event_mask);
return;
}
if ( ( fp = fopen (path, "r") ) != NULL )
{
while (fgets (buf, STRING_LENGTH, fp) != NULL)
{ {
/* GETS(3) Linux Programmer's Manual /* strip last / from dirname so we don't need to check for it later */
fgets() reads in at most one less than size characters from stream and while( path && path[1]!='\0' && path[strlen(path)-1] == '/')
stores them into the buffer pointed to by s. Reading stops after an path[strlen(path) -1] = '\0';
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. dir_operation(READ_CONFIG, path, 0, event_mask);
*/ return;
/*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);
} }
fclose (fp); if ( ( fp = fopen (path, "r") ) != NULL )
errno=0; {
} 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: read_config_file_err:
#ifdef CONFIG_DEVFSD_VERBOSE #ifdef CONFIG_DEVFSD_VERBOSE
msg_logger(((optional == 0 ) && (errno == ENOENT))? DIE : NO_DIE, LOG_ERR, "read config file: %s: %m\n", path); msg_logger(((optional == 0 ) && (errno == ENOENT))? DIE : NO_DIE, LOG_ERR, "read config file: %s: %m\n", path);
@ -607,6 +603,7 @@ read_config_file_err:
if(optional == 0 && errno == ENOENT) if(optional == 0 && errno == ENOENT)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
#endif #endif
}
return; return;
} /* End Function read_config_file */ } /* End Function read_config_file */