#include "list.h"
-#define BLOCK_PATH "/block/"
-#define CLASS_PATH "/class/"
-#define NET_PATH "/class/net/"
-
-char get_device_type(const char *path, const char *subsystem)
+void udev_set_values(struct udevice *udev, const char* devpath,
+ const char *subsystem, const char* action)
{
- if (strcmp(subsystem, "block") == 0)
- return 'b';
-
- if (strcmp(subsystem, "net") == 0)
- return 'n';
+ memset(udev, 0x00, sizeof(struct udevice));
+ if (devpath)
+ strfieldcpy(udev->devpath, devpath);
+ if (subsystem)
+ strfieldcpy(udev->subsystem, subsystem);
+ if (action)
+ strfieldcpy(udev->action, action);
- if (strncmp(path, BLOCK_PATH, strlen(BLOCK_PATH)) == 0 &&
- strlen(path) > strlen(BLOCK_PATH))
- return 'b';
+ if (strcmp(udev->subsystem, "block") == 0)
+ udev->type = 'b';
- if (strncmp(path, NET_PATH, strlen(NET_PATH)) == 0 &&
- strlen(path) > strlen(NET_PATH))
- return 'n';
+ if (strcmp(udev->subsystem, "net") == 0)
+ udev->type = 'n';
- if (strncmp(path, CLASS_PATH, strlen(CLASS_PATH)) == 0 &&
- strlen(path) > strlen(CLASS_PATH))
- return 'c';
+ if (strncmp(udev->devpath, "/block/", 7) == 0)
+ udev->type = 'b';
- return '\0';
-}
+ if (strncmp(udev->devpath, "/class/net/", 11) == 0)
+ udev->type = 'n';
-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);
+ if (strncmp(udev->devpath, "/class/", 7) == 0)
+ udev->type = 'c';
}
int kernel_release_satisfactory(int version, int patchlevel, int sublevel)
struct sysfs_device *sysfs_dev;
struct sysfs_device *sysfs_dev_parent;
int retval = 0;
- char type;
-
- type = get_device_type(path, "");
- dbg("device type is %c", type);
/* get the class dev */
class_dev = sysfs_open_class_device_path(path);
"to match the device for which the node will be created.\n"
"\n");
- if (type == 'b' || type =='c') {
- /* read the 'dev' file for major/minor*/
- attr = sysfs_get_classdev_attr(class_dev, "dev");
- if (attr == NULL) {
- printf("couldn't get the \"dev\" file\n");
- retval = -1;
- goto exit;
- }
+ /* look for the 'dev' file */
+ attr = sysfs_get_classdev_attr(class_dev, "dev");
+ if (attr == NULL)
printf("device '%s' has major:minor %s", class_dev->path, attr->value);
- }
/* open sysfs class device directory and print all attributes */
printf(" looking at class device '%s':\n", class_dev->path);