forked from osmocom/wireshark
Move the Windows argument list conversion code to a common routine.
svn path=/trunk/; revision=37372
This commit is contained in:
parent
058fc19f45
commit
a24687ce8e
|
@ -93,7 +93,7 @@ wireshark_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
tshark_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
tshark_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
wsock32.lib user32.lib shell32.lib \
|
wsock32.lib user32.lib \
|
||||||
$(GLIB_LIBS) \
|
$(GLIB_LIBS) \
|
||||||
wsutil\libwsutil.lib \
|
wsutil\libwsutil.lib \
|
||||||
$(GNUTLS_LIBS) \
|
$(GNUTLS_LIBS) \
|
||||||
|
@ -113,7 +113,7 @@ tshark_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
rawshark_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
rawshark_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
wsock32.lib user32.lib shell32.lib \
|
wsock32.lib user32.lib \
|
||||||
$(GLIB_LIBS) \
|
$(GLIB_LIBS) \
|
||||||
wsutil\libwsutil.lib \
|
wsutil\libwsutil.lib \
|
||||||
$(GNUTLS_LIBS) \
|
$(GNUTLS_LIBS) \
|
||||||
|
@ -144,17 +144,17 @@ editcap_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
$(GLIB_LIBS)
|
$(GLIB_LIBS)
|
||||||
|
|
||||||
mergecap_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
mergecap_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
wsock32.lib user32.lib shell32.lib \
|
wsock32.lib user32.lib \
|
||||||
wsutil\libwsutil.lib \
|
wsutil\libwsutil.lib \
|
||||||
$(GLIB_LIBS)
|
$(GLIB_LIBS)
|
||||||
|
|
||||||
text2pcap_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
text2pcap_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
wsock32.lib user32.lib shell32.lib \
|
wsock32.lib user32.lib \
|
||||||
wsutil\libwsutil.lib \
|
wsutil\libwsutil.lib \
|
||||||
$(GLIB_LIBS)
|
$(GLIB_LIBS)
|
||||||
|
|
||||||
dumpcap_LIBS= \
|
dumpcap_LIBS= \
|
||||||
wsock32.lib user32.lib shell32.lib \
|
wsock32.lib user32.lib \
|
||||||
wsutil\libwsutil.lib \
|
wsutil\libwsutil.lib \
|
||||||
$(GLIB_LIBS) \
|
$(GLIB_LIBS) \
|
||||||
$(GTHREAD_LIBS)
|
$(GTHREAD_LIBS)
|
||||||
|
@ -178,7 +178,7 @@ dftest_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
randpkt_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
randpkt_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \
|
||||||
user32.lib shell32.lib \
|
user32.lib \
|
||||||
wsutil\libwsutil.lib \
|
wsutil\libwsutil.lib \
|
||||||
$(GLIB_LIBS)
|
$(GLIB_LIBS)
|
||||||
|
|
||||||
|
|
16
capinfos.c
16
capinfos.c
|
@ -95,7 +95,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <shellapi.h>
|
#include <wsutil/unicode-utils.h>
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
#include "svnversion.h"
|
#include "svnversion.h"
|
||||||
|
@ -847,11 +847,6 @@ main(int argc, char *argv[])
|
||||||
int opt;
|
int opt;
|
||||||
int overall_error_status;
|
int overall_error_status;
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc, i;
|
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
int status = 0;
|
int status = 0;
|
||||||
#ifdef HAVE_PLUGINS
|
#ifdef HAVE_PLUGINS
|
||||||
char *init_progfile_dir_error;
|
char *init_progfile_dir_error;
|
||||||
|
@ -864,13 +859,7 @@ main(int argc, char *argv[])
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1114,4 +1103,3 @@ main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
return overall_error_status;
|
return overall_error_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
dumpcap.c
11
dumpcap.c
|
@ -85,7 +85,6 @@
|
||||||
#include "pcapio.h"
|
#include "pcapio.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <shellapi.h>
|
|
||||||
#include "capture-wpcap.h"
|
#include "capture-wpcap.h"
|
||||||
#include <wsutil/unicode-utils.h>
|
#include <wsutil/unicode-utils.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -3645,8 +3644,6 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc;
|
|
||||||
#else
|
#else
|
||||||
struct sigaction action, oldaction;
|
struct sigaction action, oldaction;
|
||||||
#endif
|
#endif
|
||||||
|
@ -3670,13 +3667,7 @@ main(int argc, char *argv[])
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
16
editcap.c
16
editcap.c
|
@ -49,8 +49,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <wsutil/unicode-utils.h>
|
||||||
#include <shellapi.h>
|
|
||||||
#include <process.h> /* getpid */
|
#include <process.h> /* getpid */
|
||||||
#ifdef HAVE_WINSOCK2_H
|
#ifdef HAVE_WINSOCK2_H
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
|
@ -818,11 +817,6 @@ main(int argc, char *argv[])
|
||||||
gchar *err_info;
|
gchar *err_info;
|
||||||
int opt;
|
int opt;
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc;
|
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
char *p;
|
char *p;
|
||||||
unsigned int snaplen = 0; /* No limit */
|
unsigned int snaplen = 0; /* No limit */
|
||||||
int choplen = 0; /* No chop */
|
int choplen = 0; /* No chop */
|
||||||
|
@ -849,13 +843,7 @@ main(int argc, char *argv[])
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
11
gtk/main.c
11
gtk/main.c
|
@ -118,6 +118,7 @@
|
||||||
#include "../capture-wpcap.h"
|
#include "../capture-wpcap.h"
|
||||||
#include "../capture_wpcap_packet.h"
|
#include "../capture_wpcap_packet.h"
|
||||||
#include <tchar.h> /* Needed for Unicode */
|
#include <tchar.h> /* Needed for Unicode */
|
||||||
|
#include <wsutil/unicode-utils.h>
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include <shellapi.h>
|
#include <shellapi.h>
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
@ -2006,8 +2007,6 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc, i;
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
char *rf_path;
|
char *rf_path;
|
||||||
|
@ -2065,13 +2064,7 @@ main(int argc, char *argv[])
|
||||||
static const char optstring[] = OPTSTRING;
|
static const char optstring[] = OPTSTRING;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
16
mergecap.c
16
mergecap.c
|
@ -42,8 +42,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <wsutil/unicode-utils.h>
|
||||||
#include <shellapi.h>
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -149,11 +148,6 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int opt;
|
int opt;
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc;
|
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
gboolean do_append = FALSE;
|
gboolean do_append = FALSE;
|
||||||
gboolean verbose = FALSE;
|
gboolean verbose = FALSE;
|
||||||
int in_file_count = 0;
|
int in_file_count = 0;
|
||||||
|
@ -174,13 +168,7 @@ main(int argc, char *argv[])
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/* Process the options first */
|
/* Process the options first */
|
||||||
|
|
17
randpkt.c
17
randpkt.c
|
@ -51,8 +51,7 @@
|
||||||
#include "wiretap/wtap.h"
|
#include "wiretap/wtap.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <wsutil/unicode-utils.h>
|
||||||
#include <shellapi.h>
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
#define array_length(x) (sizeof x / sizeof x[0])
|
#define array_length(x) (sizeof x / sizeof x[0])
|
||||||
|
@ -508,12 +507,6 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
int opt;
|
int opt;
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc;
|
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
|
|
||||||
int produce_count = 1000; /* number of pkts to produce */
|
int produce_count = 1000; /* number of pkts to produce */
|
||||||
int produce_type = PKT_ETHERNET;
|
int produce_type = PKT_ETHERNET;
|
||||||
char *produce_filename = NULL;
|
char *produce_filename = NULL;
|
||||||
|
@ -521,13 +514,7 @@ main(int argc, char **argv)
|
||||||
pkt_example *example;
|
pkt_example *example;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "b:c:ht:")) != -1) {
|
while ((opt = getopt(argc, argv, "b:c:ht:")) != -1) {
|
||||||
|
|
12
rawshark.c
12
rawshark.c
|
@ -118,7 +118,7 @@
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <shellapi.h>
|
#include <wsutil/unicode-utils.h>
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -435,8 +435,6 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc;
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
char *gpf_path, *pf_path;
|
char *gpf_path, *pf_path;
|
||||||
|
@ -460,13 +458,7 @@ main(int argc, char *argv[])
|
||||||
static const char optstring[] = OPTSTRING_INIT;
|
static const char optstring[] = OPTSTRING_INIT;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
15
text2pcap.c
15
text2pcap.c
|
@ -139,8 +139,7 @@
|
||||||
#include "svnversion.h"
|
#include "svnversion.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <wsutil/unicode-utils.h>
|
||||||
#include <shellapi.h>
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/*--- Options --------------------------------------------------------------------*/
|
/*--- Options --------------------------------------------------------------------*/
|
||||||
|
@ -1131,19 +1130,9 @@ parse_options (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
char *p;
|
char *p;
|
||||||
#ifdef _WIN32
|
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc, i;
|
|
||||||
#endif /* _WIN32 */
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/* Scan CLI parameters */
|
/* Scan CLI parameters */
|
||||||
|
|
12
tshark.c
12
tshark.c
|
@ -96,7 +96,7 @@
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include "capture-wpcap.h"
|
#include "capture-wpcap.h"
|
||||||
#include "capture_errs.h"
|
#include "capture_errs.h"
|
||||||
#include <shellapi.h>
|
#include <wsutil/unicode-utils.h>
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
#include "capture_sync.h"
|
#include "capture_sync.h"
|
||||||
#endif /* HAVE_LIBPCAP */
|
#endif /* HAVE_LIBPCAP */
|
||||||
|
@ -798,8 +798,6 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
LPWSTR *wc_argv;
|
|
||||||
int wc_argc, i;
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
char *gpf_path, *pf_path;
|
char *gpf_path, *pf_path;
|
||||||
|
@ -854,13 +852,7 @@ main(int argc, char *argv[])
|
||||||
static const char optstring[] = OPTSTRING;
|
static const char optstring[] = OPTSTRING;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Convert our arg list to UTF-8. */
|
arg_list_utf_16to8(argc, argv);
|
||||||
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
|
||||||
if (wc_argv && wc_argc == argc) {
|
|
||||||
for (i = 0; i < argc; i++) {
|
|
||||||
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
} /* XXX else bail because something is horribly, horribly wrong? */
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -35,7 +35,7 @@ libwsutil.lib: libwsutil.dll
|
||||||
libwsutil.exp: libwsutil.dll
|
libwsutil.exp: libwsutil.dll
|
||||||
|
|
||||||
libwsutil.dll : $(OBJECTS) libwsutil.def ..\image\libwsutil.res
|
libwsutil.dll : $(OBJECTS) libwsutil.def ..\image\libwsutil.res
|
||||||
$(link) $(dlllflags) $(conlibsdll) \
|
$(link) $(dlllflags) $(conlibsdll) shell32.lib \
|
||||||
$(LOCAL_LDFLAGS) $(DLL_LDFLAGS) \
|
$(LOCAL_LDFLAGS) $(DLL_LDFLAGS) \
|
||||||
/DEF:libwsutil.def /OUT:libwsutil.dll \
|
/DEF:libwsutil.def /OUT:libwsutil.dll \
|
||||||
/IMPLIB:libwsutil.lib \
|
/IMPLIB:libwsutil.lib \
|
||||||
|
|
|
@ -66,6 +66,7 @@ type_util_guint64_to_gdouble
|
||||||
utf_16to8
|
utf_16to8
|
||||||
utf_8to16
|
utf_8to16
|
||||||
utf_8to16_snprintf
|
utf_8to16_snprintf
|
||||||
|
arg_list_utf_16to8
|
||||||
|
|
||||||
; wsgetopt.c
|
; wsgetopt.c
|
||||||
getopt
|
getopt
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
|
|
||||||
#include "unicode-utils.h"
|
#include "unicode-utils.h"
|
||||||
|
|
||||||
|
#include <shellapi.h>
|
||||||
|
|
||||||
/** @file
|
/** @file
|
||||||
* Unicode utilities (internal interface)
|
* Unicode utilities (internal interface)
|
||||||
*
|
*
|
||||||
|
@ -141,3 +143,17 @@ utf_16to8(const wchar_t *utf16str)
|
||||||
return utf8buf[idx];
|
return utf8buf[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Convert our argument list from UTF-16 to UTF-8. */
|
||||||
|
void
|
||||||
|
arg_list_utf_16to8(int argc, char *argv[]) {
|
||||||
|
LPWSTR *wc_argv;
|
||||||
|
int wc_argc, i;
|
||||||
|
|
||||||
|
/* Convert our arg list to UTF-8. */
|
||||||
|
wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc);
|
||||||
|
if (wc_argv && wc_argc == argc) {
|
||||||
|
for (i = 0; i < argc; i++) {
|
||||||
|
argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
|
} /* XXX else bail because something is horribly, horribly wrong? */
|
||||||
|
}
|
||||||
|
|
|
@ -66,6 +66,18 @@ void utf_8to16_snprintf(TCHAR *utf16buf, gint utf16buf_len, const gchar* fmt, ..
|
||||||
*/
|
*/
|
||||||
gchar * utf_16to8(const wchar_t *utf16str);
|
gchar * utf_16to8(const wchar_t *utf16str);
|
||||||
|
|
||||||
|
/** Convert the program argument list from UTF-16 to UTF-8 and
|
||||||
|
* store it in the supplied array. This is intended to be used
|
||||||
|
* to normalize command line arguments at program startup.
|
||||||
|
*
|
||||||
|
* @param argc The number of arguments. You should simply pass the
|
||||||
|
* first argument from main().
|
||||||
|
* @param argv The argument values (vector). You should simply pass
|
||||||
|
* the second argument from main().
|
||||||
|
*/
|
||||||
|
void arg_list_utf_16to8(int argc, char *argv[]);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
#endif /* __UNICODEUTIL_H__ */
|
#endif /* __UNICODEUTIL_H__ */
|
||||||
|
|
Loading…
Reference in New Issue