@@ -2772,16 +2772,24 @@
2772 2772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Indicates that the content of the newly-checked-in file is
2773 2773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** converted, if needed, to use the same EOL style as the previous
2774 2774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** version of that file. Only the in-memory/in-repo copies are
2775 2775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** affected, not the original file (if any).
2776 2776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CIMINI_CONVERT_EOL = 1<<5,
2777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CIMINI_CONVERT_EOL_INHERIT = 1<<5,
2778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
2779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Indicates that the input's EOLs should be converted to Unix-style.
2780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
2781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CIMINI_CONVERT_EOL_UNIX = 1<<6,
2782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
2783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Indicates that the input's EOLs should be converted to Windows-style.
2784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
2785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CIMINI_CONVERT_EOL_WINDOWS = 1<<7,
2778 2786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2779 2787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A hint to checkin_mini() to "prefer" creation of a delta manifest.
2780 2788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** It may decide not to for various reasons.
2781 2789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CIMINI_PREFER_DELTA = 1<<6,
2790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CIMINI_PREFER_DELTA = 1<<8,
2783 2791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2784 2792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A "stronger hint" to checkin_mini() to prefer creation of a delta
2785 2793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** manifest if it at all can. It will decide not to only if creation
2786 2794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of a delta is not a realistic option. For this to work, it must be
2787 2795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set together with the CIMINI_PREFER_DELTA flag, but the two cannot
@@ -2792,18 +2800,18 @@
2792 2800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** grounds of efficiency (e.g. not generating a delta if the parent
2793 2801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** non-delta only has a few F-cards).
2794 2802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2795 2803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The forbid-delta-manifests repo config option trumps this.
2796 2804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CIMINI_STRONGLY_PREFER_DELTA = 1<<7,
2805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CIMINI_STRONGLY_PREFER_DELTA = 1<<9,
2798 2806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2799 2807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Tells checkin_mini() to permit the addition of a new file. Normally
2800 2808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this is disabled because there are many cases where it could cause
2801 2809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the inadvertent addition of a new file when an update to an
2802 2810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** existing was intended, as a side-effect of name-case differences.
2803 2811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CIMINI_ALLOW_NEW_FILE = 1<<8
2812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CIMINI_ALLOW_NEW_FILE = 1<<10
2805 2813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
2806 2814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2807 2815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2808 2816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Initializes p to a known-valid default state.
2809 2817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -2841,10 +2849,21 @@
2841 2849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PERM_EXE: return " x";
2842 2850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case PERM_LNK: return " l";
2843 2851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
default: return "";
2844 2852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2845 2853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
2856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Given a ManifestFile permission string (or NULL), it returns one of
2857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** PERM_REG, PERM_EXE, or PERM_LNK.
2858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
2859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int mfile_permstr_int(const char *zPerm){
2860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(!zPerm || !*zPerm) return PERM_REG;
2861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else if(strstr(zPerm,"x")) return PERM_EXE;
2862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else if(strstr(zPerm,"l")) return PERM_LNK;
2863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else return PERM_REG/*???*/;
2864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2846 2865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2847 2866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char * mfile_perm_mstring(const ManifestFile * p){
2848 2867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return mfile_permint_mstring(manifest_file_mperm(p));
2849 2868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2850 2869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -3063,19 +3082,21 @@
3063 3082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - pCI->zDate is normalized to/replaced with a valid date/time
3064 3083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string. If its original value cannot be validated then
3065 3084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** this function fails. If pCI->zDate is NULL, the current time
3066 3085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is used.
3067 3086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** - If the CIMINI_CONVERT_EOL flag is set, pCI->fileContent appears
3069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to be plain text, and its line-ending style differs from its
3070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** previous version, it is converted to the same EOL style as the
3071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** previous version. If this is done, the pCI->fileHash is
3072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** re-computed. Note that only pCI->fileContent, not the original
3073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** file, is affected by the conversion.
3087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - If the CIMINI_CONVERT_EOL_INHERIT flag is set,
3088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pCI->fileContent appears to be plain text, and its line-ending
3089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** style differs from its previous version, it is converted to the
3090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** same EOL style as the previous version. If this is done, the
3091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** pCI->fileHash is re-computed. Note that only pCI->fileContent,
3092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** not the original file, is affected by the conversion.
3074 3093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3075 3094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - If pCI->fileHash is empty, this routine populates it with the
3076 3095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** repository's preferred hash algorithm.
3096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - pCI->comment may be converted to Unix-style newlines.
3077 3098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3078 3099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pCI's ownership is not modified.
3079 3100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3080 3101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function validates several of the inputs and fails if any
3081 3102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** validation fails.
@@ -3174,10 +3195,19 @@
3174 3195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zDVal);
3175 3196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ci_err((pErr,"Invalid timestamp string: %s", pCI->zDate));
3176 3197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3177 3198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(pCI->zDate);
3178 3199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCI->zDate = zDVal;
3200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { /* Confirm that only one EOL policy is in place. */
3202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n = 0;
3203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(CIMINI_CONVERT_EOL_INHERIT & pCI->flags) ++n;
3204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(CIMINI_CONVERT_EOL_UNIX & pCI->flags) ++n;
3205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(CIMINI_CONVERT_EOL_WINDOWS & pCI->flags) ++n;
3206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(n>1){
3207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ci_err((pErr,"More than 1 EOL conversion policy was specified."));
3208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3179 3209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3180 3210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Potential TODOs include:
3181 3211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3182 3212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - Commit allows an empty checkin only with a flag, but we
3183 3213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** currently disallow it entirely. Conform with commit?
@@ -3212,13 +3242,15 @@
3212 3242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3213 3243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(zFilePrev){
3214 3244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
prevFRid = fast_uuid_to_rid(zFilePrev->zUuid);
3215 3245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3216 3246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if((CIMINI_CONVERT_EOL & pCI->flags)
3218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && zFilePrev!=0
3219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && blob_size(&pCI->fileContent)>0){
3247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(((CIMINI_CONVERT_EOL_INHERIT & pCI->flags)
3248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (CIMINI_CONVERT_EOL_UNIX & pCI->flags)
3249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (CIMINI_CONVERT_EOL_WINDOWS & pCI->flags))
3250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && blob_size(&pCI->fileContent)>0
3251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
3220 3252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Confirm that the new content has the same EOL style as its
3221 3253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** predecessor and convert it, if needed, to the same style. Note
3222 3254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that this inherently runs a risk of breaking content,
3223 3255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** e.g. string literals which contain embedded newlines. Note that
3224 3256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** HTML5 specifies that form-submitted TEXTAREA content gets
@@ -3234,51 +3266,72 @@
3234 3266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
3235 3267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const int pseudoBinary = LOOK_LONG | LOOK_NUL;
3236 3268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const int lookFlags = LOOK_CRLF | pseudoBinary;
3237 3269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const int lookNew = looks_like_utf8( &pCI->fileContent, lookFlags );
3238 3270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!(pseudoBinary & lookNew)){
3239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob contentPrev = empty_blob;
3240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int lookOrig, nOrig;
3241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- content_get(prevFRid, &contentPrev);
3242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lookOrig = looks_like_utf8(&contentPrev, lookFlags);
3243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nOrig = blob_size(&contentPrev);
3244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&contentPrev);
3245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(nOrig>0 && lookOrig!=lookNew){
3246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If there is a newline-style mismatch, adjust the new
3247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** content version to the previous style, then re-hash the
3248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** content. Note that this means that what we insert is NOT
3249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** what's in the filesystem.
3250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
3251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rehash = 0;
3252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(!(lookOrig & LOOK_CRLF) && (lookNew & LOOK_CRLF)){
3253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Old has Unix-style, new has Windows-style. */
3254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_to_lf_only(&pCI->fileContent);
3255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rehash = 1;
3256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if((lookOrig & LOOK_CRLF) && !(lookNew & LOOK_CRLF)){
3257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Old has Windows-style, new has Unix-style. */
3258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_add_cr(&pCI->fileContent);
3259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rehash = 1;
3260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(rehash!=0){
3262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- hname_hash(&pCI->fileContent, 0, &pCI->fileHash);
3263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rehash = 0;
3272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(CIMINI_CONVERT_EOL_INHERIT & pCI->flags){
3273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob contentPrev = empty_blob;
3274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int lookOrig, nOrig;
3275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_get(prevFRid, &contentPrev);
3276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lookOrig = looks_like_utf8(&contentPrev, lookFlags);
3277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nOrig = blob_size(&contentPrev);
3278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&contentPrev);
3279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(nOrig>0 && lookOrig!=lookNew){
3280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If there is a newline-style mismatch, adjust the new
3281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** content version to the previous style, then re-hash the
3282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** content. Note that this means that what we insert is NOT
3283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** what's in the filesystem.
3284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(!(lookOrig & LOOK_CRLF) && (lookNew & LOOK_CRLF)){
3286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Old has Unix-style, new has Windows-style. */
3287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_to_lf_only(&pCI->fileContent);
3288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rehash = 1;
3289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if((lookOrig & LOOK_CRLF) && !(lookNew & LOOK_CRLF)){
3290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Old has Windows-style, new has Unix-style. */
3291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_add_cr(&pCI->fileContent);
3292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rehash = 1;
3293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
3296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const int oldSize = blob_size(&pCI->fileContent);
3297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(CIMINI_CONVERT_EOL_UNIX & pCI->flags){
3298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_to_lf_only(&pCI->fileContent);
3299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
3300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_add_cr(&pCI->fileContent);
3301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(CIMINI_CONVERT_EOL_WINDOWS & pCI->flags);
3302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(blob_size(&pCI->fileContent)!=oldSize){
3304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rehash = 1;
3305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(rehash!=0){
3308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hname_hash(&pCI->fileContent, 0, &pCI->fileHash);
3309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }/* end EOL conversion */
3312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3267 3313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(blob_size(&pCI->fileHash)==0){
3268 3314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Hash the content if it's not done already... */
3269 3315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hname_hash(&pCI->fileContent, 0, &pCI->fileHash);
3270 3316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(blob_size(&pCI->fileHash)>0);
3271 3317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3272 3318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(zFilePrev){
3273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Has this file been changed since its previous commit? */
3319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Has this file been changed since its previous commit? Note
3320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that we have to delay this check until after the potentially
3321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** expensive EOL conversion. */
3274 3322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(blob_size(&pCI->fileHash));
3275 3323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(0==fossil_strcmp(zFilePrev->zUuid, blob_str(&pCI->fileHash))
3276 3324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& manifest_file_mperm(zFilePrev)==pCI->filePerm){
3277 3325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ci_err((pErr,"File is unchanged. Not saving."));
3278 3326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3279 3327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #if 1
3329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Do we really want to normalize comment EOLs? Web-posting will
3330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** submit them in CRLF format. */
3331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_to_lf_only(&pCI->comment);
3332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
3280 3333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Create, save, deltify, and crosslink the manifest... */
3281 3334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(create_manifest_mini(&mf, pCI, pErr)==0){
3282 3335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
3283 3336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3284 3337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isPrivate = content_is_private(pCI->pParent->rid);
@@ -3411,12 +3464,12 @@
3411 3464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cimi.flags |= CIMINI_ALLOW_MERGE_MARKER;
3412 3465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3413 3466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(find_option("allow-older",0,0)!=0){
3414 3467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cimi.flags |= CIMINI_ALLOW_OLDER;
3415 3468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(find_option("convert-eol",0,0)!=0){
3417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cimi.flags |= CIMINI_CONVERT_EOL;
3469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(find_option("convert-eol-prev",0,0)!=0){
3470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.flags |= CIMINI_CONVERT_EOL_INHERIT;
3418 3471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3419 3472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(find_option("delta",0,0)!=0){
3420 3473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cimi.flags |= CIMINI_PREFER_DELTA;
3421 3474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3422 3475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(find_option("delta2",0,0)!=0){
@@ -3502,22 +3555,81 @@
3502 3555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CheckinMiniInfo_cleanup(&cimi);
3503 3556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3504 3557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3505 3558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3506 3559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Returns true if the given filename qualified for online editing
3508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** by the current user.
3560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Returns true if the given filename qualifies for online editing by
3561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the current user, else returns false.
3509 3562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Currently only looks at the user's permissions, pending decisions
3511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** on whether we want to filter them based on a glob list or mimetype
3512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** list.
3563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Editing requires that the user have the Write permission and that
3564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the filename match the glob defined by the fileedit-glob setting.
3565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** A missing or empty value for that glob disables all editing.
3513 3566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
3514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int file_is_online_editable(const char *zFilename){
3515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(g.perm.Write){
3516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
3567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int fileedit_is_editable(const char *zFilename){
3568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static Glob * pGlobs = 0;
3569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int once = 0;
3570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(0==g.perm.Write || zFilename==0 || *zFilename==0
3571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || (once!=0 && pGlobs==0)){
3572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
3573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if(0==pGlobs){
3574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char * zGlobs = db_get("fileedit-glob",0);
3575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ once = 1;
3576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(0==zGlobs) return 0;
3577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pGlobs = glob_create(zGlobs);
3578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zGlobs);
3579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ once = 1;
3580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return glob_match(pGlobs, zFilename);
3582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void fileedit_emit_script(int phase){
3585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(0==phase){
3586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("<script nonce='%s'>", style_nonce());
3587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
3588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("</script>\n");
3589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void fileedit_emit_script_fetch(){
3592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define fp fossil_print
3593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_emit_script(0);
3594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("window.fossilFetch = function(path,opt){\n");
3595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" if('function'===typeof opt){\n");
3596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" opt={onload:opt};\n");
3597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" }else{\n");
3598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" opt=opt||{onload:function(r){console.debug('response:',r)}}\n");
3599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" }\n");
3600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" const url='%R/'+path, x=new XMLHttpRequest();\n");
3601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" x.open(opt.method||'GET', url, true);\n");
3602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" x.responseType=opt.responseType||'text';\n");
3603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" if(opt.onload){\n");
3604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" x.onload = function(e){\n");
3605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" if(200!==this.status){\n");
3606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" if(opt.onerror) opt.onerror(e);\n");
3607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" return;\n");
3608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" }\n");
3609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" opt.onload(this.response);\n");
3610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" }\n");
3611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" }\n");
3612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp(" x.send();");
3613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("};\n");
3614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_emit_script(1);
3615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef fp
3616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
3617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void fileedit_checkbox(const char *zFieldName,
3619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zLabel,
3620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zValue,
3621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char * zTip,
3622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isChecked){
3623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("<span class='input-with-label'");
3624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(zTip && *zTip){
3625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print(" title='%h'", zTip);
3517 3626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
3627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("><input type='checkbox' name='%s' value='%T'%s/>",
3628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFieldName,
3629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zValue ? zValue : "", isChecked ? " checked" : "");
3630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("<span>%h</span></span>", zLabel);
3519 3631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3520 3632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3521 3633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3522 3634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: fileedit
3523 3635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -3545,12 +3657,13 @@
3545 3657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zContent = P("content"); /* file content */
3546 3658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zComment = P("comment"); /* checkin comment */
3547 3659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CheckinMiniInfo cimi; /* Checkin state */
3548 3660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int submitMode = 0; /* See mapping below */
3549 3661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char * zRevResolved = 0; /* Resolved zRev */
3550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int vid; /* checkin rid */
3662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int vid, newVid = 0; /* checkin rid */
3551 3663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char * zFileUuid = 0; /* File content UUID */
3664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int frid = 0; /* File content rid */
3552 3665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob err = empty_blob; /* Error report */
3553 3666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zFlagCheck = 0; /* Temp url flag holder */
3554 3667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt stmt = empty_Stmt;
3555 3668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fail(EXPR) blob_appendf EXPR; goto end_footer
3556 3669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -3558,10 +3671,13 @@
3558 3671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.Write ){
3559 3672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_needed(g.anon.Write);
3560 3673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
3561 3674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3562 3675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CheckinMiniInfo_init(&cimi);
3676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ submitMode = atoi(PD("submit","0"))
3677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Submit modes: 0=initial request,
3678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 1=submit (save), 2=preview, 3=diff */;
3563 3679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFlagCheck = P("comment");
3564 3680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(zFlagCheck){
3565 3681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cimi.zMimetype = mprintf("%s",zFlagCheck);
3566 3682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFlagCheck = 0;
3567 3683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -3572,12 +3688,17 @@
3572 3688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - Preview button + view
3573 3689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3574 3690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - Diff button + view
3575 3691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3576 3692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
3693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("File Editor");
3577 3694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!zRev || !*zRev || !zFilename || !*zFilename){
3578 3695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fail((&err,"Missing required URL parameters."));
3696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(0==fileedit_is_editable(zFilename)){
3698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fail((&err,"Filename is disallowed by the fileedit-glob "
3699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "repository setting."));
3579 3700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3580 3701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vid = symbolic_name_to_rid(zRev, "ci");
3581 3702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(0==vid){
3582 3703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fail((&err,"Could not resolve checkin version."));
3583 3704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -3587,26 +3708,26 @@
3587 3708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&stmt, "SELECT uuid, perm FROM files_of_checkin "
3588 3709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"WHERE filename=%Q %s AND checkinID=%d",
3589 3710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFilename, filename_collation(), vid);
3590 3711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(SQLITE_ROW==db_step(&stmt)){
3591 3712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zPerm = db_column_text(&stmt, 1);
3592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const int isLink = zPerm ? strstr(zPerm,"l")!=0 : 0;
3593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(isLink){
3713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.filePerm = mfile_permstr_int(zPerm);
3714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(PERM_LNK==cimi.filePerm){
3594 3715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fail((&err,"Editing symlinks is not permitted."));
3595 3716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3596 3717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFileUuid = mprintf("%s",db_column_text(&stmt, 0));
3597 3718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3598 3719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&stmt);
3599 3720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!zFileUuid){
3600 3721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fail((&err,"Checkin [%S] does not contain file: %h",
3601 3722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRevResolved, zFilename));
3602 3723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ frid = fast_uuid_to_rid(zFileUuid);
3725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(frid);
3603 3726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3604 3727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Read file content from submit request or repo... */
3605 3728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(zContent==0){
3606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const int frid = fast_uuid_to_rid(zFileUuid);
3607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert(frid);
3608 3729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(frid, &cimi.fileContent);
3609 3730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zContent = blob_size(&cimi.fileContent)
3610 3731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
? blob_str(&cimi.fileContent) : NULL;
3611 3732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
3612 3733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(&cimi.fileContent,zContent,-1);
@@ -3615,14 +3736,15 @@
3615 3736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fail((&err,"File appears to be binary. Cannot edit: %h",
3616 3737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFilename));
3617 3738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3618 3739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3619 3740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* All set. Here we go... */
3620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_header("File Editor");
3621 3741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define fp fossil_print
3622 3742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ^^^ Appologies, Richard, but the @ form plays havoc with emacs */
3623 3743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_emit_script_fetch();
3745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3624 3746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<h1>Editing: %h</h1>",zFilename);
3625 3747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<p class='hint'>Permalink: "
3626 3748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"<a href='%R/fileedit?file=%T&r=%s'>"
3627 3749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"%R/fileedit?file=%T&r=%s</a></p>",
3628 3750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFilename, zRev, zFilename, zRev);
@@ -3646,94 +3768,165 @@
3646 3768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<div class='hint'>Comments use the Fossil wiki markup "
3647 3769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"syntax.</div>"/*TODO: radiobuttons for fossil/me/plain text*/);
3648 3770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3649 3771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******* Content *******/
3650 3772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<h3>Content</h3>\n");
3651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fp("<textarea name='content' rows='20' cols='80'>");
3652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(zContent && *zContent){
3653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fp("%h", zContent);
3654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("<textarea name='content' id='fileedit-content' "
3774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "rows='20' cols='80'>");
3775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("Loading...");
3655 3776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("</textarea>\n");
3656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
3657 3777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******* Flags/options *******/
3658 3778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<fieldset class='fileedit-options'>"
3659 3779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"<legend>Many checkboxes are TODO</legend><div>"
3660 3780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Chrome does not sanely lay out multiple
3661 3781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fieldset children after the <legend>, so
3662 3782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a containing div is necessary. */);
3663 3783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3664 3784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** TODO: Put checkboxes here...
3665 3785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** allow-fork, dry-run, convert-eol, allow-merge-conflict,
3667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** set-exec-bit, date-override, allow-older (in case server time is
3786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** dry-run, convert-eol
3787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** date-override, allow-older (in case server time is
3668 3788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** messed up or someone checked something in w/ a future timestamp),
3669 3789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** prefer-delta, strongly-prefer-delta (undocumented - for
3670 3790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** development/admin use only).
3671 3791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
3672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fp("</div></fieldset>");
3792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(0==submitMode || P("dry_run")!=0){
3793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.flags |= CIMINI_DRY_RUN;
3794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_checkbox("dry_run", "Dry-run?", "1",
3796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "In dry-run mode, do not really save.",
3797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.flags & CIMINI_DRY_RUN);
3798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(P("allow_fork")!=0){
3799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.flags |= CIMINI_ALLOW_FORK;
3800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_checkbox("allow_fork", "Allow fork?", "1",
3802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Allow saving to create a fork?",
3803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.flags & CIMINI_ALLOW_FORK);
3804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(P("exec_bit")!=0){
3805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.filePerm = PERM_EXE;
3806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_checkbox("exec_bit", "Executable?", "1",
3808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Set executable bit?",
3809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ PERM_EXE==cimi.filePerm);
3810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(P("allow_merge_conflict")!=0){
3811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.flags |= CIMINI_ALLOW_MERGE_MARKER;
3812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_checkbox("allow_merge_conflict",
3814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Allow merge conflict markers?", "1",
3815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Allow saving even if the content contains what "
3816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "appear to be fossil merge conflict markers?",
3817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.flags & CIMINI_ALLOW_MERGE_MARKER);
3818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {/* EOL conversion policy... */
3819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const int eolMode = submitMode==0 ? 0 : atoi(PD("eol","0"));
3820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ switch(eolMode){
3821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 1: cimi.flags |= CIMINI_CONVERT_EOL_UNIX; break;
3822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case 2: cimi.flags |= CIMINI_CONVERT_EOL_WINDOWS; break;
3823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ default: cimi.flags |= CIMINI_CONVERT_EOL_INHERIT; break;
3824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("<select name='eol' "
3826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "title='EOL conversion policy, noting that form-processing "
3827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "may implicitly change the line endings of the input.'>");
3828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("<option value='0'%s>Inherit EOLs</option>",
3829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eolMode==0 ? " selected" : "");
3830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("<option value='1'%s/>Unix EOLs</option>",
3831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eolMode==1 ? " selected" : "");
3832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("<option value='2'%s>Windows EOLs</option>",
3833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ eolMode==2 ? " selected" : "");
3834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("</select>");
3835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("</div></fieldset>") /* end of checkboxes */;
3673 3837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3674 3838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******* Buttons *******/
3675 3839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<fieldset class='fileedit-options'>"
3676 3840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"<legend>Several buttons are TODO</legend><div>");
3677 3841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<button type='submit' name='submit' value='1'>"
3678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "Submit (dry-run)</button>");
3842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Submit</button>");
3679 3843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<button type='submit' name='submit' value='2'>"
3680 3844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Preview (TODO)</button>");
3681 3845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<button type='submit' name='submit' value='3'>"
3682 3846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Diff (TODO)</button>");
3683 3847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("</div></fieldset>");
3684 3848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3685 3849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/******* End of form *******/
3686 3850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("</form>\n");
3851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Populate doc...
3853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** To avoid all escaping-related issues, we have to do this one
3854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of two ways:
3855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 1) Fetch the content via AJAX. That only works if the content
3857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is already in the db, but not for edited versions.
3858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 2) Store the content as JSON and feed it into the textarea
3860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** using JavaScript.
3861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_emit_script(0);
3863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {
3864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char const * zQuoted = 0;
3865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(blob_size(&cimi.fileContent)>0){
3866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&stmt, "SELECT json_quote(%B)",&cimi.fileContent);
3867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_step(&stmt);
3868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zQuoted = db_column_text(&stmt,0);
3869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("document.getElementById('fileedit-content').value=%s;",
3871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zQuoted ? zQuoted : "''");
3872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(stmt.pStmt){
3873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&stmt);
3874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fileedit_emit_script(1);
3877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3687 3878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zContent = 0;
3688 3879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zRevResolved);
3689 3880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zFileUuid);
3690 3881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- submitMode = atoi(PD("submit","0"))
3692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
3693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Submit modes: 1=submit (save), 2=preview, 3=diff
3694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */;
3695 3882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(1==submitMode/*save*/){
3696 3883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob manifest = empty_blob;
3697 3884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
3698 3885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3699 3886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* TODO: pull these flags from P() */
3700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cimi.flags |= CIMINI_DRY_RUN;
3701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cimi.flags |= CIMINI_CONVERT_EOL;
3702 3887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cimi.flags |= CIMINI_PREFER_DELTA;
3703 3888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*cimi.flags |= CIMINI_STRONGLY_PREFER_DELTA;*/
3704 3889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3705 3890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
3706 3891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cimi.pParent = manifest_get(vid, CFTYPE_MANIFEST, 0);
3707 3892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(cimi.pParent && "We know vid is valid.");
3708 3893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cimi.zFilename = mprintf("%s",zFilename);
3709 3894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cimi.pMfOut = &manifest;
3710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cimi.filePerm = PERM_REG;
3711 3895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(zComment && *zComment){
3712 3896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(&cimi.comment, zComment, -1);
3713 3897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = checkin_mini(&cimi, 0, &err);
3715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if(rc!=0){
3716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fp("<h3>Manifest</h3><pre><code>%h</code></pre>",
3717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_str(&manifest));
3898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = checkin_mini(&cimi, &newVid, &err);
3899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(newVid!=0){
3900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char * zNewUuid = rid_to_uuid(newVid);
3901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fp("<h3>Manifest%s: %S</h3><pre>"
3902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "<code class='fileedit-manifest'>%h</code>"
3903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "</pre>",
3904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (cimi.flags & CIMINI_DRY_RUN) ? " (dry run)" : "",
3905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zNewUuid, blob_str(&manifest));
3906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zNewUuid);
3718 3907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3719 3908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&manifest);
3720 3909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(rc ? 0 : 1);
3721 3910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if(2==submitMode/*preview*/){
3722 3911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* TODO */
3912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fail((&err,"Preview mode is still TODO."));
3723 3913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if(3==submitMode/*diff*/){
3724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* TODO */
3914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fail((&err,"Diff mode is still TODO."));
3725 3915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
3726 3916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Ignore invalid submitMode value */
3727 3917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_footer;
3728 3918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3729 3919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3730 3920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
end_footer:
3921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(stmt.pStmt){
3922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&stmt);
3923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3731 3924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(blob_size(&err)){
3732 3925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fp("<div class='fileedit-error-report'>%h</div>",
3733 3926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_str(&err));
3734 3927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3735 3928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&err);
3736 3929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CheckinMiniInfo_cleanup(&cimi);
3737 3930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
3738 3931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#undef fp
3739 3932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3740 3933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!