| | @@ -517,10 +517,11 @@ |
| 517 | 517 | break; |
| 518 | 518 | } |
| 519 | 519 | blob_append(&reply, zIn, -1); |
| 520 | 520 | } |
| 521 | 521 | } |
| 522 | + blob_strip_bom(&reply, 1); |
| 522 | 523 | blob_remove_cr(&reply); |
| 523 | 524 | file_delete(zFile); |
| 524 | 525 | free(zFile); |
| 525 | 526 | blob_zero(pComment); |
| 526 | 527 | while( blob_line(&reply, &line) ){ |
| | @@ -1183,10 +1184,11 @@ |
| 1183 | 1184 | blob_zero(&comment); |
| 1184 | 1185 | blob_append(&comment, zComment, -1); |
| 1185 | 1186 | }else if( zComFile ){ |
| 1186 | 1187 | blob_zero(&comment); |
| 1187 | 1188 | blob_read_from_file(&comment, zComFile); |
| 1189 | + blob_strip_bom(&comment, 1); |
| 1188 | 1190 | }else{ |
| 1189 | 1191 | char *zInit = db_text(0, "SELECT value FROM vvar WHERE name='ci-comment'"); |
| 1190 | 1192 | prepare_commit_comment(&comment, zInit, zBranch, vid, zUserOvrd); |
| 1191 | 1193 | if( zInit && zInit[0] && fossil_strcmp(zInit, blob_str(&comment))==0 ){ |
| 1192 | 1194 | Blob ans; |
| | @@ -1202,61 +1204,10 @@ |
| 1202 | 1204 | prompt_user("empty check-in comment. continue (y/N)? ", &ans); |
| 1203 | 1205 | if( blob_str(&ans)[0]!='y' ){ |
| 1204 | 1206 | fossil_exit(1); |
| 1205 | 1207 | } |
| 1206 | 1208 | }else{ |
| 1207 | | -#ifdef _WIN32 |
| 1208 | | - /* On windows, the check-in comment might come back from the editor |
| 1209 | | - ** in various encodings. Try to figure out the encoding and do the |
| 1210 | | - ** right thing. */ |
| 1211 | | - if( zComment==0 ){ |
| 1212 | | - static const unsigned char bom[] = { 0xEF, 0xBB, 0xBF }; |
| 1213 | | - static const unsigned short ubom = 0xfeff; |
| 1214 | | - static const unsigned short urbom = 0xfffe; |
| 1215 | | - if( blob_size(&comment)>2 && memcmp(blob_buffer(&comment), bom, 3)==0 ) { |
| 1216 | | - struct Blob temp; |
| 1217 | | - char *zUtf8 = blob_str(&comment) + 3; |
| 1218 | | - blob_zero(&temp); |
| 1219 | | - blob_append(&temp, zUtf8, -1); |
| 1220 | | - fossil_mbcs_free(zUtf8); |
| 1221 | | - blob_swap(&temp, &comment); |
| 1222 | | - blob_reset(&temp); |
| 1223 | | - }else if( blob_size(&comment)>1 && (blob_size(&comment)&1)==0 |
| 1224 | | - && memcmp(blob_buffer(&comment), &ubom, 2)==0 ) { |
| 1225 | | - char *zUtf8; |
| 1226 | | - /* Make sure the blob contains two terminating 0-bytes */ |
| 1227 | | - blob_append(&comment, "", 1); |
| 1228 | | - zUtf8 = blob_str(&comment) + 2; |
| 1229 | | - zUtf8 = fossil_unicode_to_utf8(zUtf8); |
| 1230 | | - blob_zero(&comment); |
| 1231 | | - blob_append(&comment, zUtf8, -1); |
| 1232 | | - fossil_mbcs_free(zUtf8); |
| 1233 | | - }else if( blob_size(&comment)>1 && (blob_size(&comment)&1)==0 |
| 1234 | | - && memcmp(blob_buffer(&comment), &urbom, 2)==0 ) { |
| 1235 | | - char *zUtf8 = blob_buffer(&comment); |
| 1236 | | - unsigned int i = blob_size(&comment); |
| 1237 | | - while( i > 0 ){ |
| 1238 | | - /* swap bytes of unicode representation */ |
| 1239 | | - char temp = zUtf8[--i]; |
| 1240 | | - zUtf8[i] = zUtf8[i-1]; |
| 1241 | | - zUtf8[--i] = temp; |
| 1242 | | - } |
| 1243 | | - /* Make sure the blob contains two terminating 0-bytes */ |
| 1244 | | - blob_append(&comment, "", 1); |
| 1245 | | - zUtf8 = blob_str(&comment) + 2; |
| 1246 | | - zUtf8 = fossil_unicode_to_utf8(zUtf8); |
| 1247 | | - blob_zero(&comment); |
| 1248 | | - blob_append(&comment, zUtf8, -1); |
| 1249 | | - fossil_mbcs_free(zUtf8); |
| 1250 | | - }else{ |
| 1251 | | - char *zUtf8 = fossil_mbcs_to_utf8(blob_str(&comment)); |
| 1252 | | - blob_zero(&comment); |
| 1253 | | - blob_append(&comment, zUtf8, -1); |
| 1254 | | - fossil_mbcs_free(zUtf8); |
| 1255 | | - } |
| 1256 | | - } |
| 1257 | | -#endif /* _WIN32 */ |
| 1258 | 1209 | db_multi_exec("REPLACE INTO vvar VALUES('ci-comment',%B)", &comment); |
| 1259 | 1210 | db_end_transaction(0); |
| 1260 | 1211 | db_begin_transaction(); |
| 1261 | 1212 | } |
| 1262 | 1213 | |
| 1263 | 1214 | |