return mounted;
}
-static void info_scsi_cmd_err(struct udev *udev, char *cmd, int err)
+static void info_scsi_cmd_err(struct udev *udev, const char *cmd, int err)
{
if (err == -1) {
info(udev, "%s failed\n", cmd);
/* Keymap file argument is a filename */
/* Open override file if present, otherwise default file */
char keymap_path[PATH_MAX];
+ FILE *f;
snprintf(keymap_path, sizeof(keymap_path), "%s%s", SYSCONFDIR "/udev/keymaps/", filearg);
- FILE *f = fopen(keymap_path, "r");
+ f = fopen(keymap_path, "r");
if (f) {
merge_table(fd, f);
} else {
unsigned short int len;
if (fread(&len, sizeof(unsigned short int), 1, queue_file) == 1) {
- char devpath[len];
+ char *devpath = alloca(len);
/* use fread to skip, fseek might drop buffered data */
if (fread(devpath, 1, len, queue_file) == len)
/* if devpath was too long, skip unread characters */
if (read_bytes != len) {
unsigned short int skip_bytes = len - read_bytes;
- char buf[skip_bytes];
+ char *buf = alloca(skip_bytes);
if (fread(buf, 1, skip_bytes, queue_file) != skip_bytes)
return -1;
uid_t util_lookup_user(struct udev *udev, const char *user)
{
char *endptr;
- size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
- char buf[buflen];
struct passwd pwbuf;
struct passwd *pw;
uid_t uid;
+ size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+ char *buf = alloca(buflen);
if (strcmp(user, "root") == 0)
return 0;
gid_t util_lookup_group(struct udev *udev, const char *group)
{
char *endptr;
- size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX);
- char *buf;
struct group grbuf;
struct group *gr;
gid_t gid = 0;
+ size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+ char *buf = alloca(buflen);
if (strcmp(group, "root") == 0)
return 0;
int main(int argc, char** argv)
{
+ int mtd_fd;
+ int error;
+ mtd_info_t mtd_info;
+
if (argc != 2) {
printf("usage: mtd_probe /dev/mtd[n]\n");
return 1;
}
- int mtd_fd = open(argv[1], O_RDONLY);
+ mtd_fd = open(argv[1], O_RDONLY);
if (mtd_fd == -1) {
perror("open");
exit(-1);
}
- mtd_info_t mtd_info;
- int error = ioctl(mtd_fd, MEMGETINFO, &mtd_info);
+ error = ioctl(mtd_fd, MEMGETINFO, &mtd_info);
if (error == -1) {
perror("ioctl");
exit(-1);
void probe_smart_media(int mtd_fd, mtd_info_t* info)
{
+ int sector_size;
+ int block_size;
+ int size_in_megs;
+ int spare_count;
char* cis_buffer = malloc(SM_SECTOR_SIZE);
+ int offset;
+ int cis_found = 0;
if (!cis_buffer)
return;
if (info->type != MTD_NANDFLASH)
goto exit;
- int sector_size = info->writesize;
- int block_size = info->erasesize;
- int size_in_megs = info->size / (1024 * 1024);
- int spare_count;
-
+ sector_size = info->writesize;
+ block_size = info->erasesize;
+ size_in_megs = info->size / (1024 * 1024);
if (sector_size != SM_SECTOR_SIZE && sector_size != SM_SMALL_PAGE)
goto exit;
break;
}
-
- int offset;
- int cis_found = 0;
-
for (offset = 0 ; offset < block_size * spare_count ;
offset += sector_size) {
-
lseek(mtd_fd, SEEK_SET, offset);
if (read(mtd_fd, cis_buffer, SM_SECTOR_SIZE) == SM_SECTOR_SIZE){
cis_found = 1;
bool udev_builtin_run_once(enum udev_builtin_cmd cmd);
int udev_builtin_run(struct udev_device *dev, enum udev_builtin_cmd cmd, const char *command, bool test);
void udev_builtin_list(struct udev *udev);
+bool udev_builtin_validate(struct udev *udev);
int udev_builtin_add_property(struct udev_device *dev, bool test, const char *key, const char *val);
/* udev logging */