@@ -389,13 +389,17 @@
389 389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
390 390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
391 391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Delete a file.
392 392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
393 393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void file_delete(const char *zFilename){
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *z = fossil_utf8_to_mbcs(zFilename);
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unlink(z);
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef _WIN32
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wchar_t *z = fossil_utf8_to_unicode(zFilename);
396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ _wunlink(z);
396 397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_mbcs_free(z);
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unlink(zFilename);
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
397 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
398 402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
399 403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
400 404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Create the directory named in the argument, if it does not already
401 405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** exist. If forceFlag is 1, delete any prior non-directory object
@@ -928,14 +932,14 @@
928 932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int i, j;
929 933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDir = ".";
930 934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int cnt = 0;
931 935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
932 936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(_WIN32)
933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char zTmpPath[MAX_PATH];
937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wchar_t zTmpPath[MAX_PATH];
934 938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( GetTempPath(sizeof(zTmpPath), zTmpPath) ){
936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- azDirs[0] = zTmpPath;
939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( GetTempPathW(MAX_PATH, zTmpPath) ){
940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ azDirs[0] = fossil_unicode_to_utf8(zTmpPath);
937 941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
938 942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
939 943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
azDirs[1] = fossil_getenv("TEMP");
940 944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
azDirs[2] = fossil_getenv("TMP");
941 945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
@@ -1014,10 +1018,29 @@
1014 1018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3_win32_mbcs_to_utf8(zMbcs);
1015 1019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
1016 1020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (char*)zMbcs; /* No-op on unix */
1017 1021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
1018 1022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Translate Unicode to UTF8. Return a pointer to the translated text.
1026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Call fossil_mbcs_free() to deallocate any memory used to store the
1027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** returned pointer when done.
1028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *fossil_unicode_to_utf8(const void *zUnicode){
1030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef _WIN32
1031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nByte = WideCharToMultiByte(CP_UTF8, 0, zUnicode, -1, 0, 0, 0, 0);
1032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zUtf = sqlite3_malloc( nByte );
1033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zUtf==0 ){
1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WideCharToMultiByte(CP_UTF8, 0, zUnicode, -1, zUtf, nByte, 0, 0);
1037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zUtf;
1038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (char *)zUnicode; /* No-op on unix */
1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1019 1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1020 1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1021 1044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Translate UTF8 to MBCS for use in system calls. Return a pointer to the
1022 1045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** translated text.. Call fossil_mbcs_free() to deallocate any memory
1023 1046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** used to store the returned pointer when done.
@@ -1028,18 +1051,41 @@
1028 1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return sqlite3_win32_utf8_to_mbcs(zUtf8);
1029 1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
1030 1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return (char*)zUtf8; /* No-op on unix */
1031 1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
1032 1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Translate UTF8 to unicode for use in system calls. Return a pointer to the
1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** translated text.. Call fossil_mbcs_free() to deallocate any memory
1060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** used to store the returned pointer when done.
1061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *fossil_utf8_to_unicode(const char *zUtf8){
1063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef _WIN32
1064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nByte = MultiByteToWideChar(CP_UTF8, 0, zUtf8, -1, 0, 0);
1065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wchar_t *zUnicode = sqlite3_malloc( nByte * 2 );
1066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zUnicode==0 ){
1067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
1068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ MultiByteToWideChar(CP_UTF8, 0, zUtf8, -1, zUnicode, nByte);
1070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zUnicode;
1071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
1072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return (void *)zUtf8; /* No-op on unix */
1073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
1074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1033 1075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1034 1076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1035 1077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the value of an environment variable as UTF8.
1036 1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1037 1079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *fossil_getenv(const char *zName){
1038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zValue = getenv(zName);
1039 1080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef _WIN32
1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zValue ) zValue = fossil_mbcs_to_utf8(zValue);
1081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wchar_t *uName = fossil_utf8_to_unicode(zName);
1082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void *zValue = _wgetenv(uName);
1083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_mbcs_free(uName);
1084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zValue ) zValue = fossil_unicode_to_utf8(zValue);
1085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
1086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zValue = getenv(zName);
1041 1087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
1042 1088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zValue;
1043 1089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1044 1090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1045 1091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -1085,11 +1131,11 @@
1085 1131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1086 1132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1087 1133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Translate MBCS to UTF8. Return a pointer. Call fossil_mbcs_free()
1088 1134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to deallocate any memory used to store the returned pointer when done.
1089 1135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void fossil_mbcs_free(char *zOld){
1136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void fossil_mbcs_free(void *zOld){
1091 1137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef _WIN32
1092 1138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
extern void sqlite3_free(void*);
1093 1139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_free(zOld);
1094 1140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#else
1095 1141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* No-op on unix */
@@ -1098,10 +1144,16 @@
1098 1144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1099 1145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1100 1146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Like fopen() but always takes a UTF8 argument.
1101 1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1102 1148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FILE *fossil_fopen(const char *zName, const char *zMode){
1103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zMbcs = fossil_utf8_to_mbcs(zName);
1104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- FILE *f = fopen(zMbcs, zMode);
1105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_mbcs_free(zMbcs);
1149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifdef _WIN32
1150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wchar_t *uMode = fossil_utf8_to_unicode(zMode);
1151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wchar_t *uName = fossil_utf8_to_unicode(zName);
1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FILE *f = _wfopen(uName, uMode);
1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_mbcs_free(uName);
1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_mbcs_free(uMode);
1155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else
1156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FILE *f = fopen(zName, zMode);
1157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
1106 1158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return f;
1107 1159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1108 1160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!