From c6478ec1e128f0a92c2123ed110a651b88d43569 Mon Sep 17 00:00:00 2001 From: "kay.sievers@vrfy.org" Date: Fri, 12 Nov 2004 06:17:35 +0100 Subject: [PATCH] [PATCH] add ACTION to udev object to expose it to the whole process --- udev.c | 8 ++++---- udev.h | 5 +++-- udev_lib.c | 54 +++-------------------------------------------------- udev_lib.h | 8 ++------ udevstart.c | 2 +- udevtest.c | 2 +- 6 files changed, 14 insertions(+), 65 deletions(-) diff --git a/udev.c b/udev.c index b54896669..480a1cdca 100644 --- a/udev.c +++ b/udev.c @@ -94,9 +94,9 @@ int main(int argc, char *argv[], char *envp[]) if (strstr(argv[0], "udevstart") || (argv[1] != NULL && strstr(argv[1], "udevstart"))) { act_type = UDEVSTART; } else { - const char *action = get_action(); - const char *devpath = get_devpath(); - const char *subsystem = get_subsystem(main_argv[1]); + const char *action = getenv("ACTION"); + const char *devpath = getenv("DEVPATH"); + const char *subsystem = argv[1]; if (!action) { dbg("no action?"); @@ -128,7 +128,7 @@ int main(int argc, char *argv[], char *envp[]) goto exit; } - udev_set_values(&udev, devpath, subsystem); + udev_set_values(&udev, devpath, subsystem, action); /* skip blacklisted subsystems */ if (udev.type != 'n' && subsystem_expect_no_dev(subsystem)) { diff --git a/udev.h b/udev.h index 1cf4ad7ea..3f9f2c861 100644 --- a/udev.h +++ b/udev.h @@ -30,8 +30,8 @@ #define COMMENT_CHARACTER '#' #define NAME_SIZE 256 -#define OWNER_SIZE 30 -#define GROUP_SIZE 30 +#define OWNER_SIZE 32 +#define GROUP_SIZE 32 #define MODE_SIZE 8 #define ACTION_SIZE 32 @@ -44,6 +44,7 @@ struct udevice { char devpath[DEVPATH_SIZE]; char subsystem[SUBSYSTEM_SIZE]; + char action[ACTION_SIZE]; char name[NAME_SIZE]; char owner[OWNER_SIZE]; char group[GROUP_SIZE]; diff --git a/udev_lib.c b/udev_lib.c index 7fb45f0b5..951d36b1d 100644 --- a/udev_lib.c +++ b/udev_lib.c @@ -35,56 +35,6 @@ #include "list.h" -char *get_action(void) -{ - char *action; - - action = getenv("ACTION"); - if (action != NULL && strlen(action) > ACTION_SIZE) - action[ACTION_SIZE-1] = '\0'; - - return action; -} - -char *get_devpath(void) -{ - char *devpath; - - devpath = getenv("DEVPATH"); - if (devpath != NULL && strlen(devpath) > DEVPATH_SIZE) - devpath[DEVPATH_SIZE-1] = '\0'; - - return devpath; -} - -char *get_devname(void) -{ - char *devname; - - devname = getenv("DEVNAME"); - if (devname != NULL && strlen(devname) > NAME_SIZE) - devname[NAME_SIZE-1] = '\0'; - - return devname; -} - -char *get_seqnum(void) -{ - char *seqnum; - - seqnum = getenv("SEQNUM"); - - return seqnum; -} - -char *get_subsystem(char *subsystem) -{ - if (subsystem != NULL && strlen(subsystem) > SUBSYSTEM_SIZE) - subsystem[SUBSYSTEM_SIZE-1] = '\0'; - - return subsystem; -} - #define BLOCK_PATH "/block/" #define CLASS_PATH "/class/" #define NET_PATH "/class/net/" @@ -112,11 +62,13 @@ char get_device_type(const char *path, const char *subsystem) return '\0'; } -void udev_set_values(struct udevice *udev, const char* devpath, const char *subsystem) +void udev_set_values(struct udevice *udev, const char* devpath, + const char *subsystem, const char* action) { memset(udev, 0x00, sizeof(struct udevice)); strfieldcpy(udev->devpath, devpath); strfieldcpy(udev->subsystem, subsystem); + strfieldcpy(udev->action, action); udev->type = get_device_type(devpath, subsystem); } diff --git a/udev_lib.h b/udev_lib.h index 94649b645..30d839461 100644 --- a/udev_lib.h +++ b/udev_lib.h @@ -76,13 +76,9 @@ do { \ # define asmlinkage /* nothing */ #endif -extern char *get_action(void); -extern char *get_devpath(void); -extern char *get_devname(void); -extern char *get_seqnum(void); -extern char *get_subsystem(char *subsystem); extern char get_device_type(const char *path, const char *subsystem); -extern void udev_set_values(struct udevice *udev, const char* devpath, const char *subsystem); +extern void udev_set_values(struct udevice *udev, const char* devpath, + const char *subsystem, const char* action); extern int create_path(const char *path); extern int file_map(const char *filename, char **buf, size_t *bufsize); extern void file_unmap(char *buf, size_t bufsize); diff --git a/udevstart.c b/udevstart.c index fd490f079..e05680aa9 100644 --- a/udevstart.c +++ b/udevstart.c @@ -110,7 +110,7 @@ static int add_device(char *devpath, char *subsystem) return -ENODEV; } - udev_set_values(&udev, devpath, subsystem); + udev_set_values(&udev, devpath, subsystem, "add"); udev_add_device(&udev, class_dev); /* run scripts */ diff --git a/udevtest.c b/udevtest.c index 8af2120fb..e67af0df6 100644 --- a/udevtest.c +++ b/udevtest.c @@ -103,7 +103,7 @@ int main(int argc, char *argv[], char *envp[]) subsystem = argv[2]; /* fill in values and test_run flag*/ - udev_set_values(&udev, devpath, subsystem); + udev_set_values(&udev, devpath, subsystem, "add"); /* open the device */ snprintf(path, SYSFS_PATH_MAX, "%s%s", sysfs_path, udev.devpath); -- 2.30.2