fsx: fix path of .fsx* files
authorAmir Goldstein <amir73il@gmail.com>
Wed, 23 Aug 2017 15:49:13 +0000 (18:49 +0300)
committerEryu Guan <eguan@redhat.com>
Thu, 31 Aug 2017 04:25:23 +0000 (12:25 +0800)
When command line arg -P <dirpath> is used, compose the
path for .fsxgood .fsxlog .fsxops files from dirpath and
work file basename.

This fix is ported from LTP.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
ltp/fsx.c

index 572df75488a1b8aa911148e5131aaa90cadf1cc0..15029056f72ab3d716894cf613fa28dc7dd351b8 100644 (file)
--- a/ltp/fsx.c
+++ b/ltp/fsx.c
@@ -1581,7 +1581,7 @@ usage(void)
 "      -L: fsxLite - no file creations & no file size changes\n\
        -N numops: total # operations to do (default infinity)\n\
        -O: use oplen (see -o flag) for every op (default random)\n\
-       -P: save .fsxlog and .fsxgood files in dirpath (default ./)\n\
+       -P: save .fsxlog .fsxops and .fsxgood files in dirpath (default ./)\n\
        -S seed: for random # generator (default 1) 0 gets timestamp\n\
        -W: mapped write operations DISabled\n\
         -R: read() system calls only (mapped reads disabled)\n\
@@ -1761,6 +1761,7 @@ main(int argc, char **argv)
        char    *endp;
        char goodfile[1024];
        char logfile[1024];
+       int dirpath = 0;
        struct stat statbuf;
 
        goodfile[0] = 0;
@@ -1902,6 +1903,9 @@ main(int argc, char **argv)
                        strcat(goodfile, "/");
                        strncpy(logfile, optarg, sizeof(logfile));
                        strcat(logfile, "/");
+                       strncpy(opsfile, optarg, sizeof(logfile));
+                       strcat(opsfile, "/");
+                       dirpath = 1;
                        break;
                 case 'R':
                         mapped_reads = 0;
@@ -1978,21 +1982,21 @@ main(int argc, char **argv)
                }
        }
 #endif
-       strncat(goodfile, fname, 256);
+       strncat(goodfile, dirpath ? basename(fname) : fname, 256);
        strcat (goodfile, ".fsxgood");
        fsxgoodfd = open(goodfile, O_RDWR|O_CREAT|O_TRUNC, 0666);
        if (fsxgoodfd < 0) {
                prterr(goodfile);
                exit(92);
        }
-       strncat(logfile, fname, 256);
+       strncat(logfile, dirpath ? basename(fname) : fname, 256);
        strcat (logfile, ".fsxlog");
        fsxlogf = fopen(logfile, "w");
        if (fsxlogf == NULL) {
                prterr(logfile);
                exit(93);
        }
-       strncat(opsfile, fname, 256);
+       strncat(opsfile, dirpath ? basename(fname) : fname, 256);
        strcat(opsfile, ".fsxops");
        unlink(opsfile);