From ce7d3ec87497937a4650741794aa062a8b5eed36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Wed, 20 Nov 2019 22:37:00 +0200 Subject: [PATCH] windres-wrapper: Short options joined with the option value doesn't use an equals character This makes options like "-iinput.rc -ooutput.o" work properly. --- wrappers/windres-wrapper.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/wrappers/windres-wrapper.c b/wrappers/windres-wrapper.c index 435c826..c648eee 100644 --- a/wrappers/windres-wrapper.c +++ b/wrappers/windres-wrapper.c @@ -168,12 +168,15 @@ int _tmain(int argc, TCHAR* argv[]) { int nb_cpp_options = 0; int verbose = 0; -#define _tcsstart(a, b) !_tcsncmp(a, b, sizeof(b)/sizeof(TCHAR) - 1) +#define _tcslen_const(a) (sizeof(a)/sizeof(TCHAR) - 1) +#define _tcsstart(a, b) !_tcsncmp(a, b, _tcslen_const(b)) #define IF_MATCH_EITHER(short, long) \ if (!_tcscmp(argv[i], _T(short)) || !_tcscmp(argv[i], _T(long))) #define OPTION(short, long, var) \ - if (_tcsstart(argv[i], _T(short "=")) || _tcsstart(argv[i], _T(long "="))) { \ + if (_tcsstart(argv[i], _T(short)) && argv[i][_tcslen_const(_T(short))]) { \ + var = argv[i] + _tcslen_const(_T(short)); \ + } else if (_tcsstart(argv[i], _T(long "="))) { \ var = _tcschr(argv[i], '=') + 1; \ } else IF_MATCH_EITHER(short, long) { \ if (i + 1 < argc) \