#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
static const char FILENAME[] = {
(char)0xe3, (char)0x83, (char)0xa6,
(char)0xe3, (char)0x83, (char)0x8b,
(char)0xe3, (char)0x82, (char)0xb3,
(char)0xe3, (char)0x83, (char)0xbc,
(char)0xe3, (char)0x83, (char)0x89,
'.','u','n','i','c','o','d','e','\0'
};
#ifdef _WIN32
static const wchar_t WFILENAME[] = { 0x30e6, 0x30cb, 0x30b3, 0x30fc, 0x30c9, L'.', L'u', L'n', L'i', L'c', L'o', L'd', L'e', L'\0' };
#endif
int main(void)
{
FILE *f, *script, *checksum;
#ifdef _WIN32
if (!(f = _wfopen(WFILENAME, L"wb"))) return 1;
#else
if (!(f = fopen(FILENAME, "wb"))) return 1;
#endif
fprintf(f, "test\n");
fclose(f);
if (!(checksum = fopen("unicode_test.xxh64", "wb")))
return 1;
fprintf(checksum, "2d7f1808da1fa63c %s\n", FILENAME);
fclose(checksum);
if (!(script = fopen("unicode_test.bat", "wb")))
return 1;
fprintf(script, "@echo off\r\n");
fprintf(script, "chcp 65001 >NUL 2>&1\r\n");
fprintf(script, "echo Testing filename provided on command line...\r\n");
fprintf(script, "echo xxhsum.exe \"%s\"\r\n", FILENAME);
fprintf(script, "xxhsum.exe \"%s\"\r\n", FILENAME);
fprintf(script, "if %%ERRORLEVEL%% neq 0 (\r\n");
fprintf(script, " exit /B %%ERRORLEVEL%%\r\n");
fprintf(script, ")\r\n");
fprintf(script, "echo Testing a checksum file...\r\n");
fprintf(script, "echo xxhsum.exe -c unicode_test.xxh64\r\n");
fprintf(script, "xxhsum.exe -c unicode_test.xxh64\r\n");
fprintf(script, "exit /B %%ERRORLEVEL%%\r\n");
fclose(script);
if (!(script = fopen("unicode_test.sh", "wb")))
return 1;
fprintf(script, "#!/bin/sh\n");
fprintf(script, "case $(uname) in\n");
fprintf(script, " *CYGWIN*)\n");
fprintf(script, " exec cmd.exe /c unicode_test.bat\n");
fprintf(script, " ;;\n");
fprintf(script, " *MINGW*|*MSYS*)\n");
fprintf(script, " exec cmd.exe //c unicode_test.bat\n");
fprintf(script, " ;;\n");
fprintf(script, "esac\n");
fprintf(script, "echo Testing filename provided on command line...\n");
fprintf(script, "echo './xxhsum \"%s\" || exit $?'\n", FILENAME);
fprintf(script, "./xxhsum \"%s\" || exit $?\n", FILENAME);
fprintf(script, "echo Testing a checksum file...\n");
fprintf(script, "echo './xxhsum -c unicode_test.xxh64 || exit $?'\n");
fprintf(script, "./xxhsum -c unicode_test.xxh64 || exit $?\n");
fclose(script);
return 0;
}