Frank Sorenson added hotplug support to mdev. (I tweaked it a bit. Need
to come up with a test suite for all the stuff that requires root access. Something involving User Mode Linux or QEMU, probably...)
This commit is contained in:
parent
1c19deed17
commit
29e08ffcdf
@ -18,6 +18,7 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include "busybox.h"
|
#include "busybox.h"
|
||||||
#include "xregex.h"
|
#include "xregex.h"
|
||||||
|
|
||||||
@ -209,20 +210,34 @@ static void find_dev(char *path)
|
|||||||
|
|
||||||
int mdev_main(int argc, char *argv[])
|
int mdev_main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if (argc > 1) {
|
char *action;
|
||||||
if (argc == 2 && !strcmp(argv[1],"-s")) {
|
char *env_path;
|
||||||
RESERVE_CONFIG_BUFFER(temp,PATH_MAX);
|
RESERVE_CONFIG_BUFFER(temp,PATH_MAX);
|
||||||
strcpy(temp,"/sys/block");
|
|
||||||
find_dev(temp);
|
/* Scan */
|
||||||
strcpy(temp,"/sys/class");
|
|
||||||
find_dev(temp);
|
|
||||||
if(ENABLE_FEATURE_CLEAN_UP)
|
|
||||||
RELEASE_CONFIG_BUFFER(temp);
|
|
||||||
return 0;
|
|
||||||
} else bb_show_usage();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* hotplug support goes here */
|
|
||||||
|
|
||||||
|
if (argc == 2 && !strcmp(argv[1],"-s")) {
|
||||||
|
strcpy(temp,"/sys/block");
|
||||||
|
find_dev(temp);
|
||||||
|
strcpy(temp,"/sys/class");
|
||||||
|
find_dev(temp);
|
||||||
|
|
||||||
|
/* Hotplug */
|
||||||
|
|
||||||
|
} else {
|
||||||
|
action = getenv("ACTION");
|
||||||
|
env_path = getenv("DEVPATH");
|
||||||
|
if (!action || !env_path) bb_show_usage();
|
||||||
|
|
||||||
|
if (!strcmp(action, "add")) {
|
||||||
|
sprintf(temp, "/sys%s", env_path);
|
||||||
|
make_device(temp);
|
||||||
|
} else if (!strcmp(action, "remove")) {
|
||||||
|
sprintf(temp, "%s/%s", DEV_PATH, strrchr(env_path, '/') + 1);
|
||||||
|
unlink(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ENABLE_FEATURE_CLEAN_UP) RELEASE_CONFIG_BUFFER(temp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user