Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | EOL conversion: had neglected to pass that option on in the ajax request. Fixed a bug which caused duplicate CRs to get injected into force-to-windows-EOL conversions. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | fileedit-ajaxify |
Files: | files | file ages | folders |
SHA3-256: |
439f446df68406a52a676f1e27ad90f3 |
User & Date: | stephan 2020-05-14 23:34:29 |
Context
2020-05-15
| ||
01:35 | Fix a potential null deref in sample JS code. ... (check-in: d361947c user: stephan tags: fileedit-ajaxify) | |
2020-05-14
| ||
23:34 | EOL conversion: had neglected to pass that option on in the ajax request. Fixed a bug which caused duplicate CRs to get injected into force-to-windows-EOL conversions. ... (check-in: 439f446d user: stephan tags: fileedit-ajaxify) | |
15:10 | Restructured fileedit-page.md to give more space to/explanation of each caveat/warning bullet point (each of which is now in its own subsection). ... (check-in: 33146972 user: stephan tags: fileedit-ajaxify) | |
Changes
Changes to src/default_css.txt.
︙ | ︙ | |||
946 947 948 949 950 951 952 953 954 955 956 957 958 959 | } ////////////////////////////////// // Styles for /fileedit: body.fileedit textarea { font-family: monospace; width: 100%; flex: 10 1 auto; } body.fileedit fieldset { margin: 0.5em 0 0.5em 0; padding: 0.25em 0; border-radius: 0.5em; border-color: inherit; border-width: 1px; | > | 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 | } ////////////////////////////////// // Styles for /fileedit: body.fileedit textarea { font-family: monospace; width: 100%; flex: 10 1 auto; height: initial; } body.fileedit fieldset { margin: 0.5em 0 0.5em 0; padding: 0.25em 0; border-radius: 0.5em; border-color: inherit; border-width: 1px; |
︙ | ︙ |
Changes to src/fileedit.c.
︙ | ︙ | |||
581 582 583 584 585 586 587 | ** runs a risk of breaking content, e.g. string literals which ** contain embedded newlines. Note that HTML5 specifies that ** form-submitted TEXTAREA content gets normalized to CRLF-style: ** ** https://html.spec.whatwg.org/multipage/form-elements.html#the-textarea-element */ const int pseudoBinary = LOOK_LONG | LOOK_NUL; | | > > > | > > | > | 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 | ** runs a risk of breaking content, e.g. string literals which ** contain embedded newlines. Note that HTML5 specifies that ** form-submitted TEXTAREA content gets normalized to CRLF-style: ** ** https://html.spec.whatwg.org/multipage/form-elements.html#the-textarea-element */ const int pseudoBinary = LOOK_LONG | LOOK_NUL; const int lookFlags = LOOK_CRLF | LOOK_LONE_LF | pseudoBinary; const int lookNew = looks_like_utf8( &pCI->fileContent, lookFlags ); if(!(pseudoBinary & lookNew)){ int rehash = 0; /*fossil_print("lookNew=%08x\n",lookNew);*/ if(CIMINI_CONVERT_EOL_INHERIT & pCI->flags){ Blob contentPrev = empty_blob; int lookOrig, nOrig; content_get(prevFRid, &contentPrev); lookOrig = looks_like_utf8(&contentPrev, lookFlags); nOrig = blob_size(&contentPrev); blob_reset(&contentPrev); /*fossil_print("lookOrig=%08x\n",lookOrig);*/ if(nOrig>0 && lookOrig!=lookNew){ /* If there is a newline-style mismatch, adjust the new ** content version to the previous style, then re-hash the ** content. Note that this means that what we insert is NOT ** what's in the filesystem. */ if(!(lookOrig & LOOK_CRLF) && (lookNew & LOOK_CRLF)){ /* Old has Unix-style, new has Windows-style. */ blob_to_lf_only(&pCI->fileContent); rehash = 1; }else if((lookOrig & LOOK_CRLF) && !(lookNew & LOOK_CRLF)){ /* Old has Windows-style, new has Unix-style. */ blob_add_cr(&pCI->fileContent); rehash = 1; } } }else{ const int oldSize = blob_size(&pCI->fileContent); if(CIMINI_CONVERT_EOL_UNIX & pCI->flags){ if(LOOK_CRLF & lookNew){ blob_to_lf_only(&pCI->fileContent); } }else{ assert(CIMINI_CONVERT_EOL_WINDOWS & pCI->flags); if(!(LOOK_CRLF & lookNew)){ blob_add_cr(&pCI->fileContent); } } if(blob_size(&pCI->fileContent)!=oldSize){ rehash = 1; } } if(rehash!=0){ hname_hash(&pCI->fileContent, 0, &pCI->fileHash); |
︙ | ︙ | |||
717 718 719 720 721 722 723 | ** appears to contain a fossil merge conflict ** marker. ** --user-override USER USER to use instead of the current ** default. ** --date-override DATETIME DATE to use instead of 'now'. ** --allow-older Allow a commit to be older than its ** ancestor. | | | | > > | | 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 | ** appears to contain a fossil merge conflict ** marker. ** --user-override USER USER to use instead of the current ** default. ** --date-override DATETIME DATE to use instead of 'now'. ** --allow-older Allow a commit to be older than its ** ancestor. ** --convert-eol-inherit Convert EOL style of the checkin to match ** the previous version's content. ** --convert-eol-unix Convert the EOL style to Unix. ** --convert-eol-windows Convert the EOL style to Windows. ** (only one of the --convert-eol-X options may be used and they only ** modified the saved blob, not the input file.) ** --delta Prefer to generate a delta manifest, if ** able. The forbid-delta-manifests repo ** config option trumps this, as do certain ** heuristics. ** --allow-new-file Allow addition of a new file this way. ** Disabled by default to avoid that case- ** sensitivity errors inadvertently lead to |
︙ | ︙ | |||
782 783 784 785 786 787 788 | } if(find_option("allow-merge-conflict",0,0)!=0){ cimi.flags |= CIMINI_ALLOW_MERGE_MARKER; } if(find_option("allow-older",0,0)!=0){ cimi.flags |= CIMINI_ALLOW_OLDER; } | | > > > > | 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 | } if(find_option("allow-merge-conflict",0,0)!=0){ cimi.flags |= CIMINI_ALLOW_MERGE_MARKER; } if(find_option("allow-older",0,0)!=0){ cimi.flags |= CIMINI_ALLOW_OLDER; } if(find_option("convert-eol-inherit",0,0)!=0){ cimi.flags |= CIMINI_CONVERT_EOL_INHERIT; }else if(find_option("convert-eol-unix",0,0)!=0){ cimi.flags |= CIMINI_CONVERT_EOL_UNIX; }else if(find_option("convert-eol-windows",0,0)!=0){ cimi.flags |= CIMINI_CONVERT_EOL_WINDOWS; } if(find_option("delta",0,0)!=0){ cimi.flags |= CIMINI_PREFER_DELTA; } if(find_option("delta2",0,0)!=0){ /* Undocumented. For testing only. */ cimi.flags |= CIMINI_PREFER_DELTA | CIMINI_STRONGLY_PREFER_DELTA; |
︙ | ︙ |
Changes to src/fossil.page.fileedit.js.
︙ | ︙ | |||
237 238 239 240 241 242 243 | taCommentBig: E('#fileedit-comment-big'), ajaxContentTarget: E('#ajax-target'), btnCommit: E("#fileedit-btn-commit"), btnReload: E("#fileedit-tab-content > .fileedit-options > " +"button.fileedit-content-reload"), selectPreviewMode: E('#select-preview-mode select'), selectHtmlEmsWrap: E('#select-preview-html-ems'), | | > | 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 | taCommentBig: E('#fileedit-comment-big'), ajaxContentTarget: E('#ajax-target'), btnCommit: E("#fileedit-btn-commit"), btnReload: E("#fileedit-tab-content > .fileedit-options > " +"button.fileedit-content-reload"), selectPreviewMode: E('#select-preview-mode select'), selectHtmlEmsWrap: E('#select-preview-html-ems'), selectEolWrap: E('#select-eol-style'), selectEol: E('#select-eol-style select[name=eol]'), selectFontSizeWrap: E('#select-font-size'), cbLineNumbersWrap: E('#cb-line-numbers'), cbAutoPreview: E('#cb-preview-autoupdate > input[type=checkbox]'), previewTarget: E('#fileedit-tab-preview-wrapper'), cbIsExe: E('input[type=checkbox][name=exec_bit]'), fsFileVersionDetails: E('#file-version-details'), tabs:{ |
︙ | ︙ | |||
723 724 725 726 727 728 729 730 731 732 733 734 735 736 | return this; } const fd = new FormData(); fd.append('filename',filename); fd.append('checkin', this.finfo.checkin); fd.append('content',content); fd.append('dry_run',isDryRun ? 1 : 0); /* Text fields or select lists... */ ['comment_mimetype', 'comment' ].forEach(function(name){ var e = E('[name='+name+']'); if(e) fd.append(name,e.value); }); | > | 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 | return this; } const fd = new FormData(); fd.append('filename',filename); fd.append('checkin', this.finfo.checkin); fd.append('content',content); fd.append('dry_run',isDryRun ? 1 : 0); fd.append('eol', this.e.selectEol.value || 0); /* Text fields or select lists... */ ['comment_mimetype', 'comment' ].forEach(function(name){ var e = E('[name='+name+']'); if(e) fd.append(name,e.value); }); |
︙ | ︙ |