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.
This commit is contained in:
Campbell Barton 2017-10-19 23:57:03 +11:00
parent 1cddab18de
commit 9ee8319cd5

@ -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;