@@ -13,11 +13,11 @@
13 13 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** [email protected]
14 14 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** http://www.hwaci.com/drh/
15 15 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
16 16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*******************************************************************************
17 17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This file contains code for the /fileedit page and related code.
18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This file contains code for the /fileedit page and related bits.
19 19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
20 20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "config.h"
21 21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "fileedit.h"
22 22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <assert.h>
23 23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <stdarg.h>
@@ -29,12 +29,14 @@
29 29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
30 30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Use CheckinMiniInfo_init() to cleanly initialize one to a known
31 31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** valid/empty default state.
32 32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
33 33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Memory for all non-const pointer members is owned by the
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** CheckinMiniInfo instance and is freed by CheckinMiniInfo_cleanup().
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Similarly, each instance owns any memory for its Blob members.
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CheckinMiniInfo instance, unless explicitly noted otherwise, and is
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** freed by CheckinMiniInfo_cleanup(). Similarly, each instance owns
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** any memory for its own Blob members, but NOT for its pointers to
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** blobs.
36 38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
37 39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct CheckinMiniInfo {
38 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Manifest * pParent; /* parent checkin. Memory is owned by this
39 41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
object. */
40 42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zParentUuid; /* Full UUID of pParent */
@@ -67,10 +69,13 @@
67 69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
68 70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
69 71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** CheckinMiniInfo::flags values.
70 72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
71 73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
enum fossil_cimini_flags {
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Must have a value of 0. All other flags have unspecified values.
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
72 77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CIMINI_NONE = 0,
73 78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
74 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Tells checkin_mini() to use dry-run mode.
75 80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
76 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CIMINI_DRY_RUN = 1,
@@ -118,27 +123,27 @@
118 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
119 124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CIMINI_PREFER_DELTA = 1<<8,
120 125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
121 126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A "stronger hint" to checkin_mini() to prefer creation of a delta
122 127 { 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
123 { 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
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** set together with the CIMINI_PREFER_DELTA flag, but the two cannot
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** be combined in this enum.
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of a delta is not a realistic option or if it's forbitted by the
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** forbid-delta-manifests repo config option. For this to work, it
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** must be set together with the CIMINI_PREFER_DELTA flag, but the two
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cannot be combined in this enum.
126 132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
127 133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This option is ONLY INTENDED FOR TESTING, used in bypassing
128 134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** heuristics which may otherwise disable generation of a delta on the
129 135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** grounds of efficiency (e.g. not generating a delta if the parent
130 136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** non-delta only has a few F-cards).
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The forbid-delta-manifests repo config option trumps this.
133 137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
134 138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CIMINI_STRONGLY_PREFER_DELTA = 1<<9,
135 139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
136 140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Tells checkin_mini() to permit the addition of a new file. Normally
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** this is disabled because there are many cases where it could cause
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the inadvertent addition of a new file when an update to an
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** existing was intended, as a side-effect of name-case differences.
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this is disabled because there are hypothetically many cases where
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it could cause the inadvertent addition of a new file when an
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** update to an existing was intended, as a side-effect of name-case
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** differences.
140 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
141 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CIMINI_ALLOW_NEW_FILE = 1<<10
142 147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
143 148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144 149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -213,10 +218,11 @@
213 218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
214 219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* File was removed from parent delta. */
215 220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(pOut, "F %F\n", p->zName);
216 221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
217 222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
218 224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
219 225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Handles the F-card parts for create_manifest_mini().
220 226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
221 227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If asDelta is true, F-cards will be handled as for a delta
222 228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** manifest, and the caller MUST have added a B-card to pOut before
@@ -310,18 +316,18 @@
310 316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
311 317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
312 318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
313 319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Creates a manifest file, written to pOut, from the state in the
314 320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** fully-populated and semantically valid pCI argument. pCI is not
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** *semantically* modified but cannot be const because blob_str() may
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** need to NUL-terminate any given blob.
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** *semantically* modified by this routine but cannot be const because
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** blob_str() may need to NUL-terminate any given blob.
317 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
318 324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Returns true on success. On error, returns 0 and, if pErr is not
319 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** NULL, writes an error message there.
320 326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
321 327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Intended only to be called via checkin_mini() or routines which
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** have already completely vetted pCI.
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** have already completely vetted pCI for semantic validity.
323 329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
324 330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int create_manifest_mini( Blob * pOut, CheckinMiniInfo * pCI,
325 331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob * pErr){
326 332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob zCard = empty_blob; /* Z-card checksum */
327 333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int asDelta = 0;
@@ -384,19 +390,18 @@
384 390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
385 391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#undef mf_err
386 392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
387 393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
388 394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EXPERIMENTAL! Subject to change or removal at any time.
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
391 395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A so-called "single-file/mini/web checkin" is a slimmed-down form
392 396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of the checkin command which accepts only a single file and is
393 397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** intended to accept edits to a file via the web interface or from
394 398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the CLI from outside of a checkout.
395 399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
396 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Being fully non-interactive is a requirement for this function,
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** thus it cannot perform autosync or similar activities.
401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** thus it cannot perform autosync or similar activities (which
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** includes checking for repo locks).
398 403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
399 404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This routine uses the state from the given fully-populated pCI
400 405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** argument to add pCI->fileContent to the database, and create and
401 406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** save a manifest for that change. Ownership of pCI and its contents
402 407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are unchanged.
@@ -417,19 +422,25 @@
417 422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** style differs from its previous version, it is converted to the
418 423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** same EOL style as the previous version. If this is done, the
419 424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pCI->fileHash is re-computed. Note that only pCI->fileContent,
420 425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** not the original file, is affected by the conversion.
421 426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - Else if one of the CIMINI_CONVERT_EOL_WINDOWS or
428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CIMINI_CONVERT_EOL_UNIX flags are set, pCI->fileContent is
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** converted, if needed, to the corresponding EOL style.
430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - If EOL conversion takes place, pCI->fileHash is re-calculated.
432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
422 433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - If pCI->fileHash is empty, this routine populates it with the
423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** repository's preferred hash algorithm.
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** repository's preferred hash algorithm (after any EOL conversion).
424 435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
425 436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - pCI->comment may be converted to Unix-style newlines.
426 437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
427 438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** pCI's ownership is not modified.
428 439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function validates several of the inputs and fails if any
430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** validation fails.
440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function validates pCI's state and fails if any validation
441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fails.
431 442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
432 443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** On error, returns false (0) and, if pErr is not NULL, writes a
433 444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** diagnostic message there.
434 445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
435 446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Returns true on success. If pRid is not NULL, the RID of the
@@ -521,11 +532,12 @@
521 532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
522 533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
523 534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Potential TODOs include:
524 535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
525 536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - Commit allows an empty checkin only with a flag, but we
526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** currently disallow it entirely. Conform with commit?
537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** currently disallow an empty checkin entirely. Conform with
538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** commit?
527 539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
528 540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Non-TODOs:
529 541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
530 542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** - Check for a commit lock would require auto-sync, which this
531 543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** code cannot do if it's going to be run via a web page.
@@ -631,11 +643,11 @@
631 643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that we have to delay this check until after the potentially
632 644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** expensive EOL conversion. */
633 645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(blob_size(&pCI->fileHash));
634 646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(0==fossil_strcmp(zFilePrev->zUuid, blob_str(&pCI->fileHash))
635 647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& manifest_file_mperm(zFilePrev)==pCI->filePerm){
636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ci_err((pErr,"File is unchanged. Not saving."));
648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ci_err((pErr,"File is unchanged. Not committing."));
637 649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
638 650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
639 651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if 1
640 652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do we really want to normalize comment EOLs? Web-posting will
641 653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** submit them in CRLF or LF format, depending on how exactly the
@@ -1185,10 +1197,17 @@
1185 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1186 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** User must have Write access to use this page.
1187 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1188 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Responds with the raw content of the given page. On error it
1189 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** produces a JSON response as documented for fileedit_ajax_error().
1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Extra response headers:
1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x-fileedit-file-perm: empty or "x" or "l", representing PERM_REG,
1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** PERM_EXE, or PERM_LINK, respectively.
1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x-fileedit-checkin-branch: branch name for the passed-in checkin.
1190 1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1191 1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fileedit_ajax_content(void){
1192 1211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zFilename = 0;
1193 1212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zRev = 0;
1194 1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int vid, frid;
@@ -1216,10 +1235,17 @@
1216 1235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char * zFuuid = fileedit_file_uuid(zFilename, vid, &fperm);
1217 1236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zPerm = mfile_permint_mstring(fperm);
1218 1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(zFuuid);
1219 1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_printf_header("x-fileedit-file-perm:%s\r\n", zPerm);
1220 1239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zFuuid);
1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { /* Send branch name via response header for UI usability reasons */
1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char * zBranch = branch_of_rid(vid);
1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(zBranch!=0 && zBranch[0]!=0){
1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_printf_header("x-fileedit-checkin-branch: %s\r\n", zBranch);
1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zBranch);
1221 1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1222 1248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_content_type(zMime);
1223 1249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_content(&content);
1224 1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1225 1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1243,10 +1269,18 @@
1243 1269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1244 1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** User must have Write access to use this page.
1245 1271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1246 1272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Responds with the HTML content of the preview. On error it produces
1247 1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** a JSON response as documented for fileedit_ajax_error().
1274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Extra response headers:
1276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** x-fileedit-render-mode: string representing the rendering mode
1278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** which was really used (which will differ from the requested mode
1279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** only if mode 0 (guess) was requested). The names are documented
1280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** below in code and match those in the emitted JS object
1281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** fossil.page.previewModes.
1248 1282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1249 1283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void fileedit_ajax_preview(void){
1250 1284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zFilename = 0;
1251 1285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zContent = P("content");
1252 1286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int renderMode = atoi(PD("render_mode","0"));
@@ -1567,12 +1601,12 @@
1567 1601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(i++){
1568 1602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX(",");
1569 1603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1570 1604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("{");
1571 1605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("\"checkin\":%!j,", db_column_text(&q, 1));
1572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CX("\"timestamp\":%!j,", db_column_text(&q, 2));
1573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CX("\"branch\":%!j", db_column_text(&q, 7));
1606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("\"branch\":%!j,", db_column_text(&q, 7));
1607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("\"timestamp\":%!j", db_column_text(&q, 2));
1574 1608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("}");
1575 1609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1576 1610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("]");
1577 1611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1578 1612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -1586,28 +1620,33 @@
1586 1620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Required query parameters:
1587 1621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1588 1622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** filename=FILENAME
1589 1623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** checkin=Parent checkin UUID
1590 1624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** content=text
1591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** comment=text
1625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** comment=non-empty text
1592 1626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1593 1627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Optional query parameters:
1594 1628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** comment_mimetype=text
1629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** comment_mimetype=text (NOT currently honored)
1630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1596 1631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** dry_run=int (1 or 0)
1632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** include_manifest=int (1 or 0), whether to include
1634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the generated manifest in the response.
1597 1635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1598 1636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** User must have Write access to use this page.
1637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** User must have Write permissions to use this page.
1600 1638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1601 1639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Responds with JSON (with some state repeated
1602 1640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** from the input in order to avoid certain race conditions
1603 1641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** client-side):
1604 1642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1605 1643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** {
1606 1644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** checkin: newUUID,
1607 1645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** filename: theFilename,
1608 1646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mimetype: string,
1647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** branch: name of the checkin's branch,
1609 1648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** isExe: bool,
1610 1649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** dryRun: bool,
1611 1650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** manifest: text of manifest,
1612 1651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** }
1613 1652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -1620,10 +1659,11 @@
1620 1659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CheckinMiniInfo cimi; /* checkin state */
1621 1660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc; /* generic result code */
1622 1661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int newVid = 0; /* new version's RID */
1623 1662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char * zNewUuid = 0; /* newVid's UUID */
1624 1663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char const * zMimetype;
1664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char * zBranch = 0;
1625 1665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1626 1666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!fileedit_ajax_boostrap()){
1627 1667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
1628 1668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1629 1669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
@@ -1635,11 +1675,13 @@
1635 1675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1636 1676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(blob_size(&cimi.comment)==0){
1637 1677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fileedit_ajax_error(400,"Empty checkin comment is not permitted.");
1638 1678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_cleanup;
1639 1679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cimi.pMfOut = &manifest;
1680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(0!=atoi(PD("include_manifest","0"))){
1681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cimi.pMfOut = &manifest;
1682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1641 1683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
checkin_mini(&cimi, &newVid, &err);
1642 1684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(blob_size(&err)){
1643 1685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fileedit_ajax_error(500,"%b",&err);
1644 1686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto end_cleanup;
1645 1687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1652,13 +1694,20 @@
1652 1694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("\"isExe\": %s,", cimi.filePerm==PERM_EXE ? "true" : "false");
1653 1695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zMimetype = mimetype_from_name(cimi.zFilename);
1654 1696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(zMimetype!=0){
1655 1697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("\"mimetype\": %!j,", zMimetype);
1656 1698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CX("\"dryRun\": %s,",
1699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zBranch = branch_of_rid(newVid);
1700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(zBranch!=0){
1701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("\"branch\": %!j,", zBranch);
1702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zBranch);
1703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("\"dryRun\": %s",
1658 1705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
(CIMINI_DRY_RUN & cimi.flags) ? "true" : "false");
1659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CX("\"manifest\": %!j", blob_str(&manifest));
1706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(blob_size(&manifest)>0){
1707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX(",\"manifest\": %!j", blob_str(&manifest));
1708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1660 1709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("}");
1661 1710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(0/*noting that dry-run mode will have already
1662 1711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** set this to rollback mode. */);
1663 1712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
end_cleanup:
1664 1713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zNewUuid);
@@ -1668,22 +1717,27 @@
1668 1717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1669 1718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1670 1719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1671 1720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: fileedit
1672 1721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** EXPERIMENTAL and subject to change and removal at any time. The goal
1674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is to allow online edits of files.
1675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
1676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Query parameters:
1677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
1678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** filename=FILENAME Repo-relative path to the file.
1679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** checkin=VERSION Checkin version, using any unambiguous
1680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** supported symbolic version name.
1681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
1682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** All other parameters are for internal use only, submitted via the
1683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** form-submission process, and may change with any given revision of
1684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** this code.
1722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Enables the online editing and committing of individual text files.
1723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Requires that the user have Write permissions.
1724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Optional query parameters:
1726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** filename=FILENAME Repo-relative path to the file.
1728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** checkin=VERSION Checkin version, using any unambiguous
1729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** supported symbolic version name.
1730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Internal-use parameters:
1732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ajax=string The name of a page-specific AJAX operation.
1734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Which additional parameters are used by each distinct ajax value is
1736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** an internal implementation detail and may change with any given
1737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** build of this code. An unknown ajax value triggers an error, as
1738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** documented for fileedit_ajax_error().
1685 1739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1686 1740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void fileedit_page(void){
1687 1741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zFilename = 0; /* filename. We'll accept 'name'
1688 1742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
because that param is handled
1689 1743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
specially by the core. */
@@ -1834,15 +1888,17 @@
1834 1888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"data-tab-parent='fileedit-tabs' "
1835 1889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"data-tab-label='Preview'"
1836 1890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
">");
1837 1891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<div class='fileedit-options flex-container flex-row'>");
1838 1892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<button id='btn-preview-refresh' "
1839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "data-f-preview-from='fileedit-content-editor' "
1840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* ^^^ text source elem ID*/
1893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-f-preview-from='fileContent' "
1894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* ^^^ fossil.page[methodName]() OR text source elem ID,
1895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** but we need a method in order to support clients swapping out
1896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the text editor with their own. */
1841 1897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"data-f-preview-via='_postPreview' "
1842 1898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ^^^ fossil.page[methodName](content, callback) */
1843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "data-f-preview-to='fileedit-tab-preview-wrapper' "
1899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "data-f-preview-to='#fileedit-tab-preview-wrapper' "
1844 1900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ^^^ dest elem ID */
1845 1901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
">Refresh</button>");
1846 1902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Toggle auto-update of preview when the Preview tab is selected. */
1847 1903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_labeled_checkbox("cb-preview-autoupdate",
1848 1904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
NULL,
@@ -1988,10 +2044,18 @@
1988 2044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
? 2 : 0),
1989 2045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Inherit", 0,
1990 2046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Unix", 1,
1991 2047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Windows", 2,
1992 2048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
NULL);
2049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_labeled_checkbox("cb-include-manifest",
2050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "include_manifest",
2051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Response manifest?", "1",
2052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ 0,
2053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Include the manifest in the response? "
2054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "It's generally only useful for debug "
2055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "purposes.");
2056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1993 2057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("</div>"/*checkboxes*/);
1994 2058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1995 2059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1996 2060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ /******* Commit comment, button, and result manifest *******/
1997 2061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<fieldset class='fileedit-options commit-message'>"
@@ -2067,16 +2131,16 @@
2067 2131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"with many files.</li>");
2068 2132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("<li>The file selector allows, for usability's sake, only files "
2069 2133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"in leaf checkins to be selected, but files may be edited via "
2070 2134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"non-leaf checkins by passing them as the <code>filename</code> "
2071 2135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"and <code>checkin</code> URL arguments to this page.</li>");
2072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- CX("<li>The editor \"stashes\" some number of local edits in "
2073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "one of <code>window.fileStorage</code> or "
2136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CX("<li>The editor stores some number of local edits in one of "
2137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "<code>window.fileStorage</code> or "
2074 2138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"<code>window.sessionStorage</code>, if able, but which storage "
2075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "is unspecified and may differ across environments. When saving "
2076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "or force-reloading a file, stashed edits to that version are "
2077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "discarded.</li>");
2139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "is unspecified and may differ across environments. When "
2140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "committing or force-reloading a file, stashed edits to that "
2141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "version are discarded.</li>");
2078 2142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("</ul>");
2079 2143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2080 2144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CX("</div>"/*#fileedit-tab-help*/);
2081 2145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2082 2146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{
2083 2147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!