Fossil SCM

Translate decomposed-UTF8 filenames on MacOS into precomposed-UTF8. Fix for ticket [e399bc1edfe45b]

drh 2012-11-29 13:15 trunk merge
Commit ca728447a69c81d98c2b8dfd7c0dd45289217179
+1 -1
--- auto.def
+++ auto.def
@@ -79,11 +79,10 @@
7979
if {[opt-bool static]} {
8080
# XXX: This will not work on all systems.
8181
define-append EXTRA_LDFLAGS -static
8282
}
8383
84
-
8584
# Check for zlib, using the given location if specified
8685
set zlibpath [opt-val with-zlib]
8786
if {$zlibpath ne ""} {
8887
cc-with [list -cflags "-I$zlibpath -L$zlibpath"]
8988
define-append EXTRA_CFLAGS -I$zlibpath
@@ -221,14 +220,15 @@
221220
# Last resort, may be Windows
222221
if {[string match *mingw* [get-define host]]} {
223222
define-append LIBS -lwsock32
224223
}
225224
}
225
+cc-check-function-in-lib iconv iconv
226226
227227
# Check for getpassphrase() for Solaris 10 where getpass() truncates to 10 chars
228228
if {![cc-check-functions getpassphrase]} {
229229
# Haiku needs this
230230
cc-check-function-in-lib getpass bsd
231231
}
232232
233233
make-template Makefile.in
234234
make-config-header autoconfig.h -auto {USE_* FOSSIL_*}
235235
--- auto.def
+++ auto.def
@@ -79,11 +79,10 @@
79 if {[opt-bool static]} {
80 # XXX: This will not work on all systems.
81 define-append EXTRA_LDFLAGS -static
82 }
83
84
85 # Check for zlib, using the given location if specified
86 set zlibpath [opt-val with-zlib]
87 if {$zlibpath ne ""} {
88 cc-with [list -cflags "-I$zlibpath -L$zlibpath"]
89 define-append EXTRA_CFLAGS -I$zlibpath
@@ -221,14 +220,15 @@
221 # Last resort, may be Windows
222 if {[string match *mingw* [get-define host]]} {
223 define-append LIBS -lwsock32
224 }
225 }
 
226
227 # Check for getpassphrase() for Solaris 10 where getpass() truncates to 10 chars
228 if {![cc-check-functions getpassphrase]} {
229 # Haiku needs this
230 cc-check-function-in-lib getpass bsd
231 }
232
233 make-template Makefile.in
234 make-config-header autoconfig.h -auto {USE_* FOSSIL_*}
235
--- auto.def
+++ auto.def
@@ -79,11 +79,10 @@
79 if {[opt-bool static]} {
80 # XXX: This will not work on all systems.
81 define-append EXTRA_LDFLAGS -static
82 }
83
 
84 # Check for zlib, using the given location if specified
85 set zlibpath [opt-val with-zlib]
86 if {$zlibpath ne ""} {
87 cc-with [list -cflags "-I$zlibpath -L$zlibpath"]
88 define-append EXTRA_CFLAGS -I$zlibpath
@@ -221,14 +220,15 @@
220 # Last resort, may be Windows
221 if {[string match *mingw* [get-define host]]} {
222 define-append LIBS -lwsock32
223 }
224 }
225 cc-check-function-in-lib iconv iconv
226
227 # Check for getpassphrase() for Solaris 10 where getpass() truncates to 10 chars
228 if {![cc-check-functions getpassphrase]} {
229 # Haiku needs this
230 cc-check-function-in-lib getpass bsd
231 }
232
233 make-template Makefile.in
234 make-config-header autoconfig.h -auto {USE_* FOSSIL_*}
235
+2 -2
--- src/blob.c
+++ src/blob.c
@@ -1111,11 +1111,11 @@
11111111
blob_append(pBlob, "", 1);
11121112
zUtf8 = blob_str(pBlob) + bomSize;
11131113
zUtf8 = fossil_unicode_to_utf8(zUtf8);
11141114
blob_zero(pBlob);
11151115
blob_append(pBlob, zUtf8, -1);
1116
- fossil_mbcs_free(zUtf8);
1116
+ fossil_unicode_free(zUtf8);
11171117
}else if( starts_with_utf16be_bom(pBlob, &bomSize) ){
11181118
unsigned int i = blob_size(pBlob);
11191119
zUtf8 = blob_buffer(pBlob);
11201120
while( i > 0 ){
11211121
/* swap bytes of unicode representation */
@@ -1127,14 +1127,14 @@
11271127
blob_append(pBlob, "", 1);
11281128
zUtf8 = blob_str(pBlob) + bomSize;
11291129
zUtf8 = fossil_unicode_to_utf8(zUtf8);
11301130
blob_zero(pBlob);
11311131
blob_append(pBlob, zUtf8, -1);
1132
- fossil_mbcs_free(zUtf8);
1132
+ fossil_unicode_free(zUtf8);
11331133
}else if( useMbcs ){
11341134
zUtf8 = fossil_mbcs_to_utf8(blob_str(pBlob));
11351135
blob_reset(pBlob);
11361136
blob_append(pBlob, zUtf8, -1);
11371137
fossil_mbcs_free(zUtf8);
11381138
#endif /* _WIN32 */
11391139
}
11401140
}
11411141
--- src/blob.c
+++ src/blob.c
@@ -1111,11 +1111,11 @@
1111 blob_append(pBlob, "", 1);
1112 zUtf8 = blob_str(pBlob) + bomSize;
1113 zUtf8 = fossil_unicode_to_utf8(zUtf8);
1114 blob_zero(pBlob);
1115 blob_append(pBlob, zUtf8, -1);
1116 fossil_mbcs_free(zUtf8);
1117 }else if( starts_with_utf16be_bom(pBlob, &bomSize) ){
1118 unsigned int i = blob_size(pBlob);
1119 zUtf8 = blob_buffer(pBlob);
1120 while( i > 0 ){
1121 /* swap bytes of unicode representation */
@@ -1127,14 +1127,14 @@
1127 blob_append(pBlob, "", 1);
1128 zUtf8 = blob_str(pBlob) + bomSize;
1129 zUtf8 = fossil_unicode_to_utf8(zUtf8);
1130 blob_zero(pBlob);
1131 blob_append(pBlob, zUtf8, -1);
1132 fossil_mbcs_free(zUtf8);
1133 }else if( useMbcs ){
1134 zUtf8 = fossil_mbcs_to_utf8(blob_str(pBlob));
1135 blob_reset(pBlob);
1136 blob_append(pBlob, zUtf8, -1);
1137 fossil_mbcs_free(zUtf8);
1138 #endif /* _WIN32 */
1139 }
1140 }
1141
--- src/blob.c
+++ src/blob.c
@@ -1111,11 +1111,11 @@
1111 blob_append(pBlob, "", 1);
1112 zUtf8 = blob_str(pBlob) + bomSize;
1113 zUtf8 = fossil_unicode_to_utf8(zUtf8);
1114 blob_zero(pBlob);
1115 blob_append(pBlob, zUtf8, -1);
1116 fossil_unicode_free(zUtf8);
1117 }else if( starts_with_utf16be_bom(pBlob, &bomSize) ){
1118 unsigned int i = blob_size(pBlob);
1119 zUtf8 = blob_buffer(pBlob);
1120 while( i > 0 ){
1121 /* swap bytes of unicode representation */
@@ -1127,14 +1127,14 @@
1127 blob_append(pBlob, "", 1);
1128 zUtf8 = blob_str(pBlob) + bomSize;
1129 zUtf8 = fossil_unicode_to_utf8(zUtf8);
1130 blob_zero(pBlob);
1131 blob_append(pBlob, zUtf8, -1);
1132 fossil_unicode_free(zUtf8);
1133 }else if( useMbcs ){
1134 zUtf8 = fossil_mbcs_to_utf8(blob_str(pBlob));
1135 blob_reset(pBlob);
1136 blob_append(pBlob, zUtf8, -1);
1137 fossil_mbcs_free(zUtf8);
1138 #endif /* _WIN32 */
1139 }
1140 }
1141
+15 -140
--- src/file.c
+++ src/file.c
@@ -75,11 +75,11 @@
7575
}
7676
#else
7777
int rc = 0;
7878
wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
7979
rc = _wstati64(zMbcs, buf);
80
- fossil_mbcs_free(zMbcs);
80
+ fossil_unicode_free(zMbcs);
8181
return rc;
8282
#endif
8383
}
8484
8585
/*
@@ -306,11 +306,11 @@
306306
*/
307307
int file_access(const char *zFilename, int flags){
308308
#ifdef _WIN32
309309
wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
310310
int rc = _waccess(zMbcs, flags);
311
- fossil_mbcs_free(zMbcs);
311
+ fossil_unicode_free(zMbcs);
312312
#else
313313
int rc = access(zFilename, flags);
314314
#endif
315315
return rc;
316316
}
@@ -410,11 +410,11 @@
410410
struct _utimbuf tb;
411411
wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
412412
tb.actime = newMTime;
413413
tb.modtime = newMTime;
414414
_wutime(zMbcs, &tb);
415
- fossil_mbcs_free(zMbcs);
415
+ fossil_unicode_free(zMbcs);
416416
#endif
417417
}
418418
419419
/*
420420
** COMMAND: test-set-mtime
@@ -444,11 +444,11 @@
444444
*/
445445
void file_delete(const char *zFilename){
446446
#ifdef _WIN32
447447
wchar_t *z = fossil_utf8_to_unicode(zFilename);
448448
_wunlink(z);
449
- fossil_mbcs_free(z);
449
+ fossil_unicode_free(z);
450450
#else
451451
unlink(zFilename);
452452
#endif
453453
}
454454
@@ -468,11 +468,11 @@
468468
if( rc!=1 ){
469469
#if defined(_WIN32)
470470
int rc;
471471
wchar_t *zMbcs = fossil_utf8_to_unicode(zName);
472472
rc = _wmkdir(zMbcs);
473
- fossil_mbcs_free(zMbcs);
473
+ fossil_unicode_free(zMbcs);
474474
return rc;
475475
#else
476476
return mkdir(zName, 0755);
477477
#endif
478478
}
@@ -655,18 +655,18 @@
655655
int i;
656656
wchar_t zPwd[2000];
657657
if( _wgetcwd(zPwd, sizeof(zPwd)/sizeof(zPwd[0])-1)==0 ){
658658
fossil_fatal("cannot find the current working directory.");
659659
}
660
- zPwdUtf8 = fossil_unicode_to_utf8(zPwd);
660
+ zPwdUtf8 = fossil_filename_to_utf8(zPwd);
661661
nPwd = strlen(zPwdUtf8);
662662
if( nPwd > nBuf-1 ){
663663
fossil_fatal("pwd too big: max %d\n", nBuf-1);
664664
}
665665
for(i=0; zPwdUtf8[i]; i++) if( zPwdUtf8[i]=='\\' ) zPwdUtf8[i] = '/';
666666
memcpy(zBuf, zPwdUtf8, nPwd+1);
667
- fossil_mbcs_free(zPwdUtf8);
667
+ fossil_filename_free(zPwdUtf8);
668668
#else
669669
if( getcwd(zBuf, nBuf-1)==0 ){
670670
if( errno==ERANGE ){
671671
fossil_fatal("pwd too big: max %d\n", nBuf-1);
672672
}else{
@@ -1012,11 +1012,11 @@
10121012
10131013
#if defined(_WIN32)
10141014
wchar_t zTmpPath[MAX_PATH];
10151015
10161016
if( GetTempPathW(MAX_PATH, zTmpPath) ){
1017
- azDirs[0] = fossil_unicode_to_utf8(zTmpPath);
1017
+ azDirs[0] = fossil_filename_to_utf8(zTmpPath);
10181018
}
10191019
10201020
azDirs[1] = fossil_getenv("TEMP");
10211021
azDirs[2] = fossil_getenv("TMP");
10221022
#endif
@@ -1046,12 +1046,12 @@
10461046
}
10471047
zBuf[j] = 0;
10481048
}while( file_size(zBuf)>=0 );
10491049
10501050
#if defined(_WIN32)
1051
- fossil_mbcs_free((char *)azDirs[1]);
1052
- fossil_mbcs_free((char *)azDirs[2]);
1051
+ fossil_unicode_free((char *)azDirs[1]);
1052
+ fossil_unicode_free((char *)azDirs[2]);
10531053
#endif
10541054
}
10551055
10561056
10571057
/*
@@ -1091,161 +1091,36 @@
10911091
# define closedir _wclosedir
10921092
#endif /* _WIN32 */
10931093
10941094
#endif /* INTERFACE */
10951095
1096
-
1097
-
1098
-/**************************************************************************
1099
-** The following routines translate between MBCS and UTF8 on windows.
1100
-** Since everything is always UTF8 on unix, these routines are no-ops
1101
-** there.
1102
-*/
1103
-
1104
-/*
1105
-** Translate MBCS to UTF8. Return a pointer to the translated text.
1106
-** Call fossil_mbcs_free() to deallocate any memory used to store the
1107
-** returned pointer when done.
1108
-*/
1109
-char *fossil_mbcs_to_utf8(const char *zMbcs){
1110
-#ifdef _WIN32
1111
- extern char *sqlite3_win32_mbcs_to_utf8(const char*);
1112
- return sqlite3_win32_mbcs_to_utf8(zMbcs);
1113
-#else
1114
- return (char*)zMbcs; /* No-op on unix */
1115
-#endif
1116
-}
1117
-
1118
-/*
1119
-** Translate Unicode to UTF8. Return a pointer to the translated text.
1120
-** Call fossil_mbcs_free() to deallocate any memory used to store the
1121
-** returned pointer when done.
1122
-*/
1123
-char *fossil_unicode_to_utf8(const void *zUnicode){
1124
-#ifdef _WIN32
1125
- int nByte = WideCharToMultiByte(CP_UTF8, 0, zUnicode, -1, 0, 0, 0, 0);
1126
- char *zUtf = sqlite3_malloc( nByte );
1127
- if( zUtf==0 ){
1128
- return 0;
1129
- }
1130
- WideCharToMultiByte(CP_UTF8, 0, zUnicode, -1, zUtf, nByte, 0, 0);
1131
- return zUtf;
1132
-#else
1133
- return (char *)zUnicode; /* No-op on unix */
1134
-#endif
1135
-}
1136
-
1137
-/*
1138
-** Translate UTF8 to MBCS for use in system calls. Return a pointer to the
1139
-** translated text.. Call fossil_mbcs_free() to deallocate any memory
1140
-** used to store the returned pointer when done.
1141
-*/
1142
-char *fossil_utf8_to_mbcs(const char *zUtf8){
1143
-#ifdef _WIN32
1144
- extern char *sqlite3_win32_utf8_to_mbcs(const char*);
1145
- return sqlite3_win32_utf8_to_mbcs(zUtf8);
1146
-#else
1147
- return (char*)zUtf8; /* No-op on unix */
1148
-#endif
1149
-}
1150
-
1151
-/*
1152
-** Translate UTF8 to unicode for use in system calls. Return a pointer to the
1153
-** translated text.. Call fossil_mbcs_free() to deallocate any memory
1154
-** used to store the returned pointer when done.
1155
-*/
1156
-void *fossil_utf8_to_unicode(const char *zUtf8){
1157
-#ifdef _WIN32
1158
- int nByte = MultiByteToWideChar(CP_UTF8, 0, zUtf8, -1, 0, 0);
1159
- wchar_t *zUnicode = sqlite3_malloc( nByte * 2 );
1160
- if( zUnicode==0 ){
1161
- return 0;
1162
- }
1163
- MultiByteToWideChar(CP_UTF8, 0, zUtf8, -1, zUnicode, nByte);
1164
- return zUnicode;
1165
-#else
1166
- return (void *)zUtf8; /* No-op on unix */
1167
-#endif
1168
-}
1169
-
11701096
/*
11711097
** Return the value of an environment variable as UTF8.
1098
+** Use fossil_filename_free() to release resources.
11721099
*/
11731100
char *fossil_getenv(const char *zName){
11741101
#ifdef _WIN32
11751102
wchar_t *uName = fossil_utf8_to_unicode(zName);
11761103
void *zValue = _wgetenv(uName);
1177
- fossil_mbcs_free(uName);
1178
- if( zValue ) zValue = fossil_unicode_to_utf8(zValue);
1104
+ fossil_unicode_free(uName);
11791105
#else
11801106
char *zValue = getenv(zName);
11811107
#endif
1108
+ if( zValue ) zValue = fossil_filename_to_utf8(zValue);
11821109
return zValue;
11831110
}
11841111
1185
-/*
1186
-** Display UTF8 on the console. Return the number of
1187
-** Characters written. If stdout or stderr is redirected
1188
-** to a file, -1 is returned and nothing is written
1189
-** to the console.
1190
-*/
1191
-int fossil_utf8_to_console(const char *zUtf8, int nByte, int toStdErr){
1192
-#ifdef _WIN32
1193
- int nChar;
1194
- wchar_t *zUnicode; /* Unicode version of zUtf8 */
1195
- DWORD dummy;
1196
-
1197
- static int istty[2] = { -1, -1 };
1198
- if( istty[toStdErr] == -1 ){
1199
- istty[toStdErr] = _isatty(toStdErr + 1) != 0;
1200
- }
1201
- if( !istty[toStdErr] ){
1202
- /* stdout/stderr is not a console. */
1203
- return -1;
1204
- }
1205
-
1206
- nChar = MultiByteToWideChar(CP_UTF8, 0, zUtf8, nByte, NULL, 0);
1207
- zUnicode = malloc( (nChar + 1) *sizeof(zUnicode[0]) );
1208
- if( zUnicode==0 ){
1209
- return 0;
1210
- }
1211
- nChar = MultiByteToWideChar(CP_UTF8, 0, zUtf8, nByte, zUnicode, nChar);
1212
- if( nChar==0 ){
1213
- free(zUnicode);
1214
- return 0;
1215
- }
1216
- zUnicode[nChar] = '\0';
1217
- WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE - toStdErr), zUnicode, nChar, &dummy, 0);
1218
- return nChar;
1219
-#else
1220
- return -1; /* No-op on unix */
1221
-#endif
1222
-}
1223
-
1224
-/*
1225
-** Translate MBCS to UTF8. Return a pointer. Call fossil_mbcs_free()
1226
-** to deallocate any memory used to store the returned pointer when done.
1227
-*/
1228
-void fossil_mbcs_free(void *zOld){
1229
-#ifdef _WIN32
1230
- extern void sqlite3_free(void*);
1231
- sqlite3_free(zOld);
1232
-#else
1233
- /* No-op on unix */
1234
-#endif
1235
-}
1236
-
12371112
/*
12381113
** Like fopen() but always takes a UTF8 argument.
12391114
*/
12401115
FILE *fossil_fopen(const char *zName, const char *zMode){
12411116
#ifdef _WIN32
12421117
wchar_t *uMode = fossil_utf8_to_unicode(zMode);
12431118
wchar_t *uName = fossil_utf8_to_unicode(zName);
12441119
FILE *f = _wfopen(uName, uMode);
1245
- fossil_mbcs_free(uName);
1246
- fossil_mbcs_free(uMode);
1120
+ fossil_unicode_free(uName);
1121
+ fossil_unicode_free(uMode);
12471122
#else
12481123
FILE *f = fopen(zName, zMode);
12491124
#endif
12501125
return f;
12511126
}
12521127
--- src/file.c
+++ src/file.c
@@ -75,11 +75,11 @@
75 }
76 #else
77 int rc = 0;
78 wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
79 rc = _wstati64(zMbcs, buf);
80 fossil_mbcs_free(zMbcs);
81 return rc;
82 #endif
83 }
84
85 /*
@@ -306,11 +306,11 @@
306 */
307 int file_access(const char *zFilename, int flags){
308 #ifdef _WIN32
309 wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
310 int rc = _waccess(zMbcs, flags);
311 fossil_mbcs_free(zMbcs);
312 #else
313 int rc = access(zFilename, flags);
314 #endif
315 return rc;
316 }
@@ -410,11 +410,11 @@
410 struct _utimbuf tb;
411 wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
412 tb.actime = newMTime;
413 tb.modtime = newMTime;
414 _wutime(zMbcs, &tb);
415 fossil_mbcs_free(zMbcs);
416 #endif
417 }
418
419 /*
420 ** COMMAND: test-set-mtime
@@ -444,11 +444,11 @@
444 */
445 void file_delete(const char *zFilename){
446 #ifdef _WIN32
447 wchar_t *z = fossil_utf8_to_unicode(zFilename);
448 _wunlink(z);
449 fossil_mbcs_free(z);
450 #else
451 unlink(zFilename);
452 #endif
453 }
454
@@ -468,11 +468,11 @@
468 if( rc!=1 ){
469 #if defined(_WIN32)
470 int rc;
471 wchar_t *zMbcs = fossil_utf8_to_unicode(zName);
472 rc = _wmkdir(zMbcs);
473 fossil_mbcs_free(zMbcs);
474 return rc;
475 #else
476 return mkdir(zName, 0755);
477 #endif
478 }
@@ -655,18 +655,18 @@
655 int i;
656 wchar_t zPwd[2000];
657 if( _wgetcwd(zPwd, sizeof(zPwd)/sizeof(zPwd[0])-1)==0 ){
658 fossil_fatal("cannot find the current working directory.");
659 }
660 zPwdUtf8 = fossil_unicode_to_utf8(zPwd);
661 nPwd = strlen(zPwdUtf8);
662 if( nPwd > nBuf-1 ){
663 fossil_fatal("pwd too big: max %d\n", nBuf-1);
664 }
665 for(i=0; zPwdUtf8[i]; i++) if( zPwdUtf8[i]=='\\' ) zPwdUtf8[i] = '/';
666 memcpy(zBuf, zPwdUtf8, nPwd+1);
667 fossil_mbcs_free(zPwdUtf8);
668 #else
669 if( getcwd(zBuf, nBuf-1)==0 ){
670 if( errno==ERANGE ){
671 fossil_fatal("pwd too big: max %d\n", nBuf-1);
672 }else{
@@ -1012,11 +1012,11 @@
1012
1013 #if defined(_WIN32)
1014 wchar_t zTmpPath[MAX_PATH];
1015
1016 if( GetTempPathW(MAX_PATH, zTmpPath) ){
1017 azDirs[0] = fossil_unicode_to_utf8(zTmpPath);
1018 }
1019
1020 azDirs[1] = fossil_getenv("TEMP");
1021 azDirs[2] = fossil_getenv("TMP");
1022 #endif
@@ -1046,12 +1046,12 @@
1046 }
1047 zBuf[j] = 0;
1048 }while( file_size(zBuf)>=0 );
1049
1050 #if defined(_WIN32)
1051 fossil_mbcs_free((char *)azDirs[1]);
1052 fossil_mbcs_free((char *)azDirs[2]);
1053 #endif
1054 }
1055
1056
1057 /*
@@ -1091,161 +1091,36 @@
1091 # define closedir _wclosedir
1092 #endif /* _WIN32 */
1093
1094 #endif /* INTERFACE */
1095
1096
1097
1098 /**************************************************************************
1099 ** The following routines translate between MBCS and UTF8 on windows.
1100 ** Since everything is always UTF8 on unix, these routines are no-ops
1101 ** there.
1102 */
1103
1104 /*
1105 ** Translate MBCS to UTF8. Return a pointer to the translated text.
1106 ** Call fossil_mbcs_free() to deallocate any memory used to store the
1107 ** returned pointer when done.
1108 */
1109 char *fossil_mbcs_to_utf8(const char *zMbcs){
1110 #ifdef _WIN32
1111 extern char *sqlite3_win32_mbcs_to_utf8(const char*);
1112 return sqlite3_win32_mbcs_to_utf8(zMbcs);
1113 #else
1114 return (char*)zMbcs; /* No-op on unix */
1115 #endif
1116 }
1117
1118 /*
1119 ** Translate Unicode to UTF8. Return a pointer to the translated text.
1120 ** Call fossil_mbcs_free() to deallocate any memory used to store the
1121 ** returned pointer when done.
1122 */
1123 char *fossil_unicode_to_utf8(const void *zUnicode){
1124 #ifdef _WIN32
1125 int nByte = WideCharToMultiByte(CP_UTF8, 0, zUnicode, -1, 0, 0, 0, 0);
1126 char *zUtf = sqlite3_malloc( nByte );
1127 if( zUtf==0 ){
1128 return 0;
1129 }
1130 WideCharToMultiByte(CP_UTF8, 0, zUnicode, -1, zUtf, nByte, 0, 0);
1131 return zUtf;
1132 #else
1133 return (char *)zUnicode; /* No-op on unix */
1134 #endif
1135 }
1136
1137 /*
1138 ** Translate UTF8 to MBCS for use in system calls. Return a pointer to the
1139 ** translated text.. Call fossil_mbcs_free() to deallocate any memory
1140 ** used to store the returned pointer when done.
1141 */
1142 char *fossil_utf8_to_mbcs(const char *zUtf8){
1143 #ifdef _WIN32
1144 extern char *sqlite3_win32_utf8_to_mbcs(const char*);
1145 return sqlite3_win32_utf8_to_mbcs(zUtf8);
1146 #else
1147 return (char*)zUtf8; /* No-op on unix */
1148 #endif
1149 }
1150
1151 /*
1152 ** Translate UTF8 to unicode for use in system calls. Return a pointer to the
1153 ** translated text.. Call fossil_mbcs_free() to deallocate any memory
1154 ** used to store the returned pointer when done.
1155 */
1156 void *fossil_utf8_to_unicode(const char *zUtf8){
1157 #ifdef _WIN32
1158 int nByte = MultiByteToWideChar(CP_UTF8, 0, zUtf8, -1, 0, 0);
1159 wchar_t *zUnicode = sqlite3_malloc( nByte * 2 );
1160 if( zUnicode==0 ){
1161 return 0;
1162 }
1163 MultiByteToWideChar(CP_UTF8, 0, zUtf8, -1, zUnicode, nByte);
1164 return zUnicode;
1165 #else
1166 return (void *)zUtf8; /* No-op on unix */
1167 #endif
1168 }
1169
1170 /*
1171 ** Return the value of an environment variable as UTF8.
 
1172 */
1173 char *fossil_getenv(const char *zName){
1174 #ifdef _WIN32
1175 wchar_t *uName = fossil_utf8_to_unicode(zName);
1176 void *zValue = _wgetenv(uName);
1177 fossil_mbcs_free(uName);
1178 if( zValue ) zValue = fossil_unicode_to_utf8(zValue);
1179 #else
1180 char *zValue = getenv(zName);
1181 #endif
 
1182 return zValue;
1183 }
1184
1185 /*
1186 ** Display UTF8 on the console. Return the number of
1187 ** Characters written. If stdout or stderr is redirected
1188 ** to a file, -1 is returned and nothing is written
1189 ** to the console.
1190 */
1191 int fossil_utf8_to_console(const char *zUtf8, int nByte, int toStdErr){
1192 #ifdef _WIN32
1193 int nChar;
1194 wchar_t *zUnicode; /* Unicode version of zUtf8 */
1195 DWORD dummy;
1196
1197 static int istty[2] = { -1, -1 };
1198 if( istty[toStdErr] == -1 ){
1199 istty[toStdErr] = _isatty(toStdErr + 1) != 0;
1200 }
1201 if( !istty[toStdErr] ){
1202 /* stdout/stderr is not a console. */
1203 return -1;
1204 }
1205
1206 nChar = MultiByteToWideChar(CP_UTF8, 0, zUtf8, nByte, NULL, 0);
1207 zUnicode = malloc( (nChar + 1) *sizeof(zUnicode[0]) );
1208 if( zUnicode==0 ){
1209 return 0;
1210 }
1211 nChar = MultiByteToWideChar(CP_UTF8, 0, zUtf8, nByte, zUnicode, nChar);
1212 if( nChar==0 ){
1213 free(zUnicode);
1214 return 0;
1215 }
1216 zUnicode[nChar] = '\0';
1217 WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE - toStdErr), zUnicode, nChar, &dummy, 0);
1218 return nChar;
1219 #else
1220 return -1; /* No-op on unix */
1221 #endif
1222 }
1223
1224 /*
1225 ** Translate MBCS to UTF8. Return a pointer. Call fossil_mbcs_free()
1226 ** to deallocate any memory used to store the returned pointer when done.
1227 */
1228 void fossil_mbcs_free(void *zOld){
1229 #ifdef _WIN32
1230 extern void sqlite3_free(void*);
1231 sqlite3_free(zOld);
1232 #else
1233 /* No-op on unix */
1234 #endif
1235 }
1236
1237 /*
1238 ** Like fopen() but always takes a UTF8 argument.
1239 */
1240 FILE *fossil_fopen(const char *zName, const char *zMode){
1241 #ifdef _WIN32
1242 wchar_t *uMode = fossil_utf8_to_unicode(zMode);
1243 wchar_t *uName = fossil_utf8_to_unicode(zName);
1244 FILE *f = _wfopen(uName, uMode);
1245 fossil_mbcs_free(uName);
1246 fossil_mbcs_free(uMode);
1247 #else
1248 FILE *f = fopen(zName, zMode);
1249 #endif
1250 return f;
1251 }
1252
--- src/file.c
+++ src/file.c
@@ -75,11 +75,11 @@
75 }
76 #else
77 int rc = 0;
78 wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
79 rc = _wstati64(zMbcs, buf);
80 fossil_unicode_free(zMbcs);
81 return rc;
82 #endif
83 }
84
85 /*
@@ -306,11 +306,11 @@
306 */
307 int file_access(const char *zFilename, int flags){
308 #ifdef _WIN32
309 wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
310 int rc = _waccess(zMbcs, flags);
311 fossil_unicode_free(zMbcs);
312 #else
313 int rc = access(zFilename, flags);
314 #endif
315 return rc;
316 }
@@ -410,11 +410,11 @@
410 struct _utimbuf tb;
411 wchar_t *zMbcs = fossil_utf8_to_unicode(zFilename);
412 tb.actime = newMTime;
413 tb.modtime = newMTime;
414 _wutime(zMbcs, &tb);
415 fossil_unicode_free(zMbcs);
416 #endif
417 }
418
419 /*
420 ** COMMAND: test-set-mtime
@@ -444,11 +444,11 @@
444 */
445 void file_delete(const char *zFilename){
446 #ifdef _WIN32
447 wchar_t *z = fossil_utf8_to_unicode(zFilename);
448 _wunlink(z);
449 fossil_unicode_free(z);
450 #else
451 unlink(zFilename);
452 #endif
453 }
454
@@ -468,11 +468,11 @@
468 if( rc!=1 ){
469 #if defined(_WIN32)
470 int rc;
471 wchar_t *zMbcs = fossil_utf8_to_unicode(zName);
472 rc = _wmkdir(zMbcs);
473 fossil_unicode_free(zMbcs);
474 return rc;
475 #else
476 return mkdir(zName, 0755);
477 #endif
478 }
@@ -655,18 +655,18 @@
655 int i;
656 wchar_t zPwd[2000];
657 if( _wgetcwd(zPwd, sizeof(zPwd)/sizeof(zPwd[0])-1)==0 ){
658 fossil_fatal("cannot find the current working directory.");
659 }
660 zPwdUtf8 = fossil_filename_to_utf8(zPwd);
661 nPwd = strlen(zPwdUtf8);
662 if( nPwd > nBuf-1 ){
663 fossil_fatal("pwd too big: max %d\n", nBuf-1);
664 }
665 for(i=0; zPwdUtf8[i]; i++) if( zPwdUtf8[i]=='\\' ) zPwdUtf8[i] = '/';
666 memcpy(zBuf, zPwdUtf8, nPwd+1);
667 fossil_filename_free(zPwdUtf8);
668 #else
669 if( getcwd(zBuf, nBuf-1)==0 ){
670 if( errno==ERANGE ){
671 fossil_fatal("pwd too big: max %d\n", nBuf-1);
672 }else{
@@ -1012,11 +1012,11 @@
1012
1013 #if defined(_WIN32)
1014 wchar_t zTmpPath[MAX_PATH];
1015
1016 if( GetTempPathW(MAX_PATH, zTmpPath) ){
1017 azDirs[0] = fossil_filename_to_utf8(zTmpPath);
1018 }
1019
1020 azDirs[1] = fossil_getenv("TEMP");
1021 azDirs[2] = fossil_getenv("TMP");
1022 #endif
@@ -1046,12 +1046,12 @@
1046 }
1047 zBuf[j] = 0;
1048 }while( file_size(zBuf)>=0 );
1049
1050 #if defined(_WIN32)
1051 fossil_unicode_free((char *)azDirs[1]);
1052 fossil_unicode_free((char *)azDirs[2]);
1053 #endif
1054 }
1055
1056
1057 /*
@@ -1091,161 +1091,36 @@
1091 # define closedir _wclosedir
1092 #endif /* _WIN32 */
1093
1094 #endif /* INTERFACE */
1095
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1096 /*
1097 ** Return the value of an environment variable as UTF8.
1098 ** Use fossil_filename_free() to release resources.
1099 */
1100 char *fossil_getenv(const char *zName){
1101 #ifdef _WIN32
1102 wchar_t *uName = fossil_utf8_to_unicode(zName);
1103 void *zValue = _wgetenv(uName);
1104 fossil_unicode_free(uName);
 
1105 #else
1106 char *zValue = getenv(zName);
1107 #endif
1108 if( zValue ) zValue = fossil_filename_to_utf8(zValue);
1109 return zValue;
1110 }
1111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1112 /*
1113 ** Like fopen() but always takes a UTF8 argument.
1114 */
1115 FILE *fossil_fopen(const char *zName, const char *zMode){
1116 #ifdef _WIN32
1117 wchar_t *uMode = fossil_utf8_to_unicode(zMode);
1118 wchar_t *uName = fossil_utf8_to_unicode(zName);
1119 FILE *f = _wfopen(uName, uMode);
1120 fossil_unicode_free(uName);
1121 fossil_unicode_free(uMode);
1122 #else
1123 FILE *f = fopen(zName, zMode);
1124 #endif
1125 return f;
1126 }
1127
+23 -6
--- src/main.c
+++ src/main.c
@@ -491,15 +491,15 @@
491491
g.argc = argc;
492492
g.argv = argv;
493493
#if defined(_WIN32) && !defined(__MINGW32__)
494494
parse_windows_command_line(&g.argc, &g.argv);
495495
GetModuleFileNameW(NULL, buf, MAX_PATH);
496
- g.nameOfExe = fossil_unicode_to_utf8(buf);
497
- for(i=0; i<g.argc; i++) g.argv[i] = fossil_unicode_to_utf8(g.argv[i]);
496
+ g.nameOfExe = fossil_filename_to_utf8(buf);
498497
#else
499498
g.nameOfExe = g.argv[0];
500499
#endif
500
+ for(i=0; i<g.argc; i++) g.argv[i] = fossil_filename_to_utf8(g.argv[i]);
501501
for(i=1; i<g.argc-1; i++){
502502
z = g.argv[i];
503503
if( z[0]!='-' ) continue;
504504
z++;
505505
if( z[0]=='-' ) z++;
@@ -858,11 +858,11 @@
858858
char *zOut = mprintf("SYSTEM: %s\n", zNewCmd);
859859
fossil_puts(zOut, 1);
860860
fossil_free(zOut);
861861
}
862862
rc = _wsystem(zUnicode);
863
- fossil_mbcs_free(zUnicode);
863
+ fossil_unicode_free(zUnicode);
864864
free(zNewCmd);
865865
#else
866866
/* On unix, evaluate the command directly.
867867
*/
868868
if( g.fSystemTrace ) fprintf(stderr, "SYSTEM: %s\n", zOrigCmd);
@@ -2022,15 +2022,32 @@
20222022
#endif
20232023
}
20242024
20252025
/*
20262026
** COMMAND: test-echo
2027
+**
2028
+** Usage: %fossil test-echo [--hex] ARGS...
20272029
**
20282030
** Echo all command-line arguments (enclosed in [...]) to the screen so that
20292031
** wildcard expansion behavior of the host shell can be investigated.
2032
+**
2033
+** With the --hex option, show the output as hexadecimal. This can be used
2034
+** to verify the fossil_filename_to_utf8() routine on Windows and Mac.
20302035
*/
20312036
void test_echo_cmd(void){
2032
- int i;
2033
- for(i=0; i<g.argc; i++){
2034
- fossil_print("argv[%d] = [%s]\n", i, g.argv[i]);
2037
+ int i, j;
2038
+ if( find_option("hex",0,0)==0 ){
2039
+ for(i=0; i<g.argc; i++){
2040
+ fossil_print("argv[%d] = [%s]\n", i, g.argv[i]);
2041
+ }
2042
+ }else{
2043
+ unsigned char *z, c;
2044
+ for(i=0; i<g.argc; i++){
2045
+ fossil_print("argv[%d] = [", i);
2046
+ z = (unsigned char*)g.argv[i];
2047
+ for(j=0; (c = z[j])!=0; j++){
2048
+ fossil_print("%02x", c);
2049
+ }
2050
+ fossil_print("]\n");
2051
+ }
20352052
}
20362053
}
20372054
--- src/main.c
+++ src/main.c
@@ -491,15 +491,15 @@
491 g.argc = argc;
492 g.argv = argv;
493 #if defined(_WIN32) && !defined(__MINGW32__)
494 parse_windows_command_line(&g.argc, &g.argv);
495 GetModuleFileNameW(NULL, buf, MAX_PATH);
496 g.nameOfExe = fossil_unicode_to_utf8(buf);
497 for(i=0; i<g.argc; i++) g.argv[i] = fossil_unicode_to_utf8(g.argv[i]);
498 #else
499 g.nameOfExe = g.argv[0];
500 #endif
 
501 for(i=1; i<g.argc-1; i++){
502 z = g.argv[i];
503 if( z[0]!='-' ) continue;
504 z++;
505 if( z[0]=='-' ) z++;
@@ -858,11 +858,11 @@
858 char *zOut = mprintf("SYSTEM: %s\n", zNewCmd);
859 fossil_puts(zOut, 1);
860 fossil_free(zOut);
861 }
862 rc = _wsystem(zUnicode);
863 fossil_mbcs_free(zUnicode);
864 free(zNewCmd);
865 #else
866 /* On unix, evaluate the command directly.
867 */
868 if( g.fSystemTrace ) fprintf(stderr, "SYSTEM: %s\n", zOrigCmd);
@@ -2022,15 +2022,32 @@
2022 #endif
2023 }
2024
2025 /*
2026 ** COMMAND: test-echo
 
 
2027 **
2028 ** Echo all command-line arguments (enclosed in [...]) to the screen so that
2029 ** wildcard expansion behavior of the host shell can be investigated.
 
 
 
2030 */
2031 void test_echo_cmd(void){
2032 int i;
2033 for(i=0; i<g.argc; i++){
2034 fossil_print("argv[%d] = [%s]\n", i, g.argv[i]);
 
 
 
 
 
 
 
 
 
 
 
 
2035 }
2036 }
2037
--- src/main.c
+++ src/main.c
@@ -491,15 +491,15 @@
491 g.argc = argc;
492 g.argv = argv;
493 #if defined(_WIN32) && !defined(__MINGW32__)
494 parse_windows_command_line(&g.argc, &g.argv);
495 GetModuleFileNameW(NULL, buf, MAX_PATH);
496 g.nameOfExe = fossil_filename_to_utf8(buf);
 
497 #else
498 g.nameOfExe = g.argv[0];
499 #endif
500 for(i=0; i<g.argc; i++) g.argv[i] = fossil_filename_to_utf8(g.argv[i]);
501 for(i=1; i<g.argc-1; i++){
502 z = g.argv[i];
503 if( z[0]!='-' ) continue;
504 z++;
505 if( z[0]=='-' ) z++;
@@ -858,11 +858,11 @@
858 char *zOut = mprintf("SYSTEM: %s\n", zNewCmd);
859 fossil_puts(zOut, 1);
860 fossil_free(zOut);
861 }
862 rc = _wsystem(zUnicode);
863 fossil_unicode_free(zUnicode);
864 free(zNewCmd);
865 #else
866 /* On unix, evaluate the command directly.
867 */
868 if( g.fSystemTrace ) fprintf(stderr, "SYSTEM: %s\n", zOrigCmd);
@@ -2022,15 +2022,32 @@
2022 #endif
2023 }
2024
2025 /*
2026 ** COMMAND: test-echo
2027 **
2028 ** Usage: %fossil test-echo [--hex] ARGS...
2029 **
2030 ** Echo all command-line arguments (enclosed in [...]) to the screen so that
2031 ** wildcard expansion behavior of the host shell can be investigated.
2032 **
2033 ** With the --hex option, show the output as hexadecimal. This can be used
2034 ** to verify the fossil_filename_to_utf8() routine on Windows and Mac.
2035 */
2036 void test_echo_cmd(void){
2037 int i, j;
2038 if( find_option("hex",0,0)==0 ){
2039 for(i=0; i<g.argc; i++){
2040 fossil_print("argv[%d] = [%s]\n", i, g.argv[i]);
2041 }
2042 }else{
2043 unsigned char *z, c;
2044 for(i=0; i<g.argc; i++){
2045 fossil_print("argv[%d] = [", i);
2046 z = (unsigned char*)g.argv[i];
2047 for(j=0; (c = z[j])!=0; j++){
2048 fossil_print("%02x", c);
2049 }
2050 fossil_print("]\n");
2051 }
2052 }
2053 }
2054
+11 -1
--- src/main.mk
+++ src/main.mk
@@ -102,10 +102,11 @@
102102
$(SRCDIR)/tktsetup.c \
103103
$(SRCDIR)/undo.c \
104104
$(SRCDIR)/update.c \
105105
$(SRCDIR)/url.c \
106106
$(SRCDIR)/user.c \
107
+ $(SRCDIR)/utf8.c \
107108
$(SRCDIR)/verify.c \
108109
$(SRCDIR)/vfile.c \
109110
$(SRCDIR)/wiki.c \
110111
$(SRCDIR)/wikiformat.c \
111112
$(SRCDIR)/winhttp.c \
@@ -203,10 +204,11 @@
203204
$(OBJDIR)/tktsetup_.c \
204205
$(OBJDIR)/undo_.c \
205206
$(OBJDIR)/update_.c \
206207
$(OBJDIR)/url_.c \
207208
$(OBJDIR)/user_.c \
209
+ $(OBJDIR)/utf8_.c \
208210
$(OBJDIR)/verify_.c \
209211
$(OBJDIR)/vfile_.c \
210212
$(OBJDIR)/wiki_.c \
211213
$(OBJDIR)/wikiformat_.c \
212214
$(OBJDIR)/winhttp_.c \
@@ -304,10 +306,11 @@
304306
$(OBJDIR)/tktsetup.o \
305307
$(OBJDIR)/undo.o \
306308
$(OBJDIR)/update.o \
307309
$(OBJDIR)/url.o \
308310
$(OBJDIR)/user.o \
311
+ $(OBJDIR)/utf8.o \
309312
$(OBJDIR)/verify.o \
310313
$(OBJDIR)/vfile.o \
311314
$(OBJDIR)/wiki.o \
312315
$(OBJDIR)/wikiformat.o \
313316
$(OBJDIR)/winhttp.o \
@@ -381,11 +384,11 @@
381384
382385
383386
$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
384387
$(OBJDIR)/mkindex $(TRANS_SRC) >$@
385388
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
386
- $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
389
+ $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/utf8_.c:$(OBJDIR)/utf8.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
387390
touch $(OBJDIR)/headers
388391
$(OBJDIR)/headers: Makefile
389392
$(OBJDIR)/json.o $(OBJDIR)/json_artifact.o $(OBJDIR)/json_branch.o $(OBJDIR)/json_config.o $(OBJDIR)/json_diff.o $(OBJDIR)/json_dir.o $(OBJDIR)/json_finfo.o $(OBJDIR)/json_login.o $(OBJDIR)/json_query.o $(OBJDIR)/json_report.o $(OBJDIR)/json_tag.o $(OBJDIR)/json_timeline.o $(OBJDIR)/json_user.o $(OBJDIR)/json_wiki.o : $(SRCDIR)/json_detail.h
390393
Makefile:
391394
$(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1016,10 +1019,17 @@
10161019
10171020
$(OBJDIR)/user.o: $(OBJDIR)/user_.c $(OBJDIR)/user.h $(SRCDIR)/config.h
10181021
$(XTCC) -o $(OBJDIR)/user.o -c $(OBJDIR)/user_.c
10191022
10201023
$(OBJDIR)/user.h: $(OBJDIR)/headers
1024
+$(OBJDIR)/utf8_.c: $(SRCDIR)/utf8.c $(OBJDIR)/translate
1025
+ $(OBJDIR)/translate $(SRCDIR)/utf8.c >$(OBJDIR)/utf8_.c
1026
+
1027
+$(OBJDIR)/utf8.o: $(OBJDIR)/utf8_.c $(OBJDIR)/utf8.h $(SRCDIR)/config.h
1028
+ $(XTCC) -o $(OBJDIR)/utf8.o -c $(OBJDIR)/utf8_.c
1029
+
1030
+$(OBJDIR)/utf8.h: $(OBJDIR)/headers
10211031
$(OBJDIR)/verify_.c: $(SRCDIR)/verify.c $(OBJDIR)/translate
10221032
$(OBJDIR)/translate $(SRCDIR)/verify.c >$(OBJDIR)/verify_.c
10231033
10241034
$(OBJDIR)/verify.o: $(OBJDIR)/verify_.c $(OBJDIR)/verify.h $(SRCDIR)/config.h
10251035
$(XTCC) -o $(OBJDIR)/verify.o -c $(OBJDIR)/verify_.c
10261036
--- src/main.mk
+++ src/main.mk
@@ -102,10 +102,11 @@
102 $(SRCDIR)/tktsetup.c \
103 $(SRCDIR)/undo.c \
104 $(SRCDIR)/update.c \
105 $(SRCDIR)/url.c \
106 $(SRCDIR)/user.c \
 
107 $(SRCDIR)/verify.c \
108 $(SRCDIR)/vfile.c \
109 $(SRCDIR)/wiki.c \
110 $(SRCDIR)/wikiformat.c \
111 $(SRCDIR)/winhttp.c \
@@ -203,10 +204,11 @@
203 $(OBJDIR)/tktsetup_.c \
204 $(OBJDIR)/undo_.c \
205 $(OBJDIR)/update_.c \
206 $(OBJDIR)/url_.c \
207 $(OBJDIR)/user_.c \
 
208 $(OBJDIR)/verify_.c \
209 $(OBJDIR)/vfile_.c \
210 $(OBJDIR)/wiki_.c \
211 $(OBJDIR)/wikiformat_.c \
212 $(OBJDIR)/winhttp_.c \
@@ -304,10 +306,11 @@
304 $(OBJDIR)/tktsetup.o \
305 $(OBJDIR)/undo.o \
306 $(OBJDIR)/update.o \
307 $(OBJDIR)/url.o \
308 $(OBJDIR)/user.o \
 
309 $(OBJDIR)/verify.o \
310 $(OBJDIR)/vfile.o \
311 $(OBJDIR)/wiki.o \
312 $(OBJDIR)/wikiformat.o \
313 $(OBJDIR)/winhttp.o \
@@ -381,11 +384,11 @@
381
382
383 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
384 $(OBJDIR)/mkindex $(TRANS_SRC) >$@
385 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
386 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
387 touch $(OBJDIR)/headers
388 $(OBJDIR)/headers: Makefile
389 $(OBJDIR)/json.o $(OBJDIR)/json_artifact.o $(OBJDIR)/json_branch.o $(OBJDIR)/json_config.o $(OBJDIR)/json_diff.o $(OBJDIR)/json_dir.o $(OBJDIR)/json_finfo.o $(OBJDIR)/json_login.o $(OBJDIR)/json_query.o $(OBJDIR)/json_report.o $(OBJDIR)/json_tag.o $(OBJDIR)/json_timeline.o $(OBJDIR)/json_user.o $(OBJDIR)/json_wiki.o : $(SRCDIR)/json_detail.h
390 Makefile:
391 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1016,10 +1019,17 @@
1016
1017 $(OBJDIR)/user.o: $(OBJDIR)/user_.c $(OBJDIR)/user.h $(SRCDIR)/config.h
1018 $(XTCC) -o $(OBJDIR)/user.o -c $(OBJDIR)/user_.c
1019
1020 $(OBJDIR)/user.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
1021 $(OBJDIR)/verify_.c: $(SRCDIR)/verify.c $(OBJDIR)/translate
1022 $(OBJDIR)/translate $(SRCDIR)/verify.c >$(OBJDIR)/verify_.c
1023
1024 $(OBJDIR)/verify.o: $(OBJDIR)/verify_.c $(OBJDIR)/verify.h $(SRCDIR)/config.h
1025 $(XTCC) -o $(OBJDIR)/verify.o -c $(OBJDIR)/verify_.c
1026
--- src/main.mk
+++ src/main.mk
@@ -102,10 +102,11 @@
102 $(SRCDIR)/tktsetup.c \
103 $(SRCDIR)/undo.c \
104 $(SRCDIR)/update.c \
105 $(SRCDIR)/url.c \
106 $(SRCDIR)/user.c \
107 $(SRCDIR)/utf8.c \
108 $(SRCDIR)/verify.c \
109 $(SRCDIR)/vfile.c \
110 $(SRCDIR)/wiki.c \
111 $(SRCDIR)/wikiformat.c \
112 $(SRCDIR)/winhttp.c \
@@ -203,10 +204,11 @@
204 $(OBJDIR)/tktsetup_.c \
205 $(OBJDIR)/undo_.c \
206 $(OBJDIR)/update_.c \
207 $(OBJDIR)/url_.c \
208 $(OBJDIR)/user_.c \
209 $(OBJDIR)/utf8_.c \
210 $(OBJDIR)/verify_.c \
211 $(OBJDIR)/vfile_.c \
212 $(OBJDIR)/wiki_.c \
213 $(OBJDIR)/wikiformat_.c \
214 $(OBJDIR)/winhttp_.c \
@@ -304,10 +306,11 @@
306 $(OBJDIR)/tktsetup.o \
307 $(OBJDIR)/undo.o \
308 $(OBJDIR)/update.o \
309 $(OBJDIR)/url.o \
310 $(OBJDIR)/user.o \
311 $(OBJDIR)/utf8.o \
312 $(OBJDIR)/verify.o \
313 $(OBJDIR)/vfile.o \
314 $(OBJDIR)/wiki.o \
315 $(OBJDIR)/wikiformat.o \
316 $(OBJDIR)/winhttp.o \
@@ -381,11 +384,11 @@
384
385
386 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
387 $(OBJDIR)/mkindex $(TRANS_SRC) >$@
388 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
389 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/utf8_.c:$(OBJDIR)/utf8.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
390 touch $(OBJDIR)/headers
391 $(OBJDIR)/headers: Makefile
392 $(OBJDIR)/json.o $(OBJDIR)/json_artifact.o $(OBJDIR)/json_branch.o $(OBJDIR)/json_config.o $(OBJDIR)/json_diff.o $(OBJDIR)/json_dir.o $(OBJDIR)/json_finfo.o $(OBJDIR)/json_login.o $(OBJDIR)/json_query.o $(OBJDIR)/json_report.o $(OBJDIR)/json_tag.o $(OBJDIR)/json_timeline.o $(OBJDIR)/json_user.o $(OBJDIR)/json_wiki.o : $(SRCDIR)/json_detail.h
393 Makefile:
394 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1016,10 +1019,17 @@
1019
1020 $(OBJDIR)/user.o: $(OBJDIR)/user_.c $(OBJDIR)/user.h $(SRCDIR)/config.h
1021 $(XTCC) -o $(OBJDIR)/user.o -c $(OBJDIR)/user_.c
1022
1023 $(OBJDIR)/user.h: $(OBJDIR)/headers
1024 $(OBJDIR)/utf8_.c: $(SRCDIR)/utf8.c $(OBJDIR)/translate
1025 $(OBJDIR)/translate $(SRCDIR)/utf8.c >$(OBJDIR)/utf8_.c
1026
1027 $(OBJDIR)/utf8.o: $(OBJDIR)/utf8_.c $(OBJDIR)/utf8.h $(SRCDIR)/config.h
1028 $(XTCC) -o $(OBJDIR)/utf8.o -c $(OBJDIR)/utf8_.c
1029
1030 $(OBJDIR)/utf8.h: $(OBJDIR)/headers
1031 $(OBJDIR)/verify_.c: $(SRCDIR)/verify.c $(OBJDIR)/translate
1032 $(OBJDIR)/translate $(SRCDIR)/verify.c >$(OBJDIR)/verify_.c
1033
1034 $(OBJDIR)/verify.o: $(OBJDIR)/verify_.c $(OBJDIR)/verify.h $(SRCDIR)/config.h
1035 $(XTCC) -o $(OBJDIR)/verify.o -c $(OBJDIR)/verify_.c
1036
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -107,10 +107,11 @@
107107
update
108108
url
109109
user
110110
verify
111111
vfile
112
+ utf8
112113
wiki
113114
wikiformat
114115
winhttp
115116
wysiwyg
116117
xfer
117118
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -107,10 +107,11 @@
107 update
108 url
109 user
110 verify
111 vfile
 
112 wiki
113 wikiformat
114 winhttp
115 wysiwyg
116 xfer
117
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -107,10 +107,11 @@
107 update
108 url
109 user
110 verify
111 vfile
112 utf8
113 wiki
114 wikiformat
115 winhttp
116 wysiwyg
117 xfer
118
+3 -3
--- src/rebuild.c
+++ src/rebuild.c
@@ -843,13 +843,13 @@
843843
char *zSubpath;
844844
845845
if( pEntry->d_name[0]=='.' ){
846846
continue;
847847
}
848
- zUtf8Name = fossil_unicode_to_utf8(pEntry->d_name);
848
+ zUtf8Name = fossil_filename_to_utf8(pEntry->d_name);
849849
zSubpath = mprintf("%s/%s", zPath, zUtf8Name);
850
- fossil_mbcs_free(zUtf8Name);
850
+ fossil_filename_free(zUtf8Name);
851851
if( file_isdir(zSubpath)==1 ){
852852
recon_read_dir(zSubpath);
853853
}
854854
blob_init(&path, 0, 0);
855855
blob_appendf(&path, "%s", zSubpath);
@@ -867,11 +867,11 @@
867867
closedir(d);
868868
}else {
869869
fossil_panic("encountered error %d while trying to open \"%s\".",
870870
errno, g.argv[3]);
871871
}
872
- fossil_mbcs_free(zUnicodePath);
872
+ fossil_unicode_free(zUnicodePath);
873873
}
874874
875875
/*
876876
** COMMAND: reconstruct*
877877
**
878878
879879
ADDED src/utf8.c
--- src/rebuild.c
+++ src/rebuild.c
@@ -843,13 +843,13 @@
843 char *zSubpath;
844
845 if( pEntry->d_name[0]=='.' ){
846 continue;
847 }
848 zUtf8Name = fossil_unicode_to_utf8(pEntry->d_name);
849 zSubpath = mprintf("%s/%s", zPath, zUtf8Name);
850 fossil_mbcs_free(zUtf8Name);
851 if( file_isdir(zSubpath)==1 ){
852 recon_read_dir(zSubpath);
853 }
854 blob_init(&path, 0, 0);
855 blob_appendf(&path, "%s", zSubpath);
@@ -867,11 +867,11 @@
867 closedir(d);
868 }else {
869 fossil_panic("encountered error %d while trying to open \"%s\".",
870 errno, g.argv[3]);
871 }
872 fossil_mbcs_free(zUnicodePath);
873 }
874
875 /*
876 ** COMMAND: reconstruct*
877 **
878
879 DDED src/utf8.c
--- src/rebuild.c
+++ src/rebuild.c
@@ -843,13 +843,13 @@
843 char *zSubpath;
844
845 if( pEntry->d_name[0]=='.' ){
846 continue;
847 }
848 zUtf8Name = fossil_filename_to_utf8(pEntry->d_name);
849 zSubpath = mprintf("%s/%s", zPath, zUtf8Name);
850 fossil_filename_free(zUtf8Name);
851 if( file_isdir(zSubpath)==1 ){
852 recon_read_dir(zSubpath);
853 }
854 blob_init(&path, 0, 0);
855 blob_appendf(&path, "%s", zSubpath);
@@ -867,11 +867,11 @@
867 closedir(d);
868 }else {
869 fossil_panic("encountered error %d while trying to open \"%s\".",
870 errno, g.argv[3]);
871 }
872 fossil_unicode_free(zUnicodePath);
873 }
874
875 /*
876 ** COMMAND: reconstruct*
877 **
878
879 DDED src/utf8.c
+51
--- a/src/utf8.c
+++ b/src/utf8.c
@@ -0,0 +1,51 @@
1
+#ifdef _WIN32f _WIN32nicode* 2IN32>MAX_PATHfilename_to_ut#indif in the) {
2
+ /* If[/\]", don't process the ':' */
3
+ if( nChar>MAX_PATH ) {
4
+ memcpy(zUnicode, L"\\\\?\\", 8 -1, wUnicode, nChar2/" or "<drive>:\"fdef __CYGWIN__
5
+# include <sys/cygwin.h>
6
+# define CP_UTF8 65001
7
+ __declspec(dllidef _WIN32def _WIN32def _WIN32
8
+ sqlite3ifdef _WIN32f _WIN32nMAX_PATHfilename_to_ut#in;
9
+ char *zUtf;
10
+ wch8. #ifdef _WIN32#else
11
+ return (char*)zMbcsznicode text into UTF8(char *)zUnicode#
12
+** to precomposed UTF8. WCHARFF80) == 0xF000 ){
13
+ WCHARFWCHAR *zUnicode = fossil_utf8const =>MAX_PATHfilename_to_ut#indif in the) {
14
+ /* If[/\]", don't process the ':' */
15
+ if( nChar>MAX_PATH ) {
16
+ memcpy(zUnicode, L"\\\\?\\", 8 -1, wUnicode, nChar2/" or "<drive>:\"fdef __CYGWIN__
17
+# include <sys/cygwin.h>
18
+# define CP_UTF8 65001
19
+ __declspec(dllidef _WIN32def _WIN32def _WIN32
20
+ sqlite3ifdef _WIN32f _WIN32nMAX_PATHfilename_to_ut#in;
21
+ char *zUtf;
22
+ wch8. #ifdef _WIN32#else
23
+ return (char*)zMbcsznicode text into UTF8(char *)zUnicode#
24
+** to precomposed UTF8. WCHARFF80) == 0xF000 ){
25
+ WCHARFWCHAR *z2>MAX_PATHfilename_to_ut#indif in the) {
26
+ /* Iifdef _WIN32f _WIN32nicode* 2IN#ifdef _WIchar *zUnicodeicode* 2IN32>MAX_P#ifdef _WIN32f _WIN32nicode* 2IN32>MAX_PATHfilename_to_ut#indif in the) {
27
+ /* If[/\]", don't process the ':' */
28
+ if( nChar>MAX_PATH ) {
29
+ memcpy(zUnicode, L"\\\\?\\", 8 -1, wUnicode, nChar2/" or "<drive>:\"fdef __CYGWIN__
30
+# include <sys/cygwin.h>
31
+# define CP_UTF8 65001
32
+ __declspec(dllidef _WIN32def _WIN32def _WIN32
33
+ sqlite3ifdef _WIN32f _WIN32nMAX_PATHfilename_to_ut#in;
34
+ char *zUtf;
35
+ wch8. #ifdef _WIN32#else
36
+ return (char*)zMbcsznicode text into UTF8(char *)zUnicode#
37
+** to precomposed UTF8. WCHARFF80) == 0xF000 ){
38
+ WCHARFWCHAR *zUnicode = fossil_utf8const =>MAX_PATHfilename_to_ut#indif in the) {
39
+ /* If[/\]", don't process the ':' */
40
+ if( nChar>MAX_PATH ) {
41
+ memcpy(zUnicode, L"\\\\?\\", 8 -1, wUnicode, nChar2/" or "<drive>:\"fdef __CYGWIN__
42
+# include <sys/cygwin.h>
43
+# define CP_UTF8 65001
44
+ __declspec(dllidef _WIN32def _WIN32def _WIN32
45
+ sqlite3ifdef _WIN32f _WIN32nMAX_PATHfilename_to_ut#in;
46
+ char *zUtf;
47
+ wch8. #ifdef _WIN32#else
48
+ return (char*)zMbcsznicode text into UTF8(char *)zUnicode#
49
+** to precomposed UTF8. WCHARFF80) == 0xF000 ){
50
+ WCHARFWCHAR *z2>MAX_PATHfilename_to_ut#indif in the) {
51
+ /* Iifdef _WIN32f _WIN32nicode* 2IN#ifdef _WIcharFilename[n]>0 && zFilename[n]<=0
--- a/src/utf8.c
+++ b/src/utf8.c
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/utf8.c
+++ b/src/utf8.c
@@ -0,0 +1,51 @@
1 #ifdef _WIN32f _WIN32nicode* 2IN32>MAX_PATHfilename_to_ut#indif in the) {
2 /* If[/\]", don't process the ':' */
3 if( nChar>MAX_PATH ) {
4 memcpy(zUnicode, L"\\\\?\\", 8 -1, wUnicode, nChar2/" or "<drive>:\"fdef __CYGWIN__
5 # include <sys/cygwin.h>
6 # define CP_UTF8 65001
7 __declspec(dllidef _WIN32def _WIN32def _WIN32
8 sqlite3ifdef _WIN32f _WIN32nMAX_PATHfilename_to_ut#in;
9 char *zUtf;
10 wch8. #ifdef _WIN32#else
11 return (char*)zMbcsznicode text into UTF8(char *)zUnicode#
12 ** to precomposed UTF8. WCHARFF80) == 0xF000 ){
13 WCHARFWCHAR *zUnicode = fossil_utf8const =>MAX_PATHfilename_to_ut#indif in the) {
14 /* If[/\]", don't process the ':' */
15 if( nChar>MAX_PATH ) {
16 memcpy(zUnicode, L"\\\\?\\", 8 -1, wUnicode, nChar2/" or "<drive>:\"fdef __CYGWIN__
17 # include <sys/cygwin.h>
18 # define CP_UTF8 65001
19 __declspec(dllidef _WIN32def _WIN32def _WIN32
20 sqlite3ifdef _WIN32f _WIN32nMAX_PATHfilename_to_ut#in;
21 char *zUtf;
22 wch8. #ifdef _WIN32#else
23 return (char*)zMbcsznicode text into UTF8(char *)zUnicode#
24 ** to precomposed UTF8. WCHARFF80) == 0xF000 ){
25 WCHARFWCHAR *z2>MAX_PATHfilename_to_ut#indif in the) {
26 /* Iifdef _WIN32f _WIN32nicode* 2IN#ifdef _WIchar *zUnicodeicode* 2IN32>MAX_P#ifdef _WIN32f _WIN32nicode* 2IN32>MAX_PATHfilename_to_ut#indif in the) {
27 /* If[/\]", don't process the ':' */
28 if( nChar>MAX_PATH ) {
29 memcpy(zUnicode, L"\\\\?\\", 8 -1, wUnicode, nChar2/" or "<drive>:\"fdef __CYGWIN__
30 # include <sys/cygwin.h>
31 # define CP_UTF8 65001
32 __declspec(dllidef _WIN32def _WIN32def _WIN32
33 sqlite3ifdef _WIN32f _WIN32nMAX_PATHfilename_to_ut#in;
34 char *zUtf;
35 wch8. #ifdef _WIN32#else
36 return (char*)zMbcsznicode text into UTF8(char *)zUnicode#
37 ** to precomposed UTF8. WCHARFF80) == 0xF000 ){
38 WCHARFWCHAR *zUnicode = fossil_utf8const =>MAX_PATHfilename_to_ut#indif in the) {
39 /* If[/\]", don't process the ':' */
40 if( nChar>MAX_PATH ) {
41 memcpy(zUnicode, L"\\\\?\\", 8 -1, wUnicode, nChar2/" or "<drive>:\"fdef __CYGWIN__
42 # include <sys/cygwin.h>
43 # define CP_UTF8 65001
44 __declspec(dllidef _WIN32def _WIN32def _WIN32
45 sqlite3ifdef _WIN32f _WIN32nMAX_PATHfilename_to_ut#in;
46 char *zUtf;
47 wch8. #ifdef _WIN32#else
48 return (char*)zMbcsznicode text into UTF8(char *)zUnicode#
49 ** to precomposed UTF8. WCHARFF80) == 0xF000 ){
50 WCHARFWCHAR *z2>MAX_PATHfilename_to_ut#indif in the) {
51 /* Iifdef _WIN32f _WIN32nicode* 2IN#ifdef _WIcharFilename[n]>0 && zFilename[n]<=0
+6 -6
--- src/vfile.c
+++ src/vfile.c
@@ -440,11 +440,11 @@
440440
const char *zDir;
441441
struct dirent *pEntry;
442442
int skipAll = 0;
443443
static Stmt ins;
444444
static int depth = 0;
445
- void *zMbcs;
445
+ void *zNative;
446446
447447
origSize = blob_size(pPath);
448448
if( pIgnore ){
449449
blob_appendf(pPath, "/");
450450
if( glob_match(pIgnore, &blob_str(pPath)[nPrefix+1]) ) skipAll = 1;
@@ -459,22 +459,22 @@
459459
);
460460
}
461461
depth++;
462462
463463
zDir = blob_str(pPath);
464
- zMbcs = fossil_utf8_to_unicode(zDir);
465
- d = opendir(zMbcs);
464
+ zNative = fossil_utf8_to_unicode(zDir);
465
+ d = opendir(zNative);
466466
if( d ){
467467
while( (pEntry=readdir(d))!=0 ){
468468
char *zPath;
469469
char *zUtf8;
470470
if( pEntry->d_name[0]=='.' ){
471471
if( (scanFlags & SCAN_ALL)==0 ) continue;
472472
if( pEntry->d_name[1]==0 ) continue;
473473
if( pEntry->d_name[1]=='.' && pEntry->d_name[2]==0 ) continue;
474474
}
475
- zUtf8 = fossil_unicode_to_utf8(pEntry->d_name);
475
+ zUtf8 = fossil_filename_to_utf8(pEntry->d_name);
476476
blob_appendf(pPath, "/%s", zUtf8);
477477
zPath = blob_str(pPath);
478478
if( glob_match(pIgnore, &zPath[nPrefix+1]) ){
479479
/* do nothing */
480480
}else if( file_wd_isdir(zPath)==1 ){
@@ -486,16 +486,16 @@
486486
db_bind_text(&ins, ":file", &zPath[nPrefix+1]);
487487
db_step(&ins);
488488
db_reset(&ins);
489489
}
490490
}
491
- fossil_mbcs_free(zUtf8);
491
+ fossil_filename_free(zUtf8);
492492
blob_resize(pPath, origSize);
493493
}
494494
closedir(d);
495495
}
496
- fossil_mbcs_free(zMbcs);
496
+ fossil_unicode_free(zNative);
497497
498498
depth--;
499499
if( depth==0 ){
500500
db_finalize(&ins);
501501
}
502502
--- src/vfile.c
+++ src/vfile.c
@@ -440,11 +440,11 @@
440 const char *zDir;
441 struct dirent *pEntry;
442 int skipAll = 0;
443 static Stmt ins;
444 static int depth = 0;
445 void *zMbcs;
446
447 origSize = blob_size(pPath);
448 if( pIgnore ){
449 blob_appendf(pPath, "/");
450 if( glob_match(pIgnore, &blob_str(pPath)[nPrefix+1]) ) skipAll = 1;
@@ -459,22 +459,22 @@
459 );
460 }
461 depth++;
462
463 zDir = blob_str(pPath);
464 zMbcs = fossil_utf8_to_unicode(zDir);
465 d = opendir(zMbcs);
466 if( d ){
467 while( (pEntry=readdir(d))!=0 ){
468 char *zPath;
469 char *zUtf8;
470 if( pEntry->d_name[0]=='.' ){
471 if( (scanFlags & SCAN_ALL)==0 ) continue;
472 if( pEntry->d_name[1]==0 ) continue;
473 if( pEntry->d_name[1]=='.' && pEntry->d_name[2]==0 ) continue;
474 }
475 zUtf8 = fossil_unicode_to_utf8(pEntry->d_name);
476 blob_appendf(pPath, "/%s", zUtf8);
477 zPath = blob_str(pPath);
478 if( glob_match(pIgnore, &zPath[nPrefix+1]) ){
479 /* do nothing */
480 }else if( file_wd_isdir(zPath)==1 ){
@@ -486,16 +486,16 @@
486 db_bind_text(&ins, ":file", &zPath[nPrefix+1]);
487 db_step(&ins);
488 db_reset(&ins);
489 }
490 }
491 fossil_mbcs_free(zUtf8);
492 blob_resize(pPath, origSize);
493 }
494 closedir(d);
495 }
496 fossil_mbcs_free(zMbcs);
497
498 depth--;
499 if( depth==0 ){
500 db_finalize(&ins);
501 }
502
--- src/vfile.c
+++ src/vfile.c
@@ -440,11 +440,11 @@
440 const char *zDir;
441 struct dirent *pEntry;
442 int skipAll = 0;
443 static Stmt ins;
444 static int depth = 0;
445 void *zNative;
446
447 origSize = blob_size(pPath);
448 if( pIgnore ){
449 blob_appendf(pPath, "/");
450 if( glob_match(pIgnore, &blob_str(pPath)[nPrefix+1]) ) skipAll = 1;
@@ -459,22 +459,22 @@
459 );
460 }
461 depth++;
462
463 zDir = blob_str(pPath);
464 zNative = fossil_utf8_to_unicode(zDir);
465 d = opendir(zNative);
466 if( d ){
467 while( (pEntry=readdir(d))!=0 ){
468 char *zPath;
469 char *zUtf8;
470 if( pEntry->d_name[0]=='.' ){
471 if( (scanFlags & SCAN_ALL)==0 ) continue;
472 if( pEntry->d_name[1]==0 ) continue;
473 if( pEntry->d_name[1]=='.' && pEntry->d_name[2]==0 ) continue;
474 }
475 zUtf8 = fossil_filename_to_utf8(pEntry->d_name);
476 blob_appendf(pPath, "/%s", zUtf8);
477 zPath = blob_str(pPath);
478 if( glob_match(pIgnore, &zPath[nPrefix+1]) ){
479 /* do nothing */
480 }else if( file_wd_isdir(zPath)==1 ){
@@ -486,16 +486,16 @@
486 db_bind_text(&ins, ":file", &zPath[nPrefix+1]);
487 db_step(&ins);
488 db_reset(&ins);
489 }
490 }
491 fossil_filename_free(zUtf8);
492 blob_resize(pPath, origSize);
493 }
494 closedir(d);
495 }
496 fossil_unicode_free(zNative);
497
498 depth--;
499 if( depth==0 ){
500 db_finalize(&ins);
501 }
502
+1 -1
--- src/winhttp.c
+++ src/winhttp.c
@@ -262,11 +262,11 @@
262262
static SERVICE_STATUS ssStatus;
263263
static SERVICE_STATUS_HANDLE sshStatusHandle;
264264
265265
/*
266266
** Get message string of the last system error. Return a pointer to the
267
-** message string. Call fossil_mbcs_free() to deallocate any memory used
267
+** message string. Call fossil_unicode_free() to deallocate any memory used
268268
** to store the message string when done.
269269
*/
270270
static char *win32_get_last_errmsg(void){
271271
DWORD nMsg;
272272
DWORD nErr = GetLastError();
273273
--- src/winhttp.c
+++ src/winhttp.c
@@ -262,11 +262,11 @@
262 static SERVICE_STATUS ssStatus;
263 static SERVICE_STATUS_HANDLE sshStatusHandle;
264
265 /*
266 ** Get message string of the last system error. Return a pointer to the
267 ** message string. Call fossil_mbcs_free() to deallocate any memory used
268 ** to store the message string when done.
269 */
270 static char *win32_get_last_errmsg(void){
271 DWORD nMsg;
272 DWORD nErr = GetLastError();
273
--- src/winhttp.c
+++ src/winhttp.c
@@ -262,11 +262,11 @@
262 static SERVICE_STATUS ssStatus;
263 static SERVICE_STATUS_HANDLE sshStatusHandle;
264
265 /*
266 ** Get message string of the last system error. Return a pointer to the
267 ** message string. Call fossil_unicode_free() to deallocate any memory used
268 ** to store the message string when done.
269 */
270 static char *win32_get_last_errmsg(void){
271 DWORD nMsg;
272 DWORD nErr = GetLastError();
273
+10 -4
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
2626
TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
2727
LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
2828
2929
SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
3030
31
-SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
31
+SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c utf8_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
3232
33
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
33
+OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
3434
3535
3636
RC=$(DMDIR)\bin\rcc
3737
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
3838
@@ -46,11 +46,11 @@
4646
4747
$(OBJDIR)\fossil.res: $B\win\fossil.rc
4848
$(RC) $(RCFLAGS) -o$@ $**
4949
5050
$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
51
- +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_tag json_timeline json_user json_wiki leaf login main manifest md5 merge merge3 moderate name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
51
+ +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_tag json_timeline json_user json_wiki leaf login main manifest md5 merge merge3 moderate name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user utf8 verify vfile wiki wikiformat winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
5252
+echo fossil >> $@
5353
+echo fossil >> $@
5454
+echo $(LIBS) >> $@
5555
+echo. >> $@
5656
+echo fossil >> $@
@@ -649,10 +649,16 @@
649649
$(OBJDIR)\user$O : user_.c user.h
650650
$(TCC) -o$@ -c user_.c
651651
652652
user_.c : $(SRCDIR)\user.c
653653
+translate$E $** > $@
654
+
655
+$(OBJDIR)\utf8$O : utf8_.c utf8.h
656
+ $(TCC) -o$@ -c utf8_.c
657
+
658
+utf8_.c : $(SRCDIR)\utf8.c
659
+ +translate$E $** > $@
654660
655661
$(OBJDIR)\verify$O : verify_.c verify.h
656662
$(TCC) -o$@ -c verify_.c
657663
658664
verify_.c : $(SRCDIR)\verify.c
@@ -705,7 +711,7 @@
705711
706712
zip_.c : $(SRCDIR)\zip.c
707713
+translate$E $** > $@
708714
709715
headers: makeheaders$E page_index.h VERSION.h
710
- +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
716
+ +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
711717
@copy /Y nul: headers
712718
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
26 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
27 LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
28
29 SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
30
31 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
32
33 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
34
35
36 RC=$(DMDIR)\bin\rcc
37 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
38
@@ -46,11 +46,11 @@
46
47 $(OBJDIR)\fossil.res: $B\win\fossil.rc
48 $(RC) $(RCFLAGS) -o$@ $**
49
50 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
51 +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_tag json_timeline json_user json_wiki leaf login main manifest md5 merge merge3 moderate name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
52 +echo fossil >> $@
53 +echo fossil >> $@
54 +echo $(LIBS) >> $@
55 +echo. >> $@
56 +echo fossil >> $@
@@ -649,10 +649,16 @@
649 $(OBJDIR)\user$O : user_.c user.h
650 $(TCC) -o$@ -c user_.c
651
652 user_.c : $(SRCDIR)\user.c
653 +translate$E $** > $@
 
 
 
 
 
 
654
655 $(OBJDIR)\verify$O : verify_.c verify.h
656 $(TCC) -o$@ -c verify_.c
657
658 verify_.c : $(SRCDIR)\verify.c
@@ -705,7 +711,7 @@
705
706 zip_.c : $(SRCDIR)\zip.c
707 +translate$E $** > $@
708
709 headers: makeheaders$E page_index.h VERSION.h
710 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
711 @copy /Y nul: headers
712
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
26 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
27 LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
28
29 SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
30
31 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c utf8_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
32
33 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
34
35
36 RC=$(DMDIR)\bin\rcc
37 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
38
@@ -46,11 +46,11 @@
46
47 $(OBJDIR)\fossil.res: $B\win\fossil.rc
48 $(RC) $(RCFLAGS) -o$@ $**
49
50 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
51 +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_tag json_timeline json_user json_wiki leaf login main manifest md5 merge merge3 moderate name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user utf8 verify vfile wiki wikiformat winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
52 +echo fossil >> $@
53 +echo fossil >> $@
54 +echo $(LIBS) >> $@
55 +echo. >> $@
56 +echo fossil >> $@
@@ -649,10 +649,16 @@
649 $(OBJDIR)\user$O : user_.c user.h
650 $(TCC) -o$@ -c user_.c
651
652 user_.c : $(SRCDIR)\user.c
653 +translate$E $** > $@
654
655 $(OBJDIR)\utf8$O : utf8_.c utf8.h
656 $(TCC) -o$@ -c utf8_.c
657
658 utf8_.c : $(SRCDIR)\utf8.c
659 +translate$E $** > $@
660
661 $(OBJDIR)\verify$O : verify_.c verify.h
662 $(TCC) -o$@ -c verify_.c
663
664 verify_.c : $(SRCDIR)\verify.c
@@ -705,7 +711,7 @@
711
712 zip_.c : $(SRCDIR)\zip.c
713 +translate$E $** > $@
714
715 headers: makeheaders$E page_index.h VERSION.h
716 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
717 @copy /Y nul: headers
718
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -313,10 +313,11 @@
313313
$(SRCDIR)/tktsetup.c \
314314
$(SRCDIR)/undo.c \
315315
$(SRCDIR)/update.c \
316316
$(SRCDIR)/url.c \
317317
$(SRCDIR)/user.c \
318
+ $(SRCDIR)/utf8.c \
318319
$(SRCDIR)/verify.c \
319320
$(SRCDIR)/vfile.c \
320321
$(SRCDIR)/wiki.c \
321322
$(SRCDIR)/wikiformat.c \
322323
$(SRCDIR)/winhttp.c \
@@ -414,10 +415,11 @@
414415
$(OBJDIR)/tktsetup_.c \
415416
$(OBJDIR)/undo_.c \
416417
$(OBJDIR)/update_.c \
417418
$(OBJDIR)/url_.c \
418419
$(OBJDIR)/user_.c \
420
+ $(OBJDIR)/utf8_.c \
419421
$(OBJDIR)/verify_.c \
420422
$(OBJDIR)/vfile_.c \
421423
$(OBJDIR)/wiki_.c \
422424
$(OBJDIR)/wikiformat_.c \
423425
$(OBJDIR)/winhttp_.c \
@@ -515,10 +517,11 @@
515517
$(OBJDIR)/tktsetup.o \
516518
$(OBJDIR)/undo.o \
517519
$(OBJDIR)/update.o \
518520
$(OBJDIR)/url.o \
519521
$(OBJDIR)/user.o \
522
+ $(OBJDIR)/utf8.o \
520523
$(OBJDIR)/verify.o \
521524
$(OBJDIR)/vfile.o \
522525
$(OBJDIR)/wiki.o \
523526
$(OBJDIR)/wikiformat.o \
524527
$(OBJDIR)/winhttp.o \
@@ -639,11 +642,11 @@
639642
640643
$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
641644
$(MKINDEX) $(TRANS_SRC) >$@
642645
643646
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
644
- $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
647
+ $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/utf8_.c:$(OBJDIR)/utf8.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
645648
echo Done >$(OBJDIR)/headers
646649
647650
$(OBJDIR)/headers: Makefile
648651
649652
Makefile:
@@ -1365,10 +1368,18 @@
13651368
13661369
$(OBJDIR)/user.o: $(OBJDIR)/user_.c $(OBJDIR)/user.h $(SRCDIR)/config.h
13671370
$(XTCC) -o $(OBJDIR)/user.o -c $(OBJDIR)/user_.c
13681371
13691372
$(OBJDIR)/user.h: $(OBJDIR)/headers
1373
+
1374
+$(OBJDIR)/utf8_.c: $(SRCDIR)/utf8.c $(OBJDIR)/translate
1375
+ $(TRANSLATE) $(SRCDIR)/utf8.c >$(OBJDIR)/utf8_.c
1376
+
1377
+$(OBJDIR)/utf8.o: $(OBJDIR)/utf8_.c $(OBJDIR)/utf8.h $(SRCDIR)/config.h
1378
+ $(XTCC) -o $(OBJDIR)/utf8.o -c $(OBJDIR)/utf8_.c
1379
+
1380
+$(OBJDIR)/utf8.h: $(OBJDIR)/headers
13701381
13711382
$(OBJDIR)/verify_.c: $(SRCDIR)/verify.c $(OBJDIR)/translate
13721383
$(TRANSLATE) $(SRCDIR)/verify.c >$(OBJDIR)/verify_.c
13731384
13741385
$(OBJDIR)/verify.o: $(OBJDIR)/verify_.c $(OBJDIR)/verify.h $(SRCDIR)/config.h
13751386
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -313,10 +313,11 @@
313 $(SRCDIR)/tktsetup.c \
314 $(SRCDIR)/undo.c \
315 $(SRCDIR)/update.c \
316 $(SRCDIR)/url.c \
317 $(SRCDIR)/user.c \
 
318 $(SRCDIR)/verify.c \
319 $(SRCDIR)/vfile.c \
320 $(SRCDIR)/wiki.c \
321 $(SRCDIR)/wikiformat.c \
322 $(SRCDIR)/winhttp.c \
@@ -414,10 +415,11 @@
414 $(OBJDIR)/tktsetup_.c \
415 $(OBJDIR)/undo_.c \
416 $(OBJDIR)/update_.c \
417 $(OBJDIR)/url_.c \
418 $(OBJDIR)/user_.c \
 
419 $(OBJDIR)/verify_.c \
420 $(OBJDIR)/vfile_.c \
421 $(OBJDIR)/wiki_.c \
422 $(OBJDIR)/wikiformat_.c \
423 $(OBJDIR)/winhttp_.c \
@@ -515,10 +517,11 @@
515 $(OBJDIR)/tktsetup.o \
516 $(OBJDIR)/undo.o \
517 $(OBJDIR)/update.o \
518 $(OBJDIR)/url.o \
519 $(OBJDIR)/user.o \
 
520 $(OBJDIR)/verify.o \
521 $(OBJDIR)/vfile.o \
522 $(OBJDIR)/wiki.o \
523 $(OBJDIR)/wikiformat.o \
524 $(OBJDIR)/winhttp.o \
@@ -639,11 +642,11 @@
639
640 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
641 $(MKINDEX) $(TRANS_SRC) >$@
642
643 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
644 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
645 echo Done >$(OBJDIR)/headers
646
647 $(OBJDIR)/headers: Makefile
648
649 Makefile:
@@ -1365,10 +1368,18 @@
1365
1366 $(OBJDIR)/user.o: $(OBJDIR)/user_.c $(OBJDIR)/user.h $(SRCDIR)/config.h
1367 $(XTCC) -o $(OBJDIR)/user.o -c $(OBJDIR)/user_.c
1368
1369 $(OBJDIR)/user.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1370
1371 $(OBJDIR)/verify_.c: $(SRCDIR)/verify.c $(OBJDIR)/translate
1372 $(TRANSLATE) $(SRCDIR)/verify.c >$(OBJDIR)/verify_.c
1373
1374 $(OBJDIR)/verify.o: $(OBJDIR)/verify_.c $(OBJDIR)/verify.h $(SRCDIR)/config.h
1375
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -313,10 +313,11 @@
313 $(SRCDIR)/tktsetup.c \
314 $(SRCDIR)/undo.c \
315 $(SRCDIR)/update.c \
316 $(SRCDIR)/url.c \
317 $(SRCDIR)/user.c \
318 $(SRCDIR)/utf8.c \
319 $(SRCDIR)/verify.c \
320 $(SRCDIR)/vfile.c \
321 $(SRCDIR)/wiki.c \
322 $(SRCDIR)/wikiformat.c \
323 $(SRCDIR)/winhttp.c \
@@ -414,10 +415,11 @@
415 $(OBJDIR)/tktsetup_.c \
416 $(OBJDIR)/undo_.c \
417 $(OBJDIR)/update_.c \
418 $(OBJDIR)/url_.c \
419 $(OBJDIR)/user_.c \
420 $(OBJDIR)/utf8_.c \
421 $(OBJDIR)/verify_.c \
422 $(OBJDIR)/vfile_.c \
423 $(OBJDIR)/wiki_.c \
424 $(OBJDIR)/wikiformat_.c \
425 $(OBJDIR)/winhttp_.c \
@@ -515,10 +517,11 @@
517 $(OBJDIR)/tktsetup.o \
518 $(OBJDIR)/undo.o \
519 $(OBJDIR)/update.o \
520 $(OBJDIR)/url.o \
521 $(OBJDIR)/user.o \
522 $(OBJDIR)/utf8.o \
523 $(OBJDIR)/verify.o \
524 $(OBJDIR)/vfile.o \
525 $(OBJDIR)/wiki.o \
526 $(OBJDIR)/wikiformat.o \
527 $(OBJDIR)/winhttp.o \
@@ -639,11 +642,11 @@
642
643 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
644 $(MKINDEX) $(TRANS_SRC) >$@
645
646 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
647 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/moderate_.c:$(OBJDIR)/moderate.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/utf8_.c:$(OBJDIR)/utf8.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
648 echo Done >$(OBJDIR)/headers
649
650 $(OBJDIR)/headers: Makefile
651
652 Makefile:
@@ -1365,10 +1368,18 @@
1368
1369 $(OBJDIR)/user.o: $(OBJDIR)/user_.c $(OBJDIR)/user.h $(SRCDIR)/config.h
1370 $(XTCC) -o $(OBJDIR)/user.o -c $(OBJDIR)/user_.c
1371
1372 $(OBJDIR)/user.h: $(OBJDIR)/headers
1373
1374 $(OBJDIR)/utf8_.c: $(SRCDIR)/utf8.c $(OBJDIR)/translate
1375 $(TRANSLATE) $(SRCDIR)/utf8.c >$(OBJDIR)/utf8_.c
1376
1377 $(OBJDIR)/utf8.o: $(OBJDIR)/utf8_.c $(OBJDIR)/utf8.h $(SRCDIR)/config.h
1378 $(XTCC) -o $(OBJDIR)/utf8.o -c $(OBJDIR)/utf8_.c
1379
1380 $(OBJDIR)/utf8.h: $(OBJDIR)/headers
1381
1382 $(OBJDIR)/verify_.c: $(SRCDIR)/verify.c $(OBJDIR)/translate
1383 $(TRANSLATE) $(SRCDIR)/verify.c >$(OBJDIR)/verify_.c
1384
1385 $(OBJDIR)/verify.o: $(OBJDIR)/verify_.c $(OBJDIR)/verify.h $(SRCDIR)/config.h
1386
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -128,10 +128,11 @@
128128
tktsetup_.c \
129129
undo_.c \
130130
update_.c \
131131
url_.c \
132132
user_.c \
133
+ utf8_.c \
133134
verify_.c \
134135
vfile_.c \
135136
wiki_.c \
136137
wikiformat_.c \
137138
winhttp_.c \
@@ -228,10 +229,11 @@
228229
$(OX)\tktsetup$O \
229230
$(OX)\undo$O \
230231
$(OX)\update$O \
231232
$(OX)\url$O \
232233
$(OX)\user$O \
234
+ $(OX)\utf8$O \
233235
$(OX)\verify$O \
234236
$(OX)\vfile$O \
235237
$(OX)\wiki$O \
236238
$(OX)\wikiformat$O \
237239
$(OX)\winhttp$O \
@@ -349,10 +351,11 @@
349351
echo $(OX)\tktsetup.obj >> $@
350352
echo $(OX)\undo.obj >> $@
351353
echo $(OX)\update.obj >> $@
352354
echo $(OX)\url.obj >> $@
353355
echo $(OX)\user.obj >> $@
356
+ echo $(OX)\utf8.obj >> $@
354357
echo $(OX)\verify.obj >> $@
355358
echo $(OX)\vfile.obj >> $@
356359
echo $(OX)\wiki.obj >> $@
357360
echo $(OX)\wikiformat.obj >> $@
358361
echo $(OX)\winhttp.obj >> $@
@@ -970,10 +973,16 @@
970973
$(OX)\user$O : user_.c user.h
971974
$(TCC) /Fo$@ -c user_.c
972975
973976
user_.c : $(SRCDIR)\user.c
974977
translate$E $** > $@
978
+
979
+$(OX)\utf8$O : utf8_.c utf8.h
980
+ $(TCC) /Fo$@ -c utf8_.c
981
+
982
+utf8_.c : $(SRCDIR)\utf8.c
983
+ translate$E $** > $@
975984
976985
$(OX)\verify$O : verify_.c verify.h
977986
$(TCC) /Fo$@ -c verify_.c
978987
979988
verify_.c : $(SRCDIR)\verify.c
@@ -1116,10 +1125,11 @@
11161125
tktsetup_.c:tktsetup.h \
11171126
undo_.c:undo.h \
11181127
update_.c:update.h \
11191128
url_.c:url.h \
11201129
user_.c:user.h \
1130
+ utf8_.c:utf8.h \
11211131
verify_.c:verify.h \
11221132
vfile_.c:vfile.h \
11231133
wiki_.c:wiki.h \
11241134
wikiformat_.c:wikiformat.h \
11251135
winhttp_.c:winhttp.h \
11261136
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -128,10 +128,11 @@
128 tktsetup_.c \
129 undo_.c \
130 update_.c \
131 url_.c \
132 user_.c \
 
133 verify_.c \
134 vfile_.c \
135 wiki_.c \
136 wikiformat_.c \
137 winhttp_.c \
@@ -228,10 +229,11 @@
228 $(OX)\tktsetup$O \
229 $(OX)\undo$O \
230 $(OX)\update$O \
231 $(OX)\url$O \
232 $(OX)\user$O \
 
233 $(OX)\verify$O \
234 $(OX)\vfile$O \
235 $(OX)\wiki$O \
236 $(OX)\wikiformat$O \
237 $(OX)\winhttp$O \
@@ -349,10 +351,11 @@
349 echo $(OX)\tktsetup.obj >> $@
350 echo $(OX)\undo.obj >> $@
351 echo $(OX)\update.obj >> $@
352 echo $(OX)\url.obj >> $@
353 echo $(OX)\user.obj >> $@
 
354 echo $(OX)\verify.obj >> $@
355 echo $(OX)\vfile.obj >> $@
356 echo $(OX)\wiki.obj >> $@
357 echo $(OX)\wikiformat.obj >> $@
358 echo $(OX)\winhttp.obj >> $@
@@ -970,10 +973,16 @@
970 $(OX)\user$O : user_.c user.h
971 $(TCC) /Fo$@ -c user_.c
972
973 user_.c : $(SRCDIR)\user.c
974 translate$E $** > $@
 
 
 
 
 
 
975
976 $(OX)\verify$O : verify_.c verify.h
977 $(TCC) /Fo$@ -c verify_.c
978
979 verify_.c : $(SRCDIR)\verify.c
@@ -1116,10 +1125,11 @@
1116 tktsetup_.c:tktsetup.h \
1117 undo_.c:undo.h \
1118 update_.c:update.h \
1119 url_.c:url.h \
1120 user_.c:user.h \
 
1121 verify_.c:verify.h \
1122 vfile_.c:vfile.h \
1123 wiki_.c:wiki.h \
1124 wikiformat_.c:wikiformat.h \
1125 winhttp_.c:winhttp.h \
1126
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -128,10 +128,11 @@
128 tktsetup_.c \
129 undo_.c \
130 update_.c \
131 url_.c \
132 user_.c \
133 utf8_.c \
134 verify_.c \
135 vfile_.c \
136 wiki_.c \
137 wikiformat_.c \
138 winhttp_.c \
@@ -228,10 +229,11 @@
229 $(OX)\tktsetup$O \
230 $(OX)\undo$O \
231 $(OX)\update$O \
232 $(OX)\url$O \
233 $(OX)\user$O \
234 $(OX)\utf8$O \
235 $(OX)\verify$O \
236 $(OX)\vfile$O \
237 $(OX)\wiki$O \
238 $(OX)\wikiformat$O \
239 $(OX)\winhttp$O \
@@ -349,10 +351,11 @@
351 echo $(OX)\tktsetup.obj >> $@
352 echo $(OX)\undo.obj >> $@
353 echo $(OX)\update.obj >> $@
354 echo $(OX)\url.obj >> $@
355 echo $(OX)\user.obj >> $@
356 echo $(OX)\utf8.obj >> $@
357 echo $(OX)\verify.obj >> $@
358 echo $(OX)\vfile.obj >> $@
359 echo $(OX)\wiki.obj >> $@
360 echo $(OX)\wikiformat.obj >> $@
361 echo $(OX)\winhttp.obj >> $@
@@ -970,10 +973,16 @@
973 $(OX)\user$O : user_.c user.h
974 $(TCC) /Fo$@ -c user_.c
975
976 user_.c : $(SRCDIR)\user.c
977 translate$E $** > $@
978
979 $(OX)\utf8$O : utf8_.c utf8.h
980 $(TCC) /Fo$@ -c utf8_.c
981
982 utf8_.c : $(SRCDIR)\utf8.c
983 translate$E $** > $@
984
985 $(OX)\verify$O : verify_.c verify.h
986 $(TCC) /Fo$@ -c verify_.c
987
988 verify_.c : $(SRCDIR)\verify.c
@@ -1116,10 +1125,11 @@
1125 tktsetup_.c:tktsetup.h \
1126 undo_.c:undo.h \
1127 update_.c:update.h \
1128 url_.c:url.h \
1129 user_.c:user.h \
1130 utf8_.c:utf8.h \
1131 verify_.c:verify.h \
1132 vfile_.c:vfile.h \
1133 wiki_.c:wiki.h \
1134 wikiformat_.c:wikiformat.h \
1135 winhttp_.c:winhttp.h \
1136

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button