Fossil SCM

Allow looks_like_utf8/16 to specify when the loop should stop, in stead of leaving it unspecified. Minor comment/doc fixes.

jan.nijtmans 2013-03-27 09:45 trunk
Commit 79f7eb2fc5c906cbc3fb3df8bc25fb49e7242ed2
+5 -5
--- src/checkin.c
+++ src/checkin.c
@@ -635,11 +635,11 @@
635635
file_tree_name(g.argv[ii], &b, 1);
636636
iId = db_int(-1, "SELECT id FROM vfile WHERE pathname=%Q", blob_str(&b));
637637
if( iId<0 ){
638638
fossil_warning("fossil knows nothing about: %s", g.argv[ii]);
639639
result = 1;
640
- } else {
640
+ }else{
641641
g.aCommitFile[jj++] = iId;
642642
}
643643
blob_reset(&b);
644644
}
645645
g.aCommitFile[jj] = 0;
@@ -915,13 +915,13 @@
915915
static int allOk = 0; /* Set to true to disable this routine */
916916
917917
if( allOk ) return 0;
918918
fUnicode = could_be_utf16(p, &bReverse);
919919
if( fUnicode ){
920
- lookFlags = looks_like_utf16(p, bReverse);
920
+ lookFlags = looks_like_utf16(p, bReverse, LOOK_NUL);
921921
}else{
922
- lookFlags = looks_like_utf8(p);
922
+ lookFlags = looks_like_utf8(p, LOOK_NUL);
923923
}
924924
if( lookFlags&(LOOK_BINARY|LOOK_LONG|LOOK_CR) || fUnicode ){
925925
const char *zWarning;
926926
const char *zDisable;
927927
const char *zConvert = "c=convert/";
@@ -940,11 +940,11 @@
940940
}else{
941941
zWarning = "binary data";
942942
zConvert = ""; /* We cannot convert binary files. */
943943
}
944944
zDisable = "\"binary-glob\" setting";
945
- }else if( lookFlags&(LOOK_CR) && fUnicode ){
945
+ }else if( (lookFlags&LOOK_CR) && fUnicode ){
946946
if( crnlOk && encodingOk ){
947947
return 0; /* We don't want CR/NL and Unicode warnings for this file. */
948948
}
949949
if( (lookFlags&LOOK_EOL) == LOOK_LONE_CR ){
950950
zWarning = "CR line endings and Unicode";
@@ -1407,11 +1407,11 @@
14071407
}
14081408
db_finalize(&q);
14091409
if( nConflict && !allowConflict ){
14101410
fossil_fatal("abort due to unresolved merge conflicts; "
14111411
"use --allow-conflict to override");
1412
- } else if( abortCommit ){
1412
+ }else if( abortCommit ){
14131413
fossil_fatal("one or more files were converted on your request; "
14141414
"please re-test before committing");
14151415
}
14161416
14171417
/* Create the new manifest */
14181418
--- src/checkin.c
+++ src/checkin.c
@@ -635,11 +635,11 @@
635 file_tree_name(g.argv[ii], &b, 1);
636 iId = db_int(-1, "SELECT id FROM vfile WHERE pathname=%Q", blob_str(&b));
637 if( iId<0 ){
638 fossil_warning("fossil knows nothing about: %s", g.argv[ii]);
639 result = 1;
640 } else {
641 g.aCommitFile[jj++] = iId;
642 }
643 blob_reset(&b);
644 }
645 g.aCommitFile[jj] = 0;
@@ -915,13 +915,13 @@
915 static int allOk = 0; /* Set to true to disable this routine */
916
917 if( allOk ) return 0;
918 fUnicode = could_be_utf16(p, &bReverse);
919 if( fUnicode ){
920 lookFlags = looks_like_utf16(p, bReverse);
921 }else{
922 lookFlags = looks_like_utf8(p);
923 }
924 if( lookFlags&(LOOK_BINARY|LOOK_LONG|LOOK_CR) || fUnicode ){
925 const char *zWarning;
926 const char *zDisable;
927 const char *zConvert = "c=convert/";
@@ -940,11 +940,11 @@
940 }else{
941 zWarning = "binary data";
942 zConvert = ""; /* We cannot convert binary files. */
943 }
944 zDisable = "\"binary-glob\" setting";
945 }else if( lookFlags&(LOOK_CR) && fUnicode ){
946 if( crnlOk && encodingOk ){
947 return 0; /* We don't want CR/NL and Unicode warnings for this file. */
948 }
949 if( (lookFlags&LOOK_EOL) == LOOK_LONE_CR ){
950 zWarning = "CR line endings and Unicode";
@@ -1407,11 +1407,11 @@
1407 }
1408 db_finalize(&q);
1409 if( nConflict && !allowConflict ){
1410 fossil_fatal("abort due to unresolved merge conflicts; "
1411 "use --allow-conflict to override");
1412 } else if( abortCommit ){
1413 fossil_fatal("one or more files were converted on your request; "
1414 "please re-test before committing");
1415 }
1416
1417 /* Create the new manifest */
1418
--- src/checkin.c
+++ src/checkin.c
@@ -635,11 +635,11 @@
635 file_tree_name(g.argv[ii], &b, 1);
636 iId = db_int(-1, "SELECT id FROM vfile WHERE pathname=%Q", blob_str(&b));
637 if( iId<0 ){
638 fossil_warning("fossil knows nothing about: %s", g.argv[ii]);
639 result = 1;
640 }else{
641 g.aCommitFile[jj++] = iId;
642 }
643 blob_reset(&b);
644 }
645 g.aCommitFile[jj] = 0;
@@ -915,13 +915,13 @@
915 static int allOk = 0; /* Set to true to disable this routine */
916
917 if( allOk ) return 0;
918 fUnicode = could_be_utf16(p, &bReverse);
919 if( fUnicode ){
920 lookFlags = looks_like_utf16(p, bReverse, LOOK_NUL);
921 }else{
922 lookFlags = looks_like_utf8(p, LOOK_NUL);
923 }
924 if( lookFlags&(LOOK_BINARY|LOOK_LONG|LOOK_CR) || fUnicode ){
925 const char *zWarning;
926 const char *zDisable;
927 const char *zConvert = "c=convert/";
@@ -940,11 +940,11 @@
940 }else{
941 zWarning = "binary data";
942 zConvert = ""; /* We cannot convert binary files. */
943 }
944 zDisable = "\"binary-glob\" setting";
945 }else if( (lookFlags&LOOK_CR) && fUnicode ){
946 if( crnlOk && encodingOk ){
947 return 0; /* We don't want CR/NL and Unicode warnings for this file. */
948 }
949 if( (lookFlags&LOOK_EOL) == LOOK_LONE_CR ){
950 zWarning = "CR line endings and Unicode";
@@ -1407,11 +1407,11 @@
1407 }
1408 db_finalize(&q);
1409 if( nConflict && !allowConflict ){
1410 fossil_fatal("abort due to unresolved merge conflicts; "
1411 "use --allow-conflict to override");
1412 }else if( abortCommit ){
1413 fossil_fatal("one or more files were converted on your request; "
1414 "please re-test before committing");
1415 }
1416
1417 /* Create the new manifest */
1418
+2 -2
--- src/db.c
+++ src/db.c
@@ -2186,12 +2186,12 @@
21862186
** clearsign When enabled, fossil will attempt to sign all commits
21872187
** with gpg. When disabled (the default), commits will
21882188
** be unsigned. Default: off
21892189
**
21902190
** crnl-glob A comma or newline-separated list of GLOB patterns for
2191
-** (versionable) text files in which it is ok to have CR+NL line endings.
2192
-** Set to "*" to disable CR+NL checking.
2191
+** (versionable) text files in which it is ok to have CR, CR+NL or mixed
2192
+** line endings. Set to "*" to disable CR+NL checking.
21932193
**
21942194
** default-perms Permissions given automatically to new users. For more
21952195
** information on permissions see Users page in Server
21962196
** Administration of the HTTP UI. Default: u.
21972197
**
21982198
--- src/db.c
+++ src/db.c
@@ -2186,12 +2186,12 @@
2186 ** clearsign When enabled, fossil will attempt to sign all commits
2187 ** with gpg. When disabled (the default), commits will
2188 ** be unsigned. Default: off
2189 **
2190 ** crnl-glob A comma or newline-separated list of GLOB patterns for
2191 ** (versionable) text files in which it is ok to have CR+NL line endings.
2192 ** Set to "*" to disable CR+NL checking.
2193 **
2194 ** default-perms Permissions given automatically to new users. For more
2195 ** information on permissions see Users page in Server
2196 ** Administration of the HTTP UI. Default: u.
2197 **
2198
--- src/db.c
+++ src/db.c
@@ -2186,12 +2186,12 @@
2186 ** clearsign When enabled, fossil will attempt to sign all commits
2187 ** with gpg. When disabled (the default), commits will
2188 ** be unsigned. Default: off
2189 **
2190 ** crnl-glob A comma or newline-separated list of GLOB patterns for
2191 ** (versionable) text files in which it is ok to have CR, CR+NL or mixed
2192 ** line endings. Set to "*" to disable CR+NL checking.
2193 **
2194 ** default-perms Permissions given automatically to new users. For more
2195 ** information on permissions see Users page in Server
2196 ** Administration of the HTTP UI. Default: u.
2197 **
2198
+11 -11
--- src/diff.c
+++ src/diff.c
@@ -61,11 +61,11 @@
6161
6262
/*
6363
** This macro is designed to return non-zero if the specified blob contains
6464
** data that MAY be binary in nature; otherwise, zero will be returned.
6565
*/
66
-#define looks_like_binary(blob) ((looks_like_utf8(blob)&LOOK_BINARY)!=LOOK_NONE)
66
+#define looks_like_binary(blob) ((looks_like_utf8(blob, LOOK_BINARY)&LOOK_BINARY)!=LOOK_NONE)
6767
6868
/*
6969
** Output flags for the looks_like_utf8() and looks_like_utf16() routines used
7070
** to convey status information about the blob content.
7171
*/
@@ -230,16 +230,16 @@
230230
** switches between UTF-8 and other encodings occur.
231231
**
232232
** The only code points that this function cares about are the NUL character,
233233
** carriage-return, and line-feed.
234234
**
235
-** Whether or not this function examines the entire contents of the blob is
236
-** officially unspecified.
235
+** This function examines the contents of the blob until one of the flags
236
+** specified in "stopFlags" is set.
237237
**
238238
************************************ WARNING **********************************
239239
*/
240
-int looks_like_utf8(const Blob *pContent){
240
+int looks_like_utf8(const Blob *pContent, int stopFlags){
241241
const char *z = blob_buffer(pContent);
242242
unsigned int n = blob_size(pContent);
243243
int j, c, flags = LOOK_NONE; /* Assume UTF-8 text, prove otherwise */
244244
245245
if( n==0 ) return flags; /* Empty file -> text */
@@ -252,11 +252,11 @@
252252
flags |= LOOK_LONE_CR; /* More chars, next char is not LF */
253253
}
254254
}
255255
j = (c!='\n');
256256
if( !j ) flags |= (LOOK_LF | LOOK_LONE_LF); /* Found LF as first char */
257
- while( --n>0 ){
257
+ while( !(flags&stopFlags) && --n>0 ){
258258
int c2 = c;
259259
c = *++z; ++j;
260260
if( c==0 ){
261261
flags |= LOOK_NUL; /* NUL character in a file -> binary */
262262
}else if( c=='\n' ){
@@ -334,16 +334,16 @@
334334
** switches between the UTF-16be and UTF-16le encodings occur.
335335
**
336336
** The only code points that this function cares about are the NUL character,
337337
** carriage-return, and line-feed.
338338
**
339
-** Whether or not this function examines the entire contents of the blob is
340
-** officially unspecified.
339
+** This function examines the contents of the blob until one of the flags
340
+** specified in "stopFlags" is set.
341341
**
342342
************************************ WARNING **********************************
343343
*/
344
-int looks_like_utf16(const Blob *pContent, int bReverse){
344
+int looks_like_utf16(const Blob *pContent, int bReverse, int stopFlags){
345345
const WCHAR_T *z = (WCHAR_T *)blob_buffer(pContent);
346346
unsigned int n = blob_size(pContent);
347347
int j, c, flags = LOOK_NONE; /* Assume UTF-16 text, prove otherwise */
348348
349349
if( n==0 ) return flags; /* Empty file -> text */
@@ -366,11 +366,11 @@
366366
j = (c!='\n');
367367
if( !j ) flags |= (LOOK_LF | LOOK_LONE_LF); /* Found LF as first char */
368368
while( 1 ){
369369
int c2 = c;
370370
n -= sizeof(WCHAR_T);
371
- if( n<sizeof(WCHAR_T) ) break;
371
+ if( (flags&stopFlags) || n<sizeof(WCHAR_T) ) break;
372372
c = *++z;
373373
if( bReverse ){
374374
c = UTF16_SWAP(c);
375375
}
376376
++j;
@@ -2541,12 +2541,12 @@
25412541
if( g.argc!=3 ) usage("FILENAME");
25422542
blob_read_from_file(&blob, g.argv[2]);
25432543
fUtf8 = starts_with_utf8_bom(&blob, 0);
25442544
fUtf16 = starts_with_utf16_bom(&blob, 0, &bRevUtf16);
25452545
fUnicode = could_be_utf16(&blob, &bRevUnicode);
2546
- lookFlags = fUnicode ? looks_like_utf16(&blob, bRevUnicode) :
2547
- looks_like_utf8(&blob);
2546
+ lookFlags = fUnicode ? looks_like_utf16(&blob, bRevUnicode, 0) :
2547
+ looks_like_utf8(&blob, 0);
25482548
fossil_print("File \"%s\" has %d bytes.\n",g.argv[2],blob_size(&blob));
25492549
fossil_print("Starts with UTF-8 BOM: %s\n",fUtf8?"yes":"no");
25502550
fossil_print("Starts with UTF-16 BOM: %s\n",
25512551
fUtf16?(bRevUtf16?"reversed":"yes"):"no");
25522552
fossil_print("Looks like UTF-%s: %s\n",fUnicode?"16":"8",
25532553
--- src/diff.c
+++ src/diff.c
@@ -61,11 +61,11 @@
61
62 /*
63 ** This macro is designed to return non-zero if the specified blob contains
64 ** data that MAY be binary in nature; otherwise, zero will be returned.
65 */
66 #define looks_like_binary(blob) ((looks_like_utf8(blob)&LOOK_BINARY)!=LOOK_NONE)
67
68 /*
69 ** Output flags for the looks_like_utf8() and looks_like_utf16() routines used
70 ** to convey status information about the blob content.
71 */
@@ -230,16 +230,16 @@
230 ** switches between UTF-8 and other encodings occur.
231 **
232 ** The only code points that this function cares about are the NUL character,
233 ** carriage-return, and line-feed.
234 **
235 ** Whether or not this function examines the entire contents of the blob is
236 ** officially unspecified.
237 **
238 ************************************ WARNING **********************************
239 */
240 int looks_like_utf8(const Blob *pContent){
241 const char *z = blob_buffer(pContent);
242 unsigned int n = blob_size(pContent);
243 int j, c, flags = LOOK_NONE; /* Assume UTF-8 text, prove otherwise */
244
245 if( n==0 ) return flags; /* Empty file -> text */
@@ -252,11 +252,11 @@
252 flags |= LOOK_LONE_CR; /* More chars, next char is not LF */
253 }
254 }
255 j = (c!='\n');
256 if( !j ) flags |= (LOOK_LF | LOOK_LONE_LF); /* Found LF as first char */
257 while( --n>0 ){
258 int c2 = c;
259 c = *++z; ++j;
260 if( c==0 ){
261 flags |= LOOK_NUL; /* NUL character in a file -> binary */
262 }else if( c=='\n' ){
@@ -334,16 +334,16 @@
334 ** switches between the UTF-16be and UTF-16le encodings occur.
335 **
336 ** The only code points that this function cares about are the NUL character,
337 ** carriage-return, and line-feed.
338 **
339 ** Whether or not this function examines the entire contents of the blob is
340 ** officially unspecified.
341 **
342 ************************************ WARNING **********************************
343 */
344 int looks_like_utf16(const Blob *pContent, int bReverse){
345 const WCHAR_T *z = (WCHAR_T *)blob_buffer(pContent);
346 unsigned int n = blob_size(pContent);
347 int j, c, flags = LOOK_NONE; /* Assume UTF-16 text, prove otherwise */
348
349 if( n==0 ) return flags; /* Empty file -> text */
@@ -366,11 +366,11 @@
366 j = (c!='\n');
367 if( !j ) flags |= (LOOK_LF | LOOK_LONE_LF); /* Found LF as first char */
368 while( 1 ){
369 int c2 = c;
370 n -= sizeof(WCHAR_T);
371 if( n<sizeof(WCHAR_T) ) break;
372 c = *++z;
373 if( bReverse ){
374 c = UTF16_SWAP(c);
375 }
376 ++j;
@@ -2541,12 +2541,12 @@
2541 if( g.argc!=3 ) usage("FILENAME");
2542 blob_read_from_file(&blob, g.argv[2]);
2543 fUtf8 = starts_with_utf8_bom(&blob, 0);
2544 fUtf16 = starts_with_utf16_bom(&blob, 0, &bRevUtf16);
2545 fUnicode = could_be_utf16(&blob, &bRevUnicode);
2546 lookFlags = fUnicode ? looks_like_utf16(&blob, bRevUnicode) :
2547 looks_like_utf8(&blob);
2548 fossil_print("File \"%s\" has %d bytes.\n",g.argv[2],blob_size(&blob));
2549 fossil_print("Starts with UTF-8 BOM: %s\n",fUtf8?"yes":"no");
2550 fossil_print("Starts with UTF-16 BOM: %s\n",
2551 fUtf16?(bRevUtf16?"reversed":"yes"):"no");
2552 fossil_print("Looks like UTF-%s: %s\n",fUnicode?"16":"8",
2553
--- src/diff.c
+++ src/diff.c
@@ -61,11 +61,11 @@
61
62 /*
63 ** This macro is designed to return non-zero if the specified blob contains
64 ** data that MAY be binary in nature; otherwise, zero will be returned.
65 */
66 #define looks_like_binary(blob) ((looks_like_utf8(blob, LOOK_BINARY)&LOOK_BINARY)!=LOOK_NONE)
67
68 /*
69 ** Output flags for the looks_like_utf8() and looks_like_utf16() routines used
70 ** to convey status information about the blob content.
71 */
@@ -230,16 +230,16 @@
230 ** switches between UTF-8 and other encodings occur.
231 **
232 ** The only code points that this function cares about are the NUL character,
233 ** carriage-return, and line-feed.
234 **
235 ** This function examines the contents of the blob until one of the flags
236 ** specified in "stopFlags" is set.
237 **
238 ************************************ WARNING **********************************
239 */
240 int looks_like_utf8(const Blob *pContent, int stopFlags){
241 const char *z = blob_buffer(pContent);
242 unsigned int n = blob_size(pContent);
243 int j, c, flags = LOOK_NONE; /* Assume UTF-8 text, prove otherwise */
244
245 if( n==0 ) return flags; /* Empty file -> text */
@@ -252,11 +252,11 @@
252 flags |= LOOK_LONE_CR; /* More chars, next char is not LF */
253 }
254 }
255 j = (c!='\n');
256 if( !j ) flags |= (LOOK_LF | LOOK_LONE_LF); /* Found LF as first char */
257 while( !(flags&stopFlags) && --n>0 ){
258 int c2 = c;
259 c = *++z; ++j;
260 if( c==0 ){
261 flags |= LOOK_NUL; /* NUL character in a file -> binary */
262 }else if( c=='\n' ){
@@ -334,16 +334,16 @@
334 ** switches between the UTF-16be and UTF-16le encodings occur.
335 **
336 ** The only code points that this function cares about are the NUL character,
337 ** carriage-return, and line-feed.
338 **
339 ** This function examines the contents of the blob until one of the flags
340 ** specified in "stopFlags" is set.
341 **
342 ************************************ WARNING **********************************
343 */
344 int looks_like_utf16(const Blob *pContent, int bReverse, int stopFlags){
345 const WCHAR_T *z = (WCHAR_T *)blob_buffer(pContent);
346 unsigned int n = blob_size(pContent);
347 int j, c, flags = LOOK_NONE; /* Assume UTF-16 text, prove otherwise */
348
349 if( n==0 ) return flags; /* Empty file -> text */
@@ -366,11 +366,11 @@
366 j = (c!='\n');
367 if( !j ) flags |= (LOOK_LF | LOOK_LONE_LF); /* Found LF as first char */
368 while( 1 ){
369 int c2 = c;
370 n -= sizeof(WCHAR_T);
371 if( (flags&stopFlags) || n<sizeof(WCHAR_T) ) break;
372 c = *++z;
373 if( bReverse ){
374 c = UTF16_SWAP(c);
375 }
376 ++j;
@@ -2541,12 +2541,12 @@
2541 if( g.argc!=3 ) usage("FILENAME");
2542 blob_read_from_file(&blob, g.argv[2]);
2543 fUtf8 = starts_with_utf8_bom(&blob, 0);
2544 fUtf16 = starts_with_utf16_bom(&blob, 0, &bRevUtf16);
2545 fUnicode = could_be_utf16(&blob, &bRevUnicode);
2546 lookFlags = fUnicode ? looks_like_utf16(&blob, bRevUnicode, 0) :
2547 looks_like_utf8(&blob, 0);
2548 fossil_print("File \"%s\" has %d bytes.\n",g.argv[2],blob_size(&blob));
2549 fossil_print("Starts with UTF-8 BOM: %s\n",fUtf8?"yes":"no");
2550 fossil_print("Starts with UTF-16 BOM: %s\n",
2551 fUtf16?(bRevUtf16?"reversed":"yes"):"no");
2552 fossil_print("Looks like UTF-%s: %s\n",fUnicode?"16":"8",
2553
+3 -3
--- src/utf8.c
+++ src/utf8.c
@@ -200,15 +200,15 @@
200200
++wUnicode;
201201
}
202202
nByte = cygwin_conv_path(CCP_WIN_W_TO_POSIX, zUnicode, NULL, 0);
203203
zPath = fossil_malloc(nByte);
204204
cygwin_conv_path(CCP_WIN_W_TO_POSIX, zUnicode, zPath, nByte);
205
- } else {
205
+ }else{
206206
zPath = fossil_strdup(zUtf8);
207207
zUtf8 = p = zPath;
208208
while( (*p = *zUtf8++) != 0){
209
- if (*p++ == '\\' ) {
209
+ if( *p++ == '\\' ) {
210210
p[-1] = '/';
211211
}
212212
}
213213
}
214214
return zPath;
@@ -262,11 +262,11 @@
262262
nChar = MultiByteToWideChar(CP_UTF8, 0, zUtf8, nByte, zUnicode, nChar);
263263
/* Split WriteConsoleW call into multiple chunks, if necessary. See:
264264
* <https://connect.microsoft.com/VisualStudio/feedback/details/635230> */
265265
while( written < nChar ){
266266
int size = nChar-written;
267
- if (size > 26000) size = 26000;
267
+ if( size > 26000 ) size = 26000;
268268
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE - toStdErr), zUnicode+written,
269269
size, &dummy, 0);
270270
written += size;
271271
}
272272
free(zUnicode);
273273
--- src/utf8.c
+++ src/utf8.c
@@ -200,15 +200,15 @@
200 ++wUnicode;
201 }
202 nByte = cygwin_conv_path(CCP_WIN_W_TO_POSIX, zUnicode, NULL, 0);
203 zPath = fossil_malloc(nByte);
204 cygwin_conv_path(CCP_WIN_W_TO_POSIX, zUnicode, zPath, nByte);
205 } else {
206 zPath = fossil_strdup(zUtf8);
207 zUtf8 = p = zPath;
208 while( (*p = *zUtf8++) != 0){
209 if (*p++ == '\\' ) {
210 p[-1] = '/';
211 }
212 }
213 }
214 return zPath;
@@ -262,11 +262,11 @@
262 nChar = MultiByteToWideChar(CP_UTF8, 0, zUtf8, nByte, zUnicode, nChar);
263 /* Split WriteConsoleW call into multiple chunks, if necessary. See:
264 * <https://connect.microsoft.com/VisualStudio/feedback/details/635230> */
265 while( written < nChar ){
266 int size = nChar-written;
267 if (size > 26000) size = 26000;
268 WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE - toStdErr), zUnicode+written,
269 size, &dummy, 0);
270 written += size;
271 }
272 free(zUnicode);
273
--- src/utf8.c
+++ src/utf8.c
@@ -200,15 +200,15 @@
200 ++wUnicode;
201 }
202 nByte = cygwin_conv_path(CCP_WIN_W_TO_POSIX, zUnicode, NULL, 0);
203 zPath = fossil_malloc(nByte);
204 cygwin_conv_path(CCP_WIN_W_TO_POSIX, zUnicode, zPath, nByte);
205 }else{
206 zPath = fossil_strdup(zUtf8);
207 zUtf8 = p = zPath;
208 while( (*p = *zUtf8++) != 0){
209 if( *p++ == '\\' ) {
210 p[-1] = '/';
211 }
212 }
213 }
214 return zPath;
@@ -262,11 +262,11 @@
262 nChar = MultiByteToWideChar(CP_UTF8, 0, zUtf8, nByte, zUnicode, nChar);
263 /* Split WriteConsoleW call into multiple chunks, if necessary. See:
264 * <https://connect.microsoft.com/VisualStudio/feedback/details/635230> */
265 while( written < nChar ){
266 int size = nChar-written;
267 if( size > 26000 ) size = 26000;
268 WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE - toStdErr), zUnicode+written,
269 size, &dummy, 0);
270 written += size;
271 }
272 free(zUnicode);
273
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,13 +1,15 @@
11
<title>Change Log</title>
22
33
<h2>Changes For Version 1.26 (as yet unreleased)</h2>
4
+ * Cygwin: Fossil now understands win32 absolute paths starting with a drive
5
+ letter everywhere. The default value of the "case-sensitive" setting is
6
+ now FALSE.
47
* Enhancements to /timeline.rss, adding more flags for filtering
58
results, including the ability to subscribe to changes made
69
to individual tickets. For example: [/timeline.rss?y=t&tkt=12fceeec82].
710
* JSON API: added the 'status' command to report local checkout status.
8
-
911
1012
<h2>Changes For Version 1.25 (2013-02-16)</h2>
1113
* Enhancements to ticket processing. There are now two tables: TICKET and
1214
TICKETCHNG. There is one row in TICKETCHNG for each ticket artifact.
1315
Fields from ticket artifacts go into either or both of TICKET and
1416
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,13 +1,15 @@
1 <title>Change Log</title>
2
3 <h2>Changes For Version 1.26 (as yet unreleased)</h2>
 
 
 
4 * Enhancements to /timeline.rss, adding more flags for filtering
5 results, including the ability to subscribe to changes made
6 to individual tickets. For example: [/timeline.rss?y=t&tkt=12fceeec82].
7 * JSON API: added the 'status' command to report local checkout status.
8
9
10 <h2>Changes For Version 1.25 (2013-02-16)</h2>
11 * Enhancements to ticket processing. There are now two tables: TICKET and
12 TICKETCHNG. There is one row in TICKETCHNG for each ticket artifact.
13 Fields from ticket artifacts go into either or both of TICKET and
14
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,13 +1,15 @@
1 <title>Change Log</title>
2
3 <h2>Changes For Version 1.26 (as yet unreleased)</h2>
4 * Cygwin: Fossil now understands win32 absolute paths starting with a drive
5 letter everywhere. The default value of the "case-sensitive" setting is
6 now FALSE.
7 * Enhancements to /timeline.rss, adding more flags for filtering
8 results, including the ability to subscribe to changes made
9 to individual tickets. For example: [/timeline.rss?y=t&tkt=12fceeec82].
10 * JSON API: added the 'status' command to report local checkout status.
 
11
12 <h2>Changes For Version 1.25 (2013-02-16)</h2>
13 * Enhancements to ticket processing. There are now two tables: TICKET and
14 TICKETCHNG. There is one row in TICKETCHNG for each ticket artifact.
15 Fields from ticket artifacts go into either or both of TICKET and
16

Keyboard Shortcuts

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