chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libudev: rename libudev-utils.c libudev-util.c
[elogind.git]
/
extras
/
scsi_id
/
scsi_id.c
diff --git
a/extras/scsi_id/scsi_id.c
b/extras/scsi_id/scsi_id.c
index bc942fac58fb7122caeb678bc3ef64d34d2cf8d5..d692a86799db76ef2f2ed9bb64ced6267930013f 100644
(file)
--- a/
extras/scsi_id/scsi_id.c
+++ b/
extras/scsi_id/scsi_id.c
@@
-14,6
+14,8
@@
* Free Software Foundation version 2 of the License.
*/
* Free Software Foundation version 2 of the License.
*/
+#include "config.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@
-27,9
+29,8
@@
#include <getopt.h>
#include <sys/stat.h>
#include <getopt.h>
#include <sys/stat.h>
-#include "../../udev.h"
+#include "../../udev
/udev
.h"
#include "scsi_id.h"
#include "scsi_id.h"
-#include "scsi_id_version.h"
static const struct option options[] = {
{ "device", 1, NULL, 'd' },
static const struct option options[] = {
{ "device", 1, NULL, 'd' },
@@
-51,7
+52,7
@@
static const char dev_short_options[] = "bgp:";
static int all_good;
static int dev_specified;
static int all_good;
static int dev_specified;
-static char config_file[MAX_PATH_LEN] = S
CSI_ID_CONFIG_FILE
;
+static char config_file[MAX_PATH_LEN] = S
YSCONFDIR "/scsi_id.config"
;
static enum page_code default_page_code;
static int sg_version = 4;
static int use_stderr;
static enum page_code default_page_code;
static int sg_version = 4;
static int use_stderr;
@@
-63,30
+64,12
@@
static char model_str[64];
static char revision_str[16];
static char type_str[16];
static char revision_str[16];
static char type_str[16];
-#ifdef USE_LOG
-void log_message(int priority, const char *format, ...)
+static void log_fn(struct udev *udev, int priority,
+ const char *file, int line, const char *fn,
+ const char *format, va_list args)
{
{
- va_list args;
- static int udev_log = -1;
-
- if (udev_log == -1) {
- const char *value;
-
- value = getenv("UDEV_LOG");
- if (value)
- udev_log = log_priority(value);
- else
- udev_log = LOG_ERR;
- }
-
- if (priority > udev_log)
- return;
-
- va_start(args, format);
vsyslog(priority, format, args);
vsyslog(priority, format, args);
- va_end(args);
}
}
-#endif
static void set_str(char *to, const char *from, size_t count)
{
static void set_str(char *to, const char *from, size_t count)
{
@@
-214,7
+197,8
@@
static int argc_count(char *opts)
*
* vendor and model can end in '\n'.
*/
*
* vendor and model can end in '\n'.
*/
-static int get_file_options(const char *vendor, const char *model,
+static int get_file_options(struct udev *udev,
+ const char *vendor, const char *model,
int *argc, char ***newargv)
{
char *buffer;
int *argc, char ***newargv)
{
char *buffer;
@@
-226,14
+210,14
@@
static int get_file_options(const char *vendor, const char *model,
int c;
int retval = 0;
int c;
int retval = 0;
- dbg("vendor='%s'; model='%s'\n", vendor, model);
+ dbg(
udev,
"vendor='%s'; model='%s'\n", vendor, model);
fd = fopen(config_file, "r");
if (fd == NULL) {
fd = fopen(config_file, "r");
if (fd == NULL) {
- dbg("can't open %s\n", config_file);
+ dbg(
udev,
"can't open %s\n", config_file);
if (errno == ENOENT) {
return 1;
} else {
if (errno == ENOENT) {
return 1;
} else {
- err("can't open %s: %s\n", config_file, strerror(errno));
+ err(
udev,
"can't open %s: %s\n", config_file, strerror(errno));
return -1;
}
}
return -1;
}
}
@@
-245,7
+229,7
@@
static int get_file_options(const char *vendor, const char *model,
*/
buffer = malloc(MAX_BUFFER_LEN);
if (!buffer) {
*/
buffer = malloc(MAX_BUFFER_LEN);
if (!buffer) {
- err("can't allocate memory\n");
+ err(
udev,
"can't allocate memory\n");
return -1;
}
return -1;
}
@@
-259,7
+243,7
@@
static int get_file_options(const char *vendor, const char *model,
break;
lineno++;
if (buf[strlen(buffer) - 1] != '\n') {
break;
lineno++;
if (buf[strlen(buffer) - 1] != '\n') {
- err("Config file line %d too long\n", lineno);
+ err(
udev,
"Config file line %d too long\n", lineno);
break;
}
break;
}
@@
-311,7
+295,7
@@
static int get_file_options(const char *vendor, const char *model,
* Only allow: [vendor=foo[,model=bar]]options=stuff
*/
if (!options_in || (!vendor_in && model_in)) {
* Only allow: [vendor=foo[,model=bar]]options=stuff
*/
if (!options_in || (!vendor_in && model_in)) {
- err("Error parsing config file line %d '%s'\n", lineno, buffer);
+ err(
udev,
"Error parsing config file line %d '%s'\n", lineno, buffer);
retval = -1;
break;
}
retval = -1;
break;
}
@@
-349,7
+333,7
@@
static int get_file_options(const char *vendor, const char *model,
c = argc_count(buffer) + 2;
*newargv = calloc(c, sizeof(**newargv));
if (!*newargv) {
c = argc_count(buffer) + 2;
*newargv = calloc(c, sizeof(**newargv));
if (!*newargv) {
- err("can't allocate memory\n");
+ err(
udev,
"can't allocate memory\n");
retval = -1;
} else {
*argc = c;
retval = -1;
} else {
*argc = c;
@@
-374,7
+358,8
@@
static int get_file_options(const char *vendor, const char *model,
return retval;
}
return retval;
}
-static int set_options(int argc, char **argv, const char *short_opts,
+static int set_options(struct udev *udev,
+ int argc, char **argv, const char *short_opts,
char *maj_min_dev)
{
int option;
char *maj_min_dev)
{
int option;
@@
-391,9
+376,9
@@
static int set_options(int argc, char **argv, const char *short_opts,
break;
if (optarg)
break;
if (optarg)
- dbg("option '%c' arg '%s'\n", option, optarg);
+ dbg(
udev,
"option '%c' arg '%s'\n", option, optarg);
else
else
- dbg("option '%c'\n", option);
+ dbg(
udev,
"option '%c'\n", option);
switch (option) {
case 'b':
switch (option) {
case 'b':
@@
-442,7
+427,7
@@
static int set_options(int argc, char **argv, const char *short_opts,
} else if (strcmp(optarg, "pre-spc3-83") == 0) {
default_page_code = PAGE_83_PRE_SPC3;
} else {
} else if (strcmp(optarg, "pre-spc3-83") == 0) {
default_page_code = PAGE_83_PRE_SPC3;
} else {
- err("Unknown page code '%s'\n", optarg);
+ err(
udev,
"Unknown page code '%s'\n", optarg);
return -1;
}
break;
return -1;
}
break;
@@
-450,7
+435,7
@@
static int set_options(int argc, char **argv, const char *short_opts,
case 's':
sg_version = atoi(optarg);
if (sg_version < 3 || sg_version > 4) {
case 's':
sg_version = atoi(optarg);
if (sg_version < 3 || sg_version > 4) {
- err("Unknown SG version '%s'\n", optarg);
+ err(
udev,
"Unknown SG version '%s'\n", optarg);
return -1;
}
break;
return -1;
}
break;
@@
-468,7
+453,7
@@
static int set_options(int argc, char **argv, const char *short_opts,
break;
case 'V':
break;
case 'V':
- printf("%s\n",
SCSI_ID_
VERSION);
+ printf("%s\n", VERSION);
exit(0);
break;
exit(0);
break;
@@
-484,7
+469,8
@@
static int set_options(int argc, char **argv, const char *short_opts,
return 0;
}
return 0;
}
-static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *page_code)
+static int per_dev_options(struct udev *udev,
+ struct scsi_id_device *dev_scsi, int *good_bad, int *page_code)
{
int retval;
int newargc;
{
int retval;
int newargc;
@@
-494,7
+480,7
@@
static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *
*good_bad = all_good;
*page_code = default_page_code;
*good_bad = all_good;
*page_code = default_page_code;
- retval = get_file_options(vendor_str, model_str, &newargc, &newargv);
+ retval = get_file_options(
udev,
vendor_str, model_str, &newargc, &newargv);
optind = 1; /* reset this global extern */
while (retval == 0) {
optind = 1; /* reset this global extern */
while (retval == 0) {
@@
-503,9
+489,9
@@
static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *
break;
if (optarg)
break;
if (optarg)
- dbg("option '%c' arg '%s'\n", option, optarg);
+ dbg(
udev,
"option '%c' arg '%s'\n", option, optarg);
else
else
- dbg("option '%c'\n", option);
+ dbg(
udev,
"option '%c'\n", option);
switch (option) {
case 'b':
switch (option) {
case 'b':
@@
-524,13
+510,13
@@
static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *
} else if (strcmp(optarg, "pre-spc3-83") == 0) {
*page_code = PAGE_83_PRE_SPC3;
} else {
} else if (strcmp(optarg, "pre-spc3-83") == 0) {
*page_code = PAGE_83_PRE_SPC3;
} else {
- err("Unknown page code '%s'\n", optarg);
+ err(
udev,
"Unknown page code '%s'\n", optarg);
retval = -1;
}
break;
default:
retval = -1;
}
break;
default:
- err("Unknown or bad option '%c' (0x%x)\n", option, option);
+ err(
udev,
"Unknown or bad option '%c' (0x%x)\n", option, option);
retval = -1;
break;
}
retval = -1;
break;
}
@@
-543,13
+529,13
@@
static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *
return retval;
}
return retval;
}
-static int set_inq_values(struct scsi_id_device *dev_scsi, const char *path)
+static int set_inq_values(struct
udev *udev, struct
scsi_id_device *dev_scsi, const char *path)
{
int retval;
dev_scsi->use_sg = sg_version;
{
int retval;
dev_scsi->use_sg = sg_version;
- retval = scsi_std_inquiry(dev_scsi, path);
+ retval = scsi_std_inquiry(
udev,
dev_scsi, path);
if (retval)
return retval;
if (retval)
return retval;
@@
-593,7
+579,7
@@
static void format_serial(char *serial)
* memory etc. return 2, and return 1 for expected cases (like broken
* device found) that do not print an id.
*/
* memory etc. return 2, and return 1 for expected cases (like broken
* device found) that do not print an id.
*/
-static int scsi_id(char *maj_min_dev)
+static int scsi_id(
struct udev *udev,
char *maj_min_dev)
{
int retval;
struct scsi_id_device dev_scsi;
{
int retval;
struct scsi_id_device dev_scsi;
@@
-601,15
+587,16
@@
static int scsi_id(char *maj_min_dev)
int page_code;
char serial_short[MAX_SERIAL_LEN] = "";
int page_code;
char serial_short[MAX_SERIAL_LEN] = "";
- set_inq_values(&dev_scsi, maj_min_dev);
+ set_inq_values(
udev,
&dev_scsi, maj_min_dev);
/* get per device (vendor + model) options from the config file */
/* get per device (vendor + model) options from the config file */
- retval = per_dev_options(&dev_scsi, &good_dev, &page_code);
+ retval = per_dev_options(
udev,
&dev_scsi, &good_dev, &page_code);
dbg("per dev options: good %d; page code 0x%x\n", good_dev, page_code);
if (!good_dev) {
retval = 1;
dbg("per dev options: good %d; page code 0x%x\n", good_dev, page_code);
if (!good_dev) {
retval = 1;
- } else if (scsi_get_serial(&dev_scsi, maj_min_dev, page_code,
+ } else if (scsi_get_serial(udev,
+ &dev_scsi, maj_min_dev, page_code,
serial_short, MAX_SERIAL_LEN)) {
retval = 1;
} else {
serial_short, MAX_SERIAL_LEN)) {
retval = 1;
} else {
@@
-641,25
+628,30
@@
static int scsi_id(char *maj_min_dev)
int main(int argc, char **argv)
{
int main(int argc, char **argv)
{
+ struct udev *udev;
int retval = 0;
char maj_min_dev[MAX_PATH_LEN];
int newargc;
char **newargv;
int retval = 0;
char maj_min_dev[MAX_PATH_LEN];
int newargc;
char **newargv;
+ udev = udev_new();
+ if (udev == NULL)
+ goto exit;
+
logging_init("scsi_id");
logging_init("scsi_id");
-
dbg("argc is %d\n", argc
);
+
udev_set_log_fn(udev, log_fn
);
/*
* Get config file options.
*/
newargv = NULL;
/*
* Get config file options.
*/
newargv = NULL;
- retval = get_file_options(NULL, NULL, &newargc, &newargv);
+ retval = get_file_options(
udev,
NULL, NULL, &newargc, &newargv);
if (retval < 0) {
retval = 1;
goto exit;
}
if (newargv && (retval == 0)) {
if (retval < 0) {
retval = 1;
goto exit;
}
if (newargv && (retval == 0)) {
- if (set_options(newargc, newargv, short_options, maj_min_dev) < 0) {
+ if (set_options(
udev,
newargc, newargv, short_options, maj_min_dev) < 0) {
retval = 2;
goto exit;
}
retval = 2;
goto exit;
}
@@
-669,18
+661,19
@@
int main(int argc, char **argv)
/*
* Get command line options (overriding any config file settings).
*/
/*
* Get command line options (overriding any config file settings).
*/
- if (set_options(argc, argv, short_options, maj_min_dev) < 0)
+ if (set_options(
udev,
argc, argv, short_options, maj_min_dev) < 0)
exit(1);
if (!dev_specified) {
exit(1);
if (!dev_specified) {
- err("no device specified\n");
+ err(
udev,
"no device specified\n");
retval = 1;
goto exit;
}
retval = 1;
goto exit;
}
- retval = scsi_id(maj_min_dev);
+ retval = scsi_id(
udev,
maj_min_dev);
exit:
exit:
+ udev_unref(udev);
logging_close();
return retval;
}
logging_close();
return retval;
}