accidentally applied wrong (old) patch, fixing up...
[oweals/busybox.git] / miscutils / devfsd.c
index c8af688a4046df84616fd20bb453d5754a5b3505..5435a6a0bfd0a9d6c3503bc82ecd8fb0807aeb47 100644 (file)
@@ -1,4 +1,8 @@
 /* vi: set sw=4 ts=4: */
+/*
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ */
+
 /*
        devfsd implementation for busybox
 
@@ -302,7 +306,7 @@ static void msg_logger(int pri, const char * fmt, ... )
        va_start(ap, fmt);
        ret = access ("/dev/log", F_OK);
        if (ret == 0) {
-               openlog(bb_applet_name, 0, LOG_DAEMON);
+               openlog(applet_name, 0, LOG_DAEMON);
                vsyslog( pri , fmt, ap);
                /* Man: A trailing newline is added when needed. */
                closelog();
@@ -387,45 +391,35 @@ static void safe_memcpy( char *dest, const char *src, int len)
 
 static unsigned int scan_dev_name_common(const char *d, unsigned int n, int addendum, char *ptr)
 {
-       if( d[n - 4]=='d' && d[n - 3]=='i' && d[n - 2]=='s' && d[n - 1]=='c')
-               return (2 + addendum);
-       else if( d[n - 2]=='c' && d[n - 1]=='d')
-               return (3 + addendum);
-       else if(ptr[0]=='p' && ptr[1]=='a' && ptr[2]=='r' && ptr[3]=='t')
-               return (4 + addendum);
-       else if( ptr[n - 2]=='m' && ptr[n - 1]=='t')
-               return (5 + addendum);
-       else
-               return 0;
+       if(d[n - 4]=='d' && d[n - 3]=='i' && d[n - 2]=='s' && d[n - 1]=='c')
+               return 2 + addendum;
+       if(d[n - 2]=='c' && d[n - 1]=='d')
+               return 3 + addendum;
+       if(ptr[0]=='p' && ptr[1]=='a' && ptr[2]=='r' && ptr[3]=='t')
+               return 4 + addendum;
+       if(ptr[n - 2]=='m' && ptr[n - 1]=='t')
+               return 5 + addendum;
+       return 0;
 }
 
 static unsigned int scan_dev_name(const char *d, unsigned int n, char *ptr)
 {
-       if(d[0]=='s' && d[1]=='c' && d[2]=='s' && d[3]=='i' && d[4]=='/')
-       {
+       if(d[0]=='s' && d[1]=='c' && d[2]=='s' && d[3]=='i' && d[4]=='/') {
                if( d[n - 7]=='g' && d[n - 6]=='e' && d[n - 5]=='n' &&
                        d[n - 4]=='e' && d[n - 3]=='r' && d[n - 2]=='i' &&
                        d[n - 1]=='c' )
                        return 1;
                return scan_dev_name_common(d, n, 0, ptr);
        }
-       else if(d[0]=='i' && d[1]=='d' && d[2]=='e' && d[3]=='/' &&
+       if(d[0]=='i' && d[1]=='d' && d[2]=='e' && d[3]=='/' &&
                        d[4]=='h' && d[5]=='o' && d[6]=='s' && d[7]=='t')
-       {
                return scan_dev_name_common(d, n, 4, ptr);
-       }
-       else if(d[0]=='s' && d[1]=='b' && d[2]=='p' && d[3]=='/')
-       {
+       if(d[0]=='s' && d[1]=='b' && d[2]=='p' && d[3]=='/')
                return 10;
-       }
-       else if(d[0]=='v' && d[1]=='c' && d[2]=='c' && d[3]=='/')
-       {
+       if(d[0]=='v' && d[1]=='c' && d[2]=='c' && d[3]=='/')
                return 11;
-       }
-       else if(d[0]=='p' && d[1]=='t' && d[2]=='y' && d[3]=='/')
-       {
+       if(d[0]=='p' && d[1]=='t' && d[2]=='y' && d[3]=='/')
                return 12;
-       }
        return 0;
 }
 
@@ -463,7 +457,7 @@ int devfsd_main (int argc, char **argv)
        }
 
        /* strip last / from mount point, so we don't need to check for it later */
-       whileargv[1][1]!='\0' && argv[1][strlen(argv[1])-1] == '/' )
+       while (argv[1][1]!='\0' && argv[1][strlen(argv[1])-1] == '/' )
                argv[1][strlen(argv[1]) -1] = '\0';
 
        mount_point = argv[1];
@@ -471,7 +465,7 @@ int devfsd_main (int argc, char **argv)
        if (chdir (mount_point) != 0)
                devfsd_perror_msg_and_die(mount_point);
 
-       fd = bb_xopen (".devfsd", O_RDONLY);
+       fd = xopen (".devfsd", O_RDONLY);
 
        if (fcntl (fd, F_SETFD, FD_CLOEXEC) != 0)
                devfsd_perror_msg_and_die("FD_CLOEXEC");
@@ -487,9 +481,9 @@ int devfsd_main (int argc, char **argv)
 
        if ( print_version  || (DEVFSD_PROTOCOL_REVISION_DAEMON != proto_rev) )
        {
-               bb_printf( "%s v%s\nDaemon %s:\t%d\nKernel-side %s:\t%d\n",
-                                        bb_applet_name,DEVFSD_VERSION,bb_msg_proto_rev,
-                                        DEVFSD_PROTOCOL_REVISION_DAEMON,bb_msg_proto_rev, proto_rev);
+               printf( "%s v%s\nDaemon %s:\t%d\nKernel-side %s:\t%d\n",
+                               applet_name,DEVFSD_VERSION,bb_msg_proto_rev,
+                               DEVFSD_PROTOCOL_REVISION_DAEMON,bb_msg_proto_rev, proto_rev);
                if (DEVFSD_PROTOCOL_REVISION_DAEMON != proto_rev)
                        bb_error_msg_and_die( "%s mismatch!",bb_msg_proto_rev);
                exit(EXIT_SUCCESS); /* -v */
@@ -505,7 +499,7 @@ int devfsd_main (int argc, char **argv)
        if (sigaction (SIGHUP, &new_action, NULL) != 0 || sigaction (SIGUSR1, &new_action, NULL) != 0 )
                devfsd_error_msg_and_die( "sigaction");
 
-       bb_printf("%s v%s  started for %s\n",bb_applet_name, DEVFSD_VERSION, mount_point);
+       printf("%s v%s  started for %s\n",applet_name, DEVFSD_VERSION, mount_point);
 
        /*  Set umask so that mknod(2), open(2) and mkdir(2) have complete control over permissions  */
        umask (0);
@@ -563,7 +557,7 @@ static void read_config_file (char *path, int optional, unsigned long *event_mas
                if ( S_ISDIR (statbuf.st_mode) )
                {
                        /* strip last / from dirname so we don't need to check for it later */
-                       while( path  && path[1]!='\0' && path[strlen(path)-1] == '/')
+                       while (path && path[1]!='\0' && path[strlen(path)-1] == '/')
                                path[strlen(path) -1] = '\0';
 
                        dir_operation(READ_CONFIG, path, 0, event_mask);
@@ -623,7 +617,7 @@ static void process_config_line (const char *line, unsigned long *event_mask)
                        when, name, what,
                        p[0], p[1], p[2], p[3], p[4], p[5], p[6]);
 
-       i = compare_string_array(options, when );
+       i = index_in_str_array(options, when );
 
        /*"CLEAR_CONFIG"*/
        if( i == 0)
@@ -669,9 +663,9 @@ static void process_config_line (const char *line, unsigned long *event_mask)
                goto process_config_line_err;
        }
 
-       i = compare_string_array(options, what );
+       i = index_in_str_array(options, what );
 
-       switch(i)
+       switch (i)
        {
                case 4: /* "PERMISSIONS" */
                        new->action.what = AC_PERMISSIONS;
@@ -700,7 +694,7 @@ static void process_config_line (const char *line, unsigned long *event_mask)
                        num_args -= 3;
 
                        for (count = 0; count < num_args; ++count)
-                               new->u.execute.argv[count] = bb_xstrdup (p[count]);
+                               new->u.execute.argv[count] = xstrdup (p[count]);
 
                        new->u.execute.argv[num_args] = NULL;
                        break;
@@ -710,8 +704,8 @@ static void process_config_line (const char *line, unsigned long *event_mask)
                        if (num_args != 2)
                                goto process_config_line_err; /* missing path and function in line */
 
-                       new->u.copy.source = bb_xstrdup (p[0]);
-                       new->u.copy.destination = bb_xstrdup (p[1]);
+                       new->u.copy.source = xstrdup (p[0]);
+                       new->u.copy.destination = xstrdup (p[1]);
                        break;
                case 8: /* IGNORE */
                /* FALLTROUGH */
@@ -783,7 +777,7 @@ static int do_servicing (int fd, unsigned long event_mask)
 
                caught_signal = FALSE;
                caught_sighup = FALSE;
-               return (c_sighup);
+               return c_sighup;
        }
        msg_logger_and_die(LOG_ERR, "read error on control file");
 }   /*  End Function do_servicing  */
@@ -1058,7 +1052,7 @@ static void action_compat (const struct devfsd_notify_struct *info, unsigned int
                        if( i ==  9 )
                                snprintf (compat_buf, sizeof (compat_buf), fmt[i], host, bus, target, lun, ptr + 2);
                /* esac */
-       } /* switch(action) */
+       } /* switch (action) */
 
        if(compat_name == NULL )
                return;
@@ -1079,7 +1073,7 @@ static void action_compat (const struct devfsd_notify_struct *info, unsigned int
                                debug_msg_logger(LOG_ERR, "unlink: %s: %m", compat_name);
                        break;
                /*esac*/
-       } /* switch(action) */
+       } /* switch (action) */
 }   /*  End Function action_compat  */
 
 static void restore(char *spath, struct stat source_stat, int rootlen)
@@ -1128,7 +1122,7 @@ static int copy_inode (const char *destpath, const struct stat *dest_stat,
                {
                        if (( source_len = readlink (sourcepath, source_link, STRING_LENGTH - 1) ) < 0 ||
                                ( dest_len   = readlink (destpath  , dest_link  , STRING_LENGTH - 1) ) < 0 )
-                               return (FALSE);
+                               return FALSE;
                        source_link[source_len] = '\0';
                        dest_link[dest_len]     = '\0';
                        if ( (source_len != dest_len) || (strcmp (source_link, dest_link) != 0) )
@@ -1136,11 +1130,11 @@ static int copy_inode (const char *destpath, const struct stat *dest_stat,
                                unlink (destpath);
                                symlink (source_link, destpath);
                        }
-                       return (TRUE);
+                       return TRUE;
                }   /*  Else not a symlink  */
                chmod (destpath, new_mode & ~S_IFMT);
                chown (destpath, source_stat->st_uid, source_stat->st_gid);
-               return (TRUE);
+               return TRUE;
        }
        /*  Different types: unlink and create  */
        unlink (destpath);
@@ -1161,7 +1155,7 @@ static int copy_inode (const char *destpath, const struct stat *dest_stat,
                                break;
                        symlink_val[val] = '\0';
                        if (symlink (symlink_val, destpath) == 0)
-                               return (TRUE);
+                               return TRUE;
                        break;
                case S_IFREG:
                        if ( ( fd = open (destpath, O_RDONLY | O_CREAT, new_mode & ~S_IFMT) ) < 0 )
@@ -1181,10 +1175,10 @@ static int copy_inode (const char *destpath, const struct stat *dest_stat,
                                break;
 do_chown:
                        if (chown (destpath, source_stat->st_uid, source_stat->st_gid) == 0)
-                               return (TRUE);
+                               return TRUE;
                /*break;*/
        }
-       return (FALSE);
+       return FALSE;
 }   /*  End Function copy_inode  */
 
 static void free_config (void)
@@ -1238,19 +1232,19 @@ static int get_uid_gid (int flag, const char *string)
                msg_logger_and_die(LOG_ERR,"%s: flag != UID && flag != GID", __FUNCTION__);
 
        if ( isdigit (string[0]) || ( (string[0] == '-') && isdigit (string[1]) ) )
-               return atoi (string);
+               return atoi(string);
 
        if ( flag == UID && ( pw_ent  = getpwnam (string) ) != NULL )
-               return (pw_ent->pw_uid);
+               return pw_ent->pw_uid;
 
        if ( flag == GID && ( grp_ent = getgrnam (string) ) != NULL )
-               return (grp_ent->gr_gid);
+               return grp_ent->gr_gid;
        else if(ENABLE_DEVFSD_VERBOSE)
                msg="group";
 
        if(ENABLE_DEVFSD_VERBOSE)
                msg_logger(LOG_ERR,"unknown %s: %s, defaulting to %cid=0",  msg, string, msg[0]);
-       return (0);
+       return 0;
 }/*  End Function get_uid_gid  */
 
 static mode_t get_mode (const char *string)
@@ -1265,20 +1259,20 @@ static mode_t get_mode (const char *string)
        debug_msg_logger(LOG_INFO, __FUNCTION__);
 
        if ( isdigit (string[0]) )
-               return strtoul (string, NULL, 8);
+               return strtoul(string, NULL, 8);
        if (strlen (string) != 9)
                msg_logger_and_die(LOG_ERR, "bad mode: %s", string);
 
        mode = 0;
        i= S_IRUSR;
-       while(i>0)
+       while (i>0)
        {
                if(string[0]=='r'||string[0]=='w'||string[0]=='x')
                        mode+=i;
                i=i/2;
                string++;
        }
-       return (mode);
+       return mode;
 }   /*  End Function get_mode  */
 
 static void signal_handler (int sig)
@@ -1309,15 +1303,15 @@ static const char *get_variable (const char *variable, void *info)
                /* Here on error we should do exit(RV_SYS_ERROR), instead we do exit(EXIT_FAILURE) */
                hostname[STRING_LENGTH - 1] = '\0';
 
-       /* compare_string_array returns i>=0  */
-       i=compare_string_array(field_names, variable);
+       /* index_in_str_array returns i>=0  */
+       i=index_in_str_array(field_names, variable);
 
        if ( i > 6 || i < 0 || (i > 1 && gv_info == NULL))
-                       return (NULL);
+                       return NULL;
        if( i >= 0 && i <= 3)
        {
                debug_msg_logger(LOG_INFO, "%s: i=%d %s", __FUNCTION__, i ,field_names[i+7]);
-               return(field_names[i+7]);
+               return field_names[i+7];
        }
 
        if(i == 4 )
@@ -1329,7 +1323,7 @@ static const char *get_variable (const char *variable, void *info)
 
        debug_msg_logger(LOG_INFO, "%s: %s", __FUNCTION__, sbuf);
 
-       return (sbuf);
+       return sbuf;
 }   /*  End Function get_variable  */
 
 static void service(struct stat statbuf, char *path)
@@ -1387,7 +1381,7 @@ static void dir_operation(int type, const char * dir_name, int var, unsigned lon
                        debug_msg_logger(LOG_ERR, "%s: %s: %m", __FUNCTION__, path);
                        continue;
                }
-               switch(type)
+               switch (type)
                {
                        case SERVICE:
                                service(statbuf,path);
@@ -1413,17 +1407,15 @@ static int mksymlink (const char *oldpath, const char *newpath)
        debug_msg_logger(LOG_INFO, __FUNCTION__);
 
        if ( !make_dir_tree (newpath) )
-               return (-1);
+               return -1;
 
-       if (symlink (oldpath, newpath) != 0)
-    {
-               if (errno != EEXIST)
-               {
+       if (symlink (oldpath, newpath) != 0) {
+               if (errno != EEXIST) {
                        debug_msg_logger(LOG_ERR, "%s: %s to %s: %m", __FUNCTION__, oldpath, newpath);
-                       return (-1);
+                       return -1;
                }
        }
-    return (0);
+       return 0;
 }   /*  End Function mksymlink  */
 
 
@@ -1438,9 +1430,9 @@ static int make_dir_tree (const char *path)
        if (bb_make_directory( dirname((char *)path), -1, FILEUTILS_RECUR )==-1)
        {
                debug_msg_logger(LOG_ERR, "%s: %s: %m",__FUNCTION__, path);
-               return (FALSE);
+               return FALSE;
        }
-       return(TRUE);
+       return TRUE;
 } /*  End Function make_dir_tree  */
 
 static int expand_expression(char *output, unsigned int outsize,
@@ -1469,9 +1461,9 @@ static int expand_expression(char *output, unsigned int outsize,
        debug_msg_logger(LOG_INFO, __FUNCTION__);
 
        if ( !st_expr_expand (temp, STRING_LENGTH, input, get_variable_func, info) )
-               return (FALSE);
+               return FALSE;
        expand_regexp (output, outsize, temp, devname, ex, numexp);
-       return (TRUE);
+       return TRUE;
 }   /*  End Function expand_expression  */
 
 static void expand_regexp (char *output, size_t outsize, const char *input,
@@ -1625,9 +1617,9 @@ const char *get_old_name (const char *devname, unsigned int namelen,
                if (strncmp (devname, trans->match, len) == 0)
                {
                        if (trans->format == NULL)
-                               return (devname + len);
+                               return devname + len;
                        sprintf (buffer, trans->format, devname + len);
-                       return (buffer);
+                       return buffer;
                }
        }
 
@@ -1687,7 +1679,7 @@ const char *get_old_name (const char *devname, unsigned int namelen,
        if(ENABLE_DEBUG && compat_name!=NULL)
                msg_logger(LOG_INFO, "%s: compat_name  %s", __FUNCTION__, compat_name);
 
-       return (compat_name);
+       return compat_name;
 }   /*  End Function get_old_name  */
 
 static char get_old_ide_name (unsigned int major, unsigned int minor)
@@ -1718,11 +1710,11 @@ static char get_old_ide_name (unsigned int major, unsigned int minor)
                        c+=2;
                }
                i++;
-       } while(i<=IDE9_MAJOR);
+       } while (i<=IDE9_MAJOR);
 
        if (minor > 63)
                ++letter;
-       return (letter);
+       return letter;
 }   /*  End Function get_old_ide_name  */
 
 static char *write_old_sd_name (char *buffer,
@@ -1743,7 +1735,7 @@ static char *write_old_sd_name (char *buffer,
        if (major == 8)
        {
                sprintf (buffer, "sd%c%s", 'a' + (minor >> 4), part);
-               return (buffer);
+               return buffer;
        }
        if ( (major > 64) && (major < 72) )
        {
@@ -1752,9 +1744,9 @@ static char *write_old_sd_name (char *buffer,
                        sprintf (buffer, "sd%c%s", 'a' + disc_index, part);
                else
                        sprintf (buffer, "sd%c%c%s", 'a' + (disc_index / 26) - 1, 'a' + disc_index % 26,part);
-               return (buffer);
+               return buffer;
        }
-       return (NULL);
+       return NULL;
 }   /*  End Function write_old_sd_name  */
 
 
@@ -1797,7 +1789,7 @@ int st_expr_expand (char *output, unsigned int length, const char *input,
                                /*  Variable expansion  */
                                input = expand_variable (buffer, length, &out_pos, ++input, get_variable_func, info);
                                if (input == NULL)
-                                       return (FALSE);
+                                       return FALSE;
                                break;
                        case '~':
                                /*  Home directory expansion  */
@@ -1808,7 +1800,7 @@ int st_expr_expand (char *output, unsigned int length, const char *input,
                                        if ( ( env = getenv ("HOME") ) == NULL )
                                        {
                                                msg_logger(LOG_INFO, bb_msg_variable_not_found, "HOME");
-                                               return (FALSE);
+                                               return FALSE;
                                        }
                                        len = strlen (env);
                                        if (len + out_pos >= length)
@@ -1828,7 +1820,7 @@ int st_expr_expand (char *output, unsigned int length, const char *input,
                                if ( ( pwent = getpwnam (tmp) ) == NULL )
                                {
                                        msg_logger(LOG_INFO, "no pwent for: %s", tmp);
-                                       return (FALSE);
+                                       return FALSE;
                                }
                                len = strlen (pwent->pw_dir);
                                if (len + out_pos >= length)
@@ -1845,16 +1837,16 @@ int st_expr_expand (char *output, unsigned int length, const char *input,
                                if (ch == '\0')
                                {
                                        memcpy (output, buffer, out_pos);
-                                       return (TRUE);
+                                       return TRUE;
                                }
                                break;
                        /* esac */
                }
        }
-       return (FALSE);
+       return FALSE;
 st_expr_expand_out:
        msg_logger(LOG_INFO, bb_msg_small_buffer);
-       return (FALSE);
+       return FALSE;
 }   /*  End Function st_expr_expand  */
 
 
@@ -1897,7 +1889,7 @@ static const char *expand_variable (char *buffer, unsigned int length,
 
                memcpy (buffer + *out_pos, tmp, len + 1);
                out_pos += len;
-               return (input);
+               return input;
        }
        /*  Ordinary variable expansion, possibly in braces  */
        if (ch != '{')
@@ -1914,7 +1906,7 @@ static const char *expand_variable (char *buffer, unsigned int length,
                if ( ( env = get_variable_v2 (tmp, func, info) ) == NULL )
                {
                        msg_logger(LOG_INFO, bb_msg_variable_not_found, tmp);
-                       return (NULL);
+                       return NULL;
                }
                len = strlen (env);
                if (len + *out_pos >= length)
@@ -1922,7 +1914,7 @@ static const char *expand_variable (char *buffer, unsigned int length,
 
                memcpy (buffer + *out_pos, env, len + 1);
                *out_pos += len;
-               return (input);
+               return input;
        }
        /*  Variable in braces: check for ':' tricks  */
        ch = *++input;
@@ -1938,13 +1930,13 @@ static const char *expand_variable (char *buffer, unsigned int length,
                safe_memcpy (tmp, input, len);
                ptr = expand_variable (buffer, length, out_pos, tmp, func, info );
                if (ptr == NULL)
-                       return (NULL);
-               return (input + len);
+                       return NULL;
+               return input + len;
        }
        if (ch != ':' || ptr[1] != '-' )
        {
                msg_logger(LOG_INFO, "illegal char in var name");
-               return (NULL);
+               return NULL;
        }
        /*  It's that handy "${var:-word}" expression. Check if var is defined  */
        len = ptr - input;
@@ -1969,7 +1961,7 @@ static const char *expand_variable (char *buffer, unsigned int length,
                                break;
                        case '\0':
                                msg_logger(LOG_INFO,"\"}\" not found in: %s", input);
-                               return (NULL);
+                               return NULL;
                        default:
                                break;
                }
@@ -1987,7 +1979,7 @@ static const char *expand_variable (char *buffer, unsigned int length,
 
                memcpy (buffer + *out_pos, env, len + 1);
                *out_pos += len;
-               return (input);
+               return input;
        }
        /*  Environment variable was not found, so process word. Advance input
        pointer to start of word in "${var:-word}"  */
@@ -1999,17 +1991,17 @@ static const char *expand_variable (char *buffer, unsigned int length,
        safe_memcpy (tmp, input, len);
        input = ptr;
        if ( !st_expr_expand (tmp, STRING_LENGTH, tmp, func, info ) )
-               return (NULL);
+               return NULL;
        len = strlen (tmp);
        if (len + *out_pos >= length)
                goto expand_variable_out;
 
        memcpy (buffer + *out_pos, tmp, len + 1);
        *out_pos += len;
-       return (input);
+       return input;
 expand_variable_out:
        msg_logger(LOG_INFO, bb_msg_small_buffer);
-       return (NULL);
+       return NULL;
 }   /*  End Function expand_variable  */
 
 
@@ -2032,9 +2024,9 @@ static const char *get_variable_v2 (const char *variable,
        {
                value = (*func) (variable, info);
                if (value != NULL)
-                       return (value);
+                       return value;
        }
-       return getenv (variable);
+       return getenv(variable);
 }   /*  End Function get_variable  */
 
 /* END OF CODE */