diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 07479321..c869fb12 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -292,9 +292,12 @@ bool SetConfigFile(const std::string& name) // // Give error and exit with failure code. // -void Error(const char* message) +void Error(const char* message, const char* detail = nullptr) { - fprintf(stderr, "%s: Error %s (use -h for usage)\n", ExecutableName, message); + fprintf(stderr, "%s: Error: ", ExecutableName); + if (detail != nullptr) + fprintf(stderr, "%s: ", detail); + fprintf(stderr, "%s (use -h for usage)\n", message); exit(EFailUsage); } @@ -482,7 +485,7 @@ void ProcessArguments(std::vector>& workItem Options |= EOptionAutoMapLocations; } else if (lowerword == "uniform-base") { if (argc <= 1) - Error("no provided for --uniform-base"); + Error("no provided", lowerword.c_str()); uniformBase = ::strtol(argv[1], NULL, 10); bumpArg(); break; @@ -493,15 +496,16 @@ void ProcessArguments(std::vector>& workItem else if (strcmp(argv[1], "opengl100") == 0) setOpenGlSpv(); else - Error("--client expects vulkan100 or opengl100"); - } + Error("expects vulkan100 or opengl100", lowerword.c_str()); + } else + Error("expects vulkan100 or opengl100", lowerword.c_str()); bumpArg(); } else if (lowerword == "dump-builtin-symbols") { DumpBuiltinSymbols = true; } else if (lowerword == "entry-point") { entryPointName = argv[1]; if (argc <= 1) - Error("no provided for --entry-point"); + Error("no provided", lowerword.c_str()); bumpArg(); } else if (lowerword == "flatten-uniform-arrays" || // synonyms lowerword == "flatten-uniform-array" || @@ -576,7 +580,7 @@ void ProcessArguments(std::vector>& workItem } else if (lowerword == "source-entrypoint" || // synonyms lowerword == "sep") { if (argc <= 1) - Error("no provided for --source-entrypoint"); + Error("no provided", lowerword.c_str()); sourceEntryPointName = argv[1]; bumpArg(); break; @@ -627,14 +631,14 @@ void ProcessArguments(std::vector>& workItem lowerword == "vn") { Options |= EOptionOutputHexadecimal; if (argc <= 1) - Error("no provided for --variable-name"); + Error("no provided", lowerword.c_str()); variableName = argv[1]; bumpArg(); break; } else if (lowerword == "version") { Options |= EOptionDumpVersions; } else { - usage(); + Error("unrecognized command-line option", argv[0]); } } break; @@ -760,7 +764,7 @@ void ProcessArguments(std::vector>& workItem Options |= EOptionOutputHexadecimal; break; default: - usage(); + Error("unrecognized command-line option", argv[0]); break; } } else { @@ -1263,7 +1267,7 @@ int singleMain() ProcessConfigFile(); if ((Options & EOptionReadHlsl) && !((Options & EOptionOutputPreprocessed) || (Options & EOptionSpv))) - Error("ERROR: HLSL requires SPIR-V code generation (or preprocessing only)"); + Error("HLSL requires SPIR-V code generation (or preprocessing only)"); // // Two modes: