Add windows partition mode.
authorgkostka <kostka.grzegorz@gmail.com>
Sun, 6 Apr 2014 18:50:49 +0000 (18:50 +0000)
committergkostka <kostka.grzegorz@gmail.com>
Sun, 6 Apr 2014 18:50:49 +0000 (18:50 +0000)
fs_test/lwext4_server.c

index 30a7a0803efe1bbda94622279f847d58ebfbe923..72abdfd3e14a5a16c3e56012874aeecbf821f09e 100644 (file)
@@ -45,6 +45,12 @@ static char *ext4_fname = "ext2";
 /**@brief   Verbose mode*/\r
 static int verbose = 0;\r
 \r
+/**@brief   Winpart mode*/\r
+static int winpart = 0;\r
+\r
+/**@brief   Blockdev handle*/\r
+static struct ext4_blockdev *bd;\r
+\r
 static char read_buffer[MAX_RW_BUFFER];\r
 static char write_buffer[MAX_RW_BUFFER];\r
 \r
@@ -56,6 +62,7 @@ Usage:                                                          \n\
     --image    (-i) - ext2/3/4 image file                       \n\\r
     --port     (-p) - server port                               \n\\r
     --verbose  (-v) - verbose mode                              \n\\r
+    --winpart  (-w) - windows_partition mode                    \n\\r
 \n";\r
 \r
 \r
@@ -266,10 +273,11 @@ static bool parse_opt(int argc, char **argv)
             {"image",   required_argument, 0, 'i'},\r
             {"port",    required_argument, 0, 'p'},\r
             {"verbose", required_argument, 0, 'v'},\r
+            {"winpart", required_argument, 0, 'w'},\r
             {0, 0, 0, 0}\r
     };\r
 \r
-    while(-1 != (c = getopt_long (argc, argv, "i:p:v:", long_options, &option_index))) {\r
+    while(-1 != (c = getopt_long (argc, argv, "i:p:v:w:", long_options, &option_index))) {\r
 \r
         switch(c){\r
         case 'i':\r
@@ -281,6 +289,9 @@ static bool parse_opt(int argc, char **argv)
         case 'v':\r
             verbose = atoi(optarg);\r
             break;\r
+        case 'w':\r
+            winpart = atoi(optarg);\r
+            break;\r
         default:\r
             printf("%s", usage);\r
             return false;\r
@@ -300,7 +311,6 @@ int main(int argc, char *argv[])
     if(!parse_opt(argc, argv))\r
         return -1;\r
 \r
-    ext4_filedev_filename(ext4_fname);\r
     listenfd = server_open();\r
 \r
     printf("lwext4_server: listening on port: %d\n", connection_port);\r
@@ -337,16 +347,28 @@ int main(int argc, char *argv[])
 \r
 int _device_register(char *p)\r
 {\r
-    int bd;\r
+    int dev;\r
     int cache_mode;\r
     char dev_name[32];\r
 \r
-    if(sscanf(p, "%d %d %s", &bd, &cache_mode, dev_name) != 3){\r
+    if(sscanf(p, "%d %d %s", &dev, &cache_mode, dev_name) != 3){\r
         printf("Param list error\n");\r
         return -1;\r
     }\r
 \r
-    return ext4_device_register(ext4_filedev_get(), 0, dev_name);\r
+#ifdef WIN32\r
+    if(winpart){\r
+        ext4_io_raw_filename(ext4_fname);\r
+        bd = ext4_io_raw_dev_get();\r
+\r
+    }\r
+    else\r
+#endif\r
+    {\r
+        ext4_filedev_filename(ext4_fname);\r
+        bd = ext4_filedev_get();\r
+    }\r
+    return ext4_device_register(bd, 0, dev_name);\r
 }\r
 \r
 int _mount(char *p)\r