From 9ee8319cd589bd7605f45293b17a682c4daf5ec0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 19 Oct 2017 23:57:03 +1100 Subject: [PATCH] Exit with invalid command line arguments 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 | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/source/creator/creator_args.c b/source/creator/creator_args.c index 21d03cc8265..322b93f4f42 100644 --- a/source/creator/creator_args.c +++ b/source/creator/creator_args.c @@ -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;