summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-11-12 06:17:35 +0100
committerGreg KH <gregkh@suse.de>2005-04-26 22:24:10 -0700
commitc6478ec1e128f0a92c2123ed110a651b88d43569 (patch)
treecfefe6c87301604bb838f1a5eb566f1206d975d2
parent31fd340352236c06c30a85fa9fbdbfbbd10bd439 (diff)
[PATCH] add ACTION to udev object to expose it to the whole process
-rw-r--r--udev.c8
-rw-r--r--udev.h5
-rw-r--r--udev_lib.c54
-rw-r--r--udev_lib.h8
-rw-r--r--udevstart.c2
-rw-r--r--udevtest.c2
6 files changed, 14 insertions, 65 deletions
diff --git a/udev.c b/udev.c
index b54896669b..480a1cdca2 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 1cf4ad7eae..3f9f2c8612 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 7fb45f0b5f..951d36b1d7 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 94649b645f..30d839461a 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 fd490f0791..e05680aa93 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 8af2120fb1..e67af0df67 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);