chiark / gitweb /
do not init string arrays, just clear first byte
[elogind.git] / extras / scsi_id / scsi_id.c
index 10ec98c8bf5c7f319cf888f76bffe4ee0776dd51..45e48601f77e45e9385ca479badcb3184aa73f54 100644 (file)
 #include "scsi_id.h"
 
 static const struct option options[] = {
-       { "device", 1, NULL, 'd' },
-       { "config", 1, NULL, 'f' },
-       { "page", 1, NULL, 'p' },
-       { "blacklisted", 0, NULL, 'b' },
-       { "whitelisted", 0, NULL, 'g' },
-       { "replace-whitespace", 0, NULL, 'u' },
-       { "sg-version", 1, NULL, 's' },
-       { "verbose", 0, NULL, 'v' },
-       { "version", 0, NULL, 'V' },
-       { "export", 0, NULL, 'x' },
-       { "help", 0, NULL, 'h' },
+       { "device", required_argument, NULL, 'd' },
+       { "config", required_argument, NULL, 'f' },
+       { "page", required_argument, NULL, 'p' },
+       { "blacklisted", no_argument, NULL, 'b' },
+       { "whitelisted", no_argument, NULL, 'g' },
+       { "replace-whitespace", no_argument, NULL, 'u' },
+       { "sg-version", required_argument, NULL, 's' },
+       { "verbose", no_argument, NULL, 'v' },
+       { "version", no_argument, NULL, 'V' },
+       { "export", no_argument, NULL, 'x' },
+       { "help", no_argument, NULL, 'h' },
        {}
 };
 
@@ -135,8 +135,7 @@ static void set_type(char *to, const char *from, size_t len)
                        break;
                }
        }
-       strncpy(to, type, len);
-       to[len-1] = '\0';
+       util_strlcpy(to, type, len);
 }
 
 /*
@@ -385,8 +384,7 @@ static int set_options(struct udev *udev,
 
                case 'd':
                        dev_specified = 1;
-                       strncpy(maj_min_dev, optarg, MAX_PATH_LEN);
-                       maj_min_dev[MAX_PATH_LEN-1] = '\0';
+                       util_strlcpy(maj_min_dev, optarg, MAX_PATH_LEN);
                        break;
 
                case 'e':
@@ -394,8 +392,7 @@ static int set_options(struct udev *udev,
                        break;
 
                case 'f':
-                       strncpy(config_file, optarg, MAX_PATH_LEN);
-                       config_file[MAX_PATH_LEN-1] = '\0';
+                       util_strlcpy(config_file, optarg, MAX_PATH_LEN);
                        break;
 
                case 'g':
@@ -461,8 +458,7 @@ static int set_options(struct udev *udev,
        }
        if (optind < argc && !dev_specified) {
                dev_specified = 1;
-               strncpy(maj_min_dev, argv[optind], MAX_PATH_LEN);
-               maj_min_dev[MAX_PATH_LEN-1] = '\0';
+               util_strlcpy(maj_min_dev, argv[optind], MAX_PATH_LEN);
        }
        return 0;
 }
@@ -583,8 +579,9 @@ static int scsi_id(struct udev *udev, char *maj_min_dev)
        struct scsi_id_device dev_scsi;
        int good_dev;
        int page_code;
-       char serial_short[MAX_SERIAL_LEN] = "";
+       char serial_short[MAX_SERIAL_LEN];
 
+       serial_short[0] = '\0';
        set_inq_values(udev, &dev_scsi, maj_min_dev);
 
        /* get per device (vendor + model) options from the config file */