Wireshark-commits: [Wireshark-commits] master-2.4 26f71ce: Use wsetargv.obj, and wmain() rather tha
From: Wireshark code review <code-review-do-not-reply@xxxxxxxxxxxxx>
Date: Sun, 07 Oct 2018 21:52:13 +0000
URL: https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=26f71ce316b7a5dab878ca88c6ec044cc7f3aab5
Submitter: "Guy Harris <guy@xxxxxxxxxxxx>"
Changed: branch: master-2.4
Repository: wireshark

Commits:

26f71ce by Guy Harris (guy@xxxxxxxxxxxx):

    Use wsetargv.obj, and wmain() rather than main(), on Windows.
    
    Doing so for command-line programs means that the argument list doesn't
    ever get converted to the local code page; converting to the local code
    page can mangle file names that *can't* be converted to the local code
    page.
    
    Furthermore, code that uses setargv.obj rather than wsetargv.obj has
    issues in some versions of Windows 10; see bug 15151.
    
    That means that converting the argument list to UTF-8 is a bit simpler -
    we don't need to call GetCommandLineW() or CommandLineToArgvW(), we just
    loop over the UTF-16LE argument strings in argv[].
    
    While we're at it, note in Wireshark's main() why we discard argv on
    Windows (Qt does the same "convert-to-the-local-code-page" stuff); that
    means we *do* need to call GetCommandLineW() and CommandLineToArgvW() in
    main() (i.e., we duplicate what Qt's WinMain() does, but converting to
    UTF-8 rather than to the local code page).
    
    Change-Id: I35b57c1b658fb3e9b0c685097afe324e9fe98649
    Ping-Bug: 15151
    Reviewed-on: https://code.wireshark.org/review/30051
    Petri-Dish: Guy Harris <guy@xxxxxxxxxxxx>
    Tested-by: Petri Dish Buildbot
    Reviewed-by: Guy Harris <guy@xxxxxxxxxxxx>
    (cherry picked from commit a679ae6f791ac6b02f342d3b73d6b4aecb9ca6e9)
    Reviewed-on: https://code.wireshark.org/review/30062
    

Actions performed:

    from  9272f00   You have to add setargv.obj as a link flag, not as a library.
     add  26f71ce   Use wsetargv.obj, and wmain() rather than main(), on Windows.


Summary of changes:
 CMakeLists.txt         |  4 ++--
 capinfos.c             | 25 ++++++++++++++++++++++---
 captype.c              | 25 ++++++++++++++++++++++---
 dumpcap.c              | 24 +++++++++++++++++++++---
 editcap.c              | 25 ++++++++++++++++++++++---
 mergecap.c             | 27 ++++++++++++++++++++++-----
 randpkt.c              | 25 ++++++++++++++++++++++---
 rawshark.c             | 25 ++++++++++++++++++++++---
 text2pcap.c            | 34 ++++++++++++++++++++++++++--------
 tfshark.c              | 25 ++++++++++++++++++++++---
 tshark.c               | 25 ++++++++++++++++++++++---
 wireshark-qt.cpp       | 36 +++++++++++++++++++++++++++++-------
 wsutil/unicode-utils.c | 18 ------------------
 wsutil/unicode-utils.h | 14 --------------
 14 files changed, 254 insertions(+), 78 deletions(-)