+ if (arg) {
+ char *err;
+ /*
+ * Try treating the argument as a game ID.
+ */
+ err = midend_game_id(fe->me, arg);
+ if (!err) {
+ /*
+ * It's a valid game ID.
+ */
+ midend_new_game(fe->me);
+ } else {
+ FILE *fp = fopen(arg, "r");
+ if (!fp) {
+ err = "Supplied argument is neither a game ID nor a save file";
+ } else {
+ err = midend_deserialise(fe->me, savefile_read, fp);
+ fclose(fp);
+ }