mkfs.f2fs: avoid dumplicate extensions
authorSheng Yong <shengyong1@huawei.com>
Mon, 30 Nov 2015 10:41:06 +0000 (10:41 +0000)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 2 Dec 2015 21:37:38 +0000 (13:37 -0800)
Before copying an user specified extension to extension_list, check if it
is already in the list. User specified extensions are delimitted by token
either ',' or ' '.

Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
mkfs/f2fs_format.c

index 176bdea..a29d7ef 100644 (file)
@@ -118,6 +118,19 @@ const char *media_ext_lists[] = {
        NULL
 };
 
+static bool is_extension_exist(const char *name)
+{
+       int i;
+
+       for (i = 0; i < F2FS_MAX_EXTENSION; i++) {
+               char *ext = (char *)sb.extension_list[i];
+               if (!strcmp(ext, name))
+                       return 1;
+       }
+
+       return 0;
+}
+
 static void configure_extension_list(void)
 {
        const char **extlist = media_ext_lists;
@@ -141,11 +154,12 @@ static void configure_extension_list(void)
                return;
 
        /* add user ext list */
-       ue = strtok(ext_str, ",");
+       ue = strtok(ext_str, ", ");
        while (ue != NULL) {
                name_len = strlen(ue);
-               memcpy(sb.extension_list[i++], ue, name_len);
-               ue = strtok(NULL, ",");
+               if (!is_extension_exist(ue))
+                       memcpy(sb.extension_list[i++], ue, name_len);
+               ue = strtok(NULL, ", ");
                if (i >= F2FS_MAX_EXTENSION)
                        break;
        }