Use PATH_MAX instead of _POSIX_HOST_NAME_MAX
[fio.git] / options.c
index 40b69ed9877af50e979eb24683a61d5a7710b118..f21ed260d0277ed25286b7dd3e3b98fbca653a17 100644 (file)
--- a/options.c
+++ b/options.c
@@ -8,6 +8,7 @@
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <netinet/in.h>
 
 #include "fio.h"
 #include "verify.h"
@@ -17,6 +18,8 @@
 
 #include "crc/crc32c.h"
 
+char client_sockaddr_str[INET6_ADDRSTRLEN] = { 0 };
+
 /*
  * Check if mmap/mmaphuge has a :/foo/bar/file at the end. If so, return that.
  */
@@ -820,7 +823,7 @@ static int get_max_name_idx(char *input)
  * Returns the directory at the index, indexes > entires will be
  * assigned via modulo division of the index
  */
-int set_name_idx(char *target, char *input, int index)
+int set_name_idx(char *target, size_t tlen, char *input, int index)
 {
        unsigned int cur_idx;
        int len;
@@ -832,7 +835,13 @@ int set_name_idx(char *target, char *input, int index)
        for (cur_idx = 0; cur_idx <= index; cur_idx++)
                fname = get_next_name(&str);
 
-       len = sprintf(target, "%s/", fname);
+       if (client_sockaddr_str[0]) {
+               len = snprintf(target, tlen, "%s/%s.", fname,
+                               client_sockaddr_str);
+       } else
+               len = snprintf(target, tlen, "%s/", fname);
+
+       target[tlen - 1] = '\0';
        free(p);
 
        return len;
@@ -3813,6 +3822,18 @@ static struct fio_keyword fio_keywords[] = {
        },
 };
 
+void fio_keywords_exit(void)
+{
+       struct fio_keyword *kw;
+
+       kw = &fio_keywords[0];
+       while (kw->word) {
+               free(kw->replace);
+               kw->replace = NULL;
+               kw++;
+       }
+}
+
 void fio_keywords_init(void)
 {
        unsigned long long mb_memory;