aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emulator/mksdcard/src/source/mksdcard.c79
-rw-r--r--find_java/src/source/find_java_exe.cpp16
2 files changed, 65 insertions, 30 deletions
diff --git a/emulator/mksdcard/src/source/mksdcard.c b/emulator/mksdcard/src/source/mksdcard.c
index d0b6d5cf6..ca23e6375 100644
--- a/emulator/mksdcard/src/source/mksdcard.c
+++ b/emulator/mksdcard/src/source/mksdcard.c
@@ -62,6 +62,19 @@ static Byte s_fsinfo_sector [ BYTES_PER_SECTOR ]; /* FS Info sector */
static Byte s_fat_head [ BYTES_PER_SECTOR ]; /* first FAT sector */
// static Byte s_zero_sector [ BYTES_PER_SECTOR ]; /* empty sector */
+// For handling Unicode paths
+#ifdef _WIN32
+ #define WIDE_CHAR wchar_t
+ #define ARGC wargc
+ #define ARGV wargv
+ #define STRINGPRINT "%S"
+#else
+ #define WIDE_CHAR char
+ #define ARGC argc
+ #define ARGV argv
+ #define STRINGPRINT "%s"
+#endif
+
/* this is the date and time when creating the disk */
static int
get_serial_id( void )
@@ -220,26 +233,35 @@ static void usage (void)
int main( int argc, char** argv )
{
- Wide disk_size;
- int sectors_per_fat;
- int sectors_per_disk;
- char* end;
- const char* label = NULL;
- FILE* f = NULL;
-
- for ( ; argc > 1 && argv[1][0] == '-'; argc--, argv++ )
+ Wide disk_size;
+ int sectors_per_fat;
+ int sectors_per_disk;
+ WIDE_CHAR* end;
+ const WIDE_CHAR* label = NULL;
+ FILE* f = NULL;
+
+#ifdef _WIN32
+ int wargc;
+ WIDE_CHAR** wargv;
+ WIDE_CHAR** unused_environment;
+ WIDE_CHAR** unused_startupinfo;
+
+ __wgetmainargs(&wargc, &wargv, &unused_environment, 0, &unused_startupinfo);
+#endif
+
+ for ( ; ARGC > 1 && ARGV[1][0] == '-'; ARGC--, ARGV++ )
{
- char* arg = argv[1] + 1;
+ WIDE_CHAR* arg = ARGV[1] + 1;
switch (arg[0]) {
case 'l':
if (arg[1] != 0)
arg += 2;
else {
- argc--;
- argv++;
- if (argc <= 1)
+ ARGC--;
+ ARGV++;
+ if (ARGC <= 1)
usage();
- arg = argv[1];
+ arg = ARGV[1];
}
label = arg;
break;
@@ -249,12 +271,17 @@ int main( int argc, char** argv )
}
}
- if (argc != 3)
+ if (ARGC != 3)
usage();
- disk_size = strtoll( argv[1], &end, 10 );
+#ifdef _WIN32
+ disk_size = wcstoll( ARGV[1], &end, 10 );
+#else
+ disk_size = strtoll( ARGV[1], &end, 10 );
+#endif
+
if (disk_size <= 0 || errno == EINVAL || errno == ERANGE) {
- fprintf(stderr, "Invalid argument size '%s'\n\n", argv[1]);
+ fprintf(stderr, "Invalid argument size '" STRINGPRINT "'\n\n", ARGV[1]);
usage();
}
@@ -266,10 +293,10 @@ int main( int argc, char** argv )
disk_size *= 1024*1024*1024;
if (disk_size < 9*1024*1024) {
- fprintf(stderr, "Invalid argument: size '%s' is too small.\n\n", argv[1]);
+ fprintf(stderr, "Invalid argument: size '" STRINGPRINT "' is too small.\n\n", ARGV[1]);
usage();
} else if (disk_size > MAX_DISK_SIZE) {
- fprintf(stderr, "Invalid argument: size '%s' is too large.\n\n", argv[1]);
+ fprintf(stderr, "Invalid argument: size '" STRINGPRINT "' is too large.\n\n", ARGV[1]);
usage();
}
@@ -279,9 +306,13 @@ int main( int argc, char** argv )
boot_sector_init( s_boot_sector, s_fsinfo_sector, disk_size, NULL );
fat_init( s_fat_head );
- f = fopen( argv[2], "wb" );
+#ifdef _WIN32
+ f = _wfopen( ARGV[2], L"wb" );
+#else
+ f = fopen( ARGV[2], "wb" );
+#endif
if ( !f ) {
- fprintf(stderr, "Could not create file '%s': %s\n", argv[2], strerror(errno));
+ fprintf(stderr, "Could not create file '" STRINGPRINT "': %s\n", ARGV[2], strerror(errno));
goto FailWrite;
}
@@ -322,8 +353,12 @@ int main( int argc, char** argv )
FailWrite:
if (f != NULL) {
fclose(f);
- unlink( argv[2] );
- fprintf(stderr, "File '%s' was not created.\n", argv[2]);
+#ifdef _WIN32
+ _wunlink( ARGV[2] );
+#else
+ unlink( ARGV[2] );
+#endif
+ fprintf(stderr, "File '" STRINGPRINT "' was not created.\n", ARGV[2]);
}
return 1;
}
diff --git a/find_java/src/source/find_java_exe.cpp b/find_java/src/source/find_java_exe.cpp
index 50ca0247d..a8be377ef 100644
--- a/find_java/src/source/find_java_exe.cpp
+++ b/find_java/src/source/find_java_exe.cpp
@@ -63,9 +63,9 @@ static int showHelpMessage() {
static void printError(const char *message) {
- CString error;
- error.setLastWin32Error(message);
- printf(error.cstr());
+ CString error;
+ error.setLastWin32Error(message);
+ printf(error.cstr());
}
static void testFindJava(bool isJdk, int minVersion) {
@@ -182,9 +182,9 @@ int main(int argc, char* argv[]) {
}
if (version == 0) {
- CString s;
- s.setf("Failed to find Java %d.%d (or newer) on your system. ", JAVA_MAJOR(minVersion),
- JAVA_MINOR(minVersion));
+ CString s;
+ s.setf("Failed to find Java %d.%d (or newer) on your system. ", JAVA_MAJOR(minVersion),
+ JAVA_MINOR(minVersion));
if (gIsDebug) {
fprintf(stderr, s.cstr());
@@ -200,8 +200,8 @@ int main(int argc, char* argv[]) {
if (doShortPath) {
if (!javaPath.toShortPath(&javaPath)) {
- CString s;
- s.setf("Failed to convert path (%s) to a short DOS path. ", javaPath.cstr());
+ CString s;
+ s.setf("Failed to convert path (%s) to a short DOS path. ", javaPath.cstr());
fprintf(stderr, s.cstr());
if (shouldPrintError) {