Exit with invalid command line arguments
authorCampbell Barton <ideasman42@gmail.com>
Thu, 19 Oct 2017 12:57:03 +0000 (23:57 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 19 Oct 2017 13:10:40 +0000 (00:10 +1100)
Loading blender with an unknown name would interpret it as a blend file.

This meant passing `--arg` arguments would end up creating new
blend files which could be confusing if you made a typo on a command
line argument.

Now check the string has a blend file extension,
exiting if it doesn't.

source/creator/creator_args.c

index 21d03cc..322b93f 100644 (file)
@@ -44,6 +44,8 @@
 #include "BLI_fileops.h"
 #include "BLI_mempool.h"
 
+#include "BLO_readfile.h"  /* only for BLO_has_bfile_extension */
+
 #include "BKE_blender_version.h"
 #include "BKE_context.h"
 
@@ -1764,11 +1766,17 @@ static int arg_handle_load_file(int UNUSED(argc), const char **argv, void *data)
                        return -1;
                }
 
-               /* Just pretend a file was loaded, so the user can press Save and it'll save at the filename from the CLI. */
-               BLI_strncpy(G.main->name, filename, FILE_MAX);
-               G.relbase_valid = true;
-               G.save_over = true;
-               printf("... opened default scene instead; saving will write to %s\n", filename);
+               if (BLO_has_bfile_extension(filename)) {
+                       /* Just pretend a file was loaded, so the user can press Save and it'll save at the filename from the CLI. */
+                       BLI_strncpy(G.main->name, filename, FILE_MAX);
+                       G.relbase_valid = true;
+                       G.save_over = true;
+                       printf("... opened default scene instead; saving will write to: %s\n", filename);
+               }
+               else {
+                       printf("Error: argument has no '.blend' file extension, not using as new file, exiting! %s\n", filename);
+                       exit(1);
+               }
        }
 
        G.file_loaded = 1;