Normal vs special files fixups
[fio.git] / init.c
diff --git a/init.c b/init.c
index ea531591eed47b4e9c7ce2b67cad7f97c2cfef8d..a3d1d5a87e9fe1c0b7d87d2e0b49a0a744989f53 100644 (file)
--- a/init.c
+++ b/init.c
@@ -832,9 +832,13 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
        if (!td->filename) {
                td->filename = strdup(jobname);
 
-               for (i = 0; i < td->nr_files; i++) {
-                       sprintf(fname, "%s.%d.%d", td->filename, td->thread_number, i);
-                       add_file(td, fname);
+               if (td->nr_files == 1)
+                       add_file(td, td->filename);
+               else {
+                       for (i = 0; i < td->nr_files; i++) {
+                               sprintf(fname, "%s.%d.%d", td->filename, td->thread_number, i);
+                               add_file(td, fname);
+                       }
                }
        }
 
@@ -845,9 +849,6 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
                        sprintf(fname, "%s/%s", td->directory, f->file_name);
                        f->file_name = strdup(fname);
                }
-
-               f->file_size = td->total_file_size / td->nr_files;
-               f->file_offset = td->start_offset;
        }
                
        td->mutex = fio_sem_init(0);
@@ -1105,9 +1106,17 @@ static int str_filename_cb(void *data, const char *input)
        struct thread_data *td = data;
        char *fname, *str, *p;
 
-       td->nr_files = 0;
+       if (!td->filename)
+               td->nr_files = 0;
+
        p = str = strdup(input);
+
+       strip_blank_front(&str);
+       strip_blank_end(str);
+
        while ((fname = strsep(&str, ":")) != NULL) {
+               if (!strlen(fname))
+                       break;
                add_file(td, fname);
                td->nr_files++;
        }