#include <sys/wait.h>
#include <sys/stat.h>
+#include "libsysfs/sysfs/libsysfs.h"
#include "list.h"
#include "udev.h"
#include "udev_version.h"
#include "logging.h"
#include "namedev.h"
-#include "libsysfs/libsysfs.h"
#include "klibc_fixups.h"
static struct sysfs_attribute *find_sysfs_attribute(struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device, char *attr);
static char *get_default_owner(void)
{
if (strlen(default_owner_str) == 0)
- strncpy(default_owner_str, "root", OWNER_SIZE);
+ strfieldcpy(default_owner_str, "root");
return default_owner_str;
}
static char *get_default_group(void)
{
if (strlen(default_group_str) == 0)
- strncpy(default_group_str, "root", GROUP_SIZE);
+ strfieldcpy(default_group_str, "root");
return default_group_str;
}
char *pos3;
char *attr;
int num;
+ int i;
char c;
struct sysfs_attribute *tmpattr;
case 'c':
if (strlen(udev->program_result) == 0)
break;
- if (num > 0) {
- strncpy(temp1, udev->program_result, sizeof(temp1));
+ /* get part part of the result string */
+ i = num; /* num syntax is deprecated and will be removed */
+ if (attr != NULL)
+ i = atoi(attr);
+ if (i > 0) {
+ strfieldcpy(temp1, udev->program_result);
pos2 = temp1;
- while (num) {
- num--;
+ while (i) {
+ i--;
pos3 = strsep(&pos2, " ");
if (pos3 == NULL) {
dbg("requested part of result string not found");
tspec.tv_nsec = 10000000; /* sleep 10 millisec */
loop = 10;
while (loop--) {
- nanosleep(&tspec, NULL);
+ if (udev_sleep)
+ nanosleep(&tspec, NULL);
if (class_dev_parent)
sysfs_device = sysfs_get_classdev_device(class_dev_parent);
else
loop = 10;
tspec.tv_nsec = 10000000;
while (loop--) {
- nanosleep(&tspec, NULL);
+ if (udev_sleep)
+ nanosleep(&tspec, NULL);
sysfs_get_device_bus(sysfs_device);
if (sysfs_device->bus[0] != '\0')
/* substitute placeholder */
apply_format(udev, udev->name, class_dev, sysfs_device);
apply_format(udev, udev->symlink, class_dev, sysfs_device);
-
+ udev->partitions = dev->partitions;
done:
perm = find_perm(udev->name);
if (perm) {
} else {
/* no matching perms found :( */
udev->mode = get_default_mode();
- strncpy(udev->owner, get_default_owner(), OWNER_SIZE);
- strncpy(udev->group, get_default_group(), GROUP_SIZE);
+ strfieldcpy(udev->owner, get_default_owner());
+ strfieldcpy(udev->group, get_default_group());
}
dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
udev->name, udev->owner, udev->group, udev->mode);