Optimize the code that copies strings
[fio.git] / diskutil.c
index b973120c1abc89b7bea66698a0b38e47315858f3..f074401501ba777de8f1f9516ed602feace0142c 100644 (file)
@@ -181,8 +181,7 @@ static int get_device_numbers(char *file_name, int *maj, int *min)
                /*
                 * must be a file, open "." in that path
                 */
-               tempname[PATH_MAX - 1] = '\0';
-               strncpy(tempname, file_name, PATH_MAX - 1);
+               snprintf(tempname, ARRAY_SIZE(tempname), "%s", file_name);
                p = dirname(tempname);
                if (stat(p, &st)) {
                        perror("disk util stat");
@@ -242,7 +241,8 @@ static void find_add_disk_slaves(struct thread_data *td, char *path,
                    !strcmp(dirent->d_name, ".."))
                        continue;
 
-               sprintf(temppath, "%s/%s", slavesdir, dirent->d_name);
+               nowarn_snprintf(temppath, sizeof(temppath), "%s/%s", slavesdir,
+                               dirent->d_name);
                /* Can we always assume that the slaves device entries
                 * are links to the real directories for the slave
                 * devices?
@@ -255,9 +255,12 @@ static void find_add_disk_slaves(struct thread_data *td, char *path,
                }
                slavepath[linklen] = '\0';
 
-               sprintf(temppath, "%s/%s/dev", slavesdir, slavepath);
+               nowarn_snprintf(temppath, sizeof(temppath), "%s/%s/dev",
+                               slavesdir, slavepath);
                if (access(temppath, F_OK) != 0)
-                       sprintf(temppath, "%s/%s/device/dev", slavesdir, slavepath);
+                       nowarn_snprintf(temppath, sizeof(temppath),
+                                       "%s/%s/device/dev", slavesdir,
+                                       slavepath);
                if (read_block_dev_entry(temppath, &majdev, &mindev)) {
                        perror("Error getting slave device numbers");
                        closedir(dirhandle);
@@ -271,7 +274,8 @@ static void find_add_disk_slaves(struct thread_data *td, char *path,
                if (slavedu)
                        continue;
 
-               sprintf(temppath, "%s/%s", slavesdir, slavepath);
+               nowarn_snprintf(temppath, sizeof(temppath), "%s/%s", slavesdir,
+                               slavepath);
                __init_per_file_disk_util(td, majdev, mindev, temppath);
                slavedu = disk_util_exists(majdev, mindev);
 
@@ -309,7 +313,8 @@ static struct disk_util *disk_util_add(struct thread_data *td, int majdev,
                sfree(du);
                return NULL;
        }
-       strncpy((char *) du->dus.name, basename(path), FIO_DU_NAME_SZ - 1);
+       snprintf((char *) du->dus.name, ARRAY_SIZE(du->dus.name), "%s",
+                basename(path));
        du->sysfs_root = strdup(path);
        du->major = majdev;
        du->minor = mindev;
@@ -430,8 +435,7 @@ static struct disk_util *__init_per_file_disk_util(struct thread_data *td,
                        log_err("unknown sysfs layout\n");
                        return NULL;
                }
-               tmp[PATH_MAX - 1] = '\0';
-               strncpy(tmp, p, PATH_MAX - 1);
+               snprintf(tmp, ARRAY_SIZE(tmp), "%s", p);
                sprintf(path, "%s", tmp);
        }
 
@@ -696,7 +700,7 @@ void show_disk_util(int terse, struct json_object *parent,
        struct disk_util *du;
        bool do_json;
 
-       if (!disk_util_sem)
+       if (!is_running_backend())
                return;
 
        fio_sem_down(disk_util_sem);