Fossil SCM
Further improvements to the file name escaping on Windows.
Commit
9519c22556c627a79bed1b3873f7a07e32353f6a26188b78ec11d5835bfa772c
Parent
23fc63e45b5135a…
1 file changed
+7
-3
+7
-3
| --- src/blob.c | ||
| +++ src/blob.c | ||
| @@ -1330,15 +1330,19 @@ | ||
| 1330 | 1330 | } |
| 1331 | 1331 | if( needEscape ) blob_append_char(pBlob, cQuote); |
| 1332 | 1332 | if( zIn[0]=='-' ){ |
| 1333 | 1333 | blob_append_char(pBlob, '.'); |
| 1334 | 1334 | blob_append_char(pBlob, cDirSep); |
| 1335 | +#if defined(_WIN32) | |
| 1336 | + }else if( zIn[0]=='/' ){ | |
| 1337 | + blob_append_char(pBlob, '.'); | |
| 1338 | +#endif | |
| 1335 | 1339 | } |
| 1336 | 1340 | #if defined(_WIN32) |
| 1337 | 1341 | if( needEscape ){ |
| 1338 | 1342 | for(i=0; (c = zIn[i])!=0; i++){ |
| 1339 | - if( c==cQuote || c==cEscape ) blob_append_char(pBlob, cEscape); | |
| 1343 | + if( c==cQuote ) blob_append_char(pBlob, cDirSep); | |
| 1340 | 1344 | blob_append_char(pBlob, c); |
| 1341 | 1345 | } |
| 1342 | 1346 | }else{ |
| 1343 | 1347 | blob_append(pBlob, zIn, -1); |
| 1344 | 1348 | } |
| @@ -1346,12 +1350,12 @@ | ||
| 1346 | 1350 | blob_append(pBlob, zIn, -1); |
| 1347 | 1351 | #endif |
| 1348 | 1352 | if( needEscape ){ |
| 1349 | 1353 | #if defined(_WIN32) |
| 1350 | 1354 | /* NOTE: Trailing backslash must be doubled before final double quote. */ |
| 1351 | - if( pBlob->aData[pBlob->nUsed-1]==cEscape ){ | |
| 1352 | - blob_append_char(pBlob, cEscape); | |
| 1355 | + if( pBlob->aData[pBlob->nUsed-1]==cDirSep ){ | |
| 1356 | + blob_append_char(pBlob, cDirSep); | |
| 1353 | 1357 | } |
| 1354 | 1358 | #endif |
| 1355 | 1359 | blob_append_char(pBlob, cQuote); |
| 1356 | 1360 | } |
| 1357 | 1361 | } |
| 1358 | 1362 |
| --- src/blob.c | |
| +++ src/blob.c | |
| @@ -1330,15 +1330,19 @@ | |
| 1330 | } |
| 1331 | if( needEscape ) blob_append_char(pBlob, cQuote); |
| 1332 | if( zIn[0]=='-' ){ |
| 1333 | blob_append_char(pBlob, '.'); |
| 1334 | blob_append_char(pBlob, cDirSep); |
| 1335 | } |
| 1336 | #if defined(_WIN32) |
| 1337 | if( needEscape ){ |
| 1338 | for(i=0; (c = zIn[i])!=0; i++){ |
| 1339 | if( c==cQuote || c==cEscape ) blob_append_char(pBlob, cEscape); |
| 1340 | blob_append_char(pBlob, c); |
| 1341 | } |
| 1342 | }else{ |
| 1343 | blob_append(pBlob, zIn, -1); |
| 1344 | } |
| @@ -1346,12 +1350,12 @@ | |
| 1346 | blob_append(pBlob, zIn, -1); |
| 1347 | #endif |
| 1348 | if( needEscape ){ |
| 1349 | #if defined(_WIN32) |
| 1350 | /* NOTE: Trailing backslash must be doubled before final double quote. */ |
| 1351 | if( pBlob->aData[pBlob->nUsed-1]==cEscape ){ |
| 1352 | blob_append_char(pBlob, cEscape); |
| 1353 | } |
| 1354 | #endif |
| 1355 | blob_append_char(pBlob, cQuote); |
| 1356 | } |
| 1357 | } |
| 1358 |
| --- src/blob.c | |
| +++ src/blob.c | |
| @@ -1330,15 +1330,19 @@ | |
| 1330 | } |
| 1331 | if( needEscape ) blob_append_char(pBlob, cQuote); |
| 1332 | if( zIn[0]=='-' ){ |
| 1333 | blob_append_char(pBlob, '.'); |
| 1334 | blob_append_char(pBlob, cDirSep); |
| 1335 | #if defined(_WIN32) |
| 1336 | }else if( zIn[0]=='/' ){ |
| 1337 | blob_append_char(pBlob, '.'); |
| 1338 | #endif |
| 1339 | } |
| 1340 | #if defined(_WIN32) |
| 1341 | if( needEscape ){ |
| 1342 | for(i=0; (c = zIn[i])!=0; i++){ |
| 1343 | if( c==cQuote ) blob_append_char(pBlob, cDirSep); |
| 1344 | blob_append_char(pBlob, c); |
| 1345 | } |
| 1346 | }else{ |
| 1347 | blob_append(pBlob, zIn, -1); |
| 1348 | } |
| @@ -1346,12 +1350,12 @@ | |
| 1350 | blob_append(pBlob, zIn, -1); |
| 1351 | #endif |
| 1352 | if( needEscape ){ |
| 1353 | #if defined(_WIN32) |
| 1354 | /* NOTE: Trailing backslash must be doubled before final double quote. */ |
| 1355 | if( pBlob->aData[pBlob->nUsed-1]==cDirSep ){ |
| 1356 | blob_append_char(pBlob, cDirSep); |
| 1357 | } |
| 1358 | #endif |
| 1359 | blob_append_char(pBlob, cQuote); |
| 1360 | } |
| 1361 | } |
| 1362 |