@@ -739,10 +739,61 @@
739 739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
md5sum_blob(pOut, &mcksum);
740 740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(pOut, "Z %b\n", &mcksum);
741 741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pnFBcard ) *pnFBcard = nFBcard;
742 742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
743 743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Issue a warning and give the user an opportunity to abandon out
746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if a \r\n line ending is seen in a text file.
747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void cr_warning(const Blob *p, const char *zFilename){
749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nCrNl = 0; /* Number of \r\n line endings seen */
750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const unsigned char *z; /* File text */
751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n; /* Size of the file in bytes */
752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int lastNl = 0; /* Characters since last \n */
753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i; /* Loop counter */
754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zMsg; /* Warning message */
755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob fname; /* Relative pathname of the file */
756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob ans; /* Answer to continue prompt */
757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int allOk = 0; /* Set to true to disable this routine */
758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( allOk ) return;
760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = (unsigned char*)blob_buffer(p);
761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n = blob_size(p);
762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<n-1; i++){
763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned char c = z[i];
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c==0 ) return; /* It's binary */
765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='\n' ){
766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i>0 && z[i-1]=='\r' ){
767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCrNl++;
768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i>10000 ) break;
769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lastNl = 0;
771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lastNl++;
773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( lastNl>1000 ) return; /* Binary if any line longer than 1000 */
774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nCrNl ){
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char c;
778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file_relative_name(zFilename, &fname);
779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&ans);
780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zMsg = mprintf("%s contains CR/NL line endings; commit anyhow (y/N/a)?",
781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_str(&fname));
782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ prompt_user(zMsg, &ans);
783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zMsg);
784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ c = blob_str(&ans)[0];
785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='a' ){
786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ allOk = 1;
787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( c!='y' ){
788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_fatal("Abandoning commit due to CR+NL line endings in %s",
789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_str(&fname));
790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&ans);
792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&fname);
793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
744 795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
745 796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
746 797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: ci
747 798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: commit
748 799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -928,11 +979,11 @@
928 979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_blob(&unmodified,
929 980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT pathname FROM vfile"
930 981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE chnged = 0 AND origname IS NULL AND file_is_selected(id)"
931 982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
932 983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strlen(blob_str(&unmodified)) ){
933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_panic("file %s has not changed", blob_str(&unmodified));
984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_fatal("file %s has not changed", blob_str(&unmodified));
934 985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
935 986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
936 987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
937 988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
938 989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Do not allow a commit that will cause a fork unless the --force flag
@@ -979,25 +1030,28 @@
979 1030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Step 1: Insert records for all modified files into the blob
980 1031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** table. If there were arguments passed to this command, only
981 1032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the identified fils are inserted (if they have been modified).
982 1033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
983 1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q,
984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT id, %Q || pathname, mrid FROM vfile "
985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "WHERE chnged==1 AND NOT deleted AND file_is_selected(id)"
986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- , g.zLocalRoot
1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT id, %Q || pathname, mrid, %s FROM vfile "
1036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "WHERE chnged==1 AND NOT deleted AND file_is_selected(id)",
1037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.zLocalRoot, glob_expr("pathname", db_get("crnl-glob",""))
987 1038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
988 1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
989 1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int id, rid;
990 1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFullname;
991 1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob content;
1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int crnlOk;
992 1044 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
993 1045 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
id = db_column_int(&q, 0);
994 1046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFullname = db_column_text(&q, 1);
995 1047 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid = db_column_int(&q, 2);
1048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ crnlOk = db_column_int(&q, 3);
996 1049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
997 1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&content);
998 1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_read_from_file(&content, zFullname);
1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !crnlOk ) cr_warning(&content, zFullname);
999 1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nrid = content_put(&content);
1000 1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&content);
1001 1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rid>0 ){
1002 1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_deltify(rid, nrid, 0);
1003 1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1004 1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!