Fossil SCM

merge from trunk

wolfgang 2010-11-06 16:57 StvPrivateHook2 merge
Commit 3ea66260b5555d2e3c86eea8d5975161b0f5c6a2
+15 -13
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699699
** COMMAND: ci
700700
** COMMAND: commit
701701
**
702702
** Usage: %fossil commit ?OPTIONS? ?FILE...?
703703
**
704
+
705
+
704706
** Create a new version containing all of the changes in the current
705707
** checkout. You will be prompted to enter a check-in comment unless
706
-** the comment has been specified on the command-line using "-m". The
707
-** editor defined in the "editor" fossil option (see %fossil help set)
708
-** will be used, or from the "VISUAL" or "EDITOR" environment variables
709
-** (in that order) if no editor is set.
710
-**
711
-** You will be prompted for your GPG passphrase in order to sign the
712
-** new manifest unless the "--nosign" option is used. All files that
713
-** have changed will be committed unless some subset of files is
714
-** specified on the command line.
715
-**
716
-** The --branch option followed by a branch name cases the new check-in
708
+** the comment has been specified on the command-line using "-m" or a
709
+** file containing the comment using -M. The editor defined in the
710
+** "editor" fossil option (see %fossil <a>help</a> set) will be used, or from
711
+** the "VISUAL" or "EDITOR" environment variables (in that order) if
712
+** no editor is set.
713
+**
714
+** All files that have changed will be committed unless some subset of
715
+** files is specified on the command line.
716
+**
717
+** The --branch option followed by a branch name causes the new check-in
717718
** to be placed in the named branch. The --bgcolor option can be followed
718719
** by a color name (ex: '#ffc0c0') to specify the background color of
719720
** entries in the new branch when shown in the web timeline interface.
720721
**
721722
** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
725726
** Children of private check-ins are automatically private.
726727
**
727728
** Options:
728729
**
729730
** --comment|-m COMMENT-TEXT
731
+** --message-file|-M COMMENT-FILE
730732
** --branch NEW-BRANCH-NAME
731733
** --bgcolor COLOR
732734
** --nosign
733735
** --force|-f
734736
** --private
@@ -1065,11 +1067,11 @@
10651067
*/
10661068
vfile_aggregate_checksum_repository(nvid, &cksum2);
10671069
if( blob_compare(&cksum1, &cksum2) ){
10681070
fossil_panic("tree checksum does not match repository after commit");
10691071
}
1070
-
1072
+
10711073
/* Verify that the manifest checksum matches the expected checksum */
10721074
vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
10731075
if( blob_compare(&cksum1, &cksum1b) ){
10741076
fossil_panic("manifest checksum does not agree with manifest: "
10751077
"%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
10761078
}
10771079
if( blob_compare(&cksum1, &cksum2) ){
10781080
fossil_panic("tree checksum does not match manifest after commit: "
10791081
"%b versus %b", &cksum1, &cksum2);
10801082
}
1081
-
1083
+
10821084
/* Verify that the commit did not modify any disk images. */
10831085
vfile_aggregate_checksum_disk(nvid, &cksum2);
10841086
if( blob_compare(&cksum1, &cksum2) ){
10851087
fossil_panic("tree checksums before and after commit do not match");
10861088
}
10871089
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699 ** COMMAND: ci
700 ** COMMAND: commit
701 **
702 ** Usage: %fossil commit ?OPTIONS? ?FILE...?
703 **
 
 
704 ** Create a new version containing all of the changes in the current
705 ** checkout. You will be prompted to enter a check-in comment unless
706 ** the comment has been specified on the command-line using "-m". The
707 ** editor defined in the "editor" fossil option (see %fossil help set)
708 ** will be used, or from the "VISUAL" or "EDITOR" environment variables
709 ** (in that order) if no editor is set.
710 **
711 ** You will be prompted for your GPG passphrase in order to sign the
712 ** new manifest unless the "--nosign" option is used. All files that
713 ** have changed will be committed unless some subset of files is
714 ** specified on the command line.
715 **
716 ** The --branch option followed by a branch name cases the new check-in
717 ** to be placed in the named branch. The --bgcolor option can be followed
718 ** by a color name (ex: '#ffc0c0') to specify the background color of
719 ** entries in the new branch when shown in the web timeline interface.
720 **
721 ** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
725 ** Children of private check-ins are automatically private.
726 **
727 ** Options:
728 **
729 ** --comment|-m COMMENT-TEXT
 
730 ** --branch NEW-BRANCH-NAME
731 ** --bgcolor COLOR
732 ** --nosign
733 ** --force|-f
734 ** --private
@@ -1065,11 +1067,11 @@
1065 */
1066 vfile_aggregate_checksum_repository(nvid, &cksum2);
1067 if( blob_compare(&cksum1, &cksum2) ){
1068 fossil_panic("tree checksum does not match repository after commit");
1069 }
1070
1071 /* Verify that the manifest checksum matches the expected checksum */
1072 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
1073 if( blob_compare(&cksum1, &cksum1b) ){
1074 fossil_panic("manifest checksum does not agree with manifest: "
1075 "%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
1076 }
1077 if( blob_compare(&cksum1, &cksum2) ){
1078 fossil_panic("tree checksum does not match manifest after commit: "
1079 "%b versus %b", &cksum1, &cksum2);
1080 }
1081
1082 /* Verify that the commit did not modify any disk images. */
1083 vfile_aggregate_checksum_disk(nvid, &cksum2);
1084 if( blob_compare(&cksum1, &cksum2) ){
1085 fossil_panic("tree checksums before and after commit do not match");
1086 }
1087
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699 ** COMMAND: ci
700 ** COMMAND: commit
701 **
702 ** Usage: %fossil commit ?OPTIONS? ?FILE...?
703 **
704
705
706 ** Create a new version containing all of the changes in the current
707 ** checkout. You will be prompted to enter a check-in comment unless
708 ** the comment has been specified on the command-line using "-m" or a
709 ** file containing the comment using -M. The editor defined in the
710 ** "editor" fossil option (see %fossil <a>help</a> set) will be used, or from
711 ** the "VISUAL" or "EDITOR" environment variables (in that order) if
712 ** no editor is set.
713 **
714 ** All files that have changed will be committed unless some subset of
715 ** files is specified on the command line.
716 **
717 ** The --branch option followed by a branch name causes the new check-in
 
718 ** to be placed in the named branch. The --bgcolor option can be followed
719 ** by a color name (ex: '#ffc0c0') to specify the background color of
720 ** entries in the new branch when shown in the web timeline interface.
721 **
722 ** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
726 ** Children of private check-ins are automatically private.
727 **
728 ** Options:
729 **
730 ** --comment|-m COMMENT-TEXT
731 ** --message-file|-M COMMENT-FILE
732 ** --branch NEW-BRANCH-NAME
733 ** --bgcolor COLOR
734 ** --nosign
735 ** --force|-f
736 ** --private
@@ -1065,11 +1067,11 @@
1067 */
1068 vfile_aggregate_checksum_repository(nvid, &cksum2);
1069 if( blob_compare(&cksum1, &cksum2) ){
1070 fossil_panic("tree checksum does not match repository after commit");
1071 }
1072
1073 /* Verify that the manifest checksum matches the expected checksum */
1074 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
1075 if( blob_compare(&cksum1, &cksum1b) ){
1076 fossil_panic("manifest checksum does not agree with manifest: "
1077 "%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
1078 }
1079 if( blob_compare(&cksum1, &cksum2) ){
1080 fossil_panic("tree checksum does not match manifest after commit: "
1081 "%b versus %b", &cksum1, &cksum2);
1082 }
1083
1084 /* Verify that the commit did not modify any disk images. */
1085 vfile_aggregate_checksum_disk(nvid, &cksum2);
1086 if( blob_compare(&cksum1, &cksum2) ){
1087 fossil_panic("tree checksums before and after commit do not match");
1088 }
1089
+15 -13
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699699
** COMMAND: ci
700700
** COMMAND: commit
701701
**
702702
** Usage: %fossil commit ?OPTIONS? ?FILE...?
703703
**
704
+
705
+
704706
** Create a new version containing all of the changes in the current
705707
** checkout. You will be prompted to enter a check-in comment unless
706
-** the comment has been specified on the command-line using "-m". The
707
-** editor defined in the "editor" fossil option (see %fossil help set)
708
-** will be used, or from the "VISUAL" or "EDITOR" environment variables
709
-** (in that order) if no editor is set.
710
-**
711
-** You will be prompted for your GPG passphrase in order to sign the
712
-** new manifest unless the "--nosign" option is used. All files that
713
-** have changed will be committed unless some subset of files is
714
-** specified on the command line.
715
-**
716
-** The --branch option followed by a branch name cases the new check-in
708
+** the comment has been specified on the command-line using "-m" or a
709
+** file containing the comment using -M. The editor defined in the
710
+** "editor" fossil option (see %fossil <a>help</a> set) will be used, or from
711
+** the "VISUAL" or "EDITOR" environment variables (in that order) if
712
+** no editor is set.
713
+**
714
+** All files that have changed will be committed unless some subset of
715
+** files is specified on the command line.
716
+**
717
+** The --branch option followed by a branch name causes the new check-in
717718
** to be placed in the named branch. The --bgcolor option can be followed
718719
** by a color name (ex: '#ffc0c0') to specify the background color of
719720
** entries in the new branch when shown in the web timeline interface.
720721
**
721722
** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
725726
** Children of private check-ins are automatically private.
726727
**
727728
** Options:
728729
**
729730
** --comment|-m COMMENT-TEXT
731
+** --message-file|-M COMMENT-FILE
730732
** --branch NEW-BRANCH-NAME
731733
** --bgcolor COLOR
732734
** --nosign
733735
** --force|-f
734736
** --private
@@ -1065,11 +1067,11 @@
10651067
*/
10661068
vfile_aggregate_checksum_repository(nvid, &cksum2);
10671069
if( blob_compare(&cksum1, &cksum2) ){
10681070
fossil_panic("tree checksum does not match repository after commit");
10691071
}
1070
-
1072
+
10711073
/* Verify that the manifest checksum matches the expected checksum */
10721074
vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
10731075
if( blob_compare(&cksum1, &cksum1b) ){
10741076
fossil_panic("manifest checksum does not agree with manifest: "
10751077
"%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
10761078
}
10771079
if( blob_compare(&cksum1, &cksum2) ){
10781080
fossil_panic("tree checksum does not match manifest after commit: "
10791081
"%b versus %b", &cksum1, &cksum2);
10801082
}
1081
-
1083
+
10821084
/* Verify that the commit did not modify any disk images. */
10831085
vfile_aggregate_checksum_disk(nvid, &cksum2);
10841086
if( blob_compare(&cksum1, &cksum2) ){
10851087
fossil_panic("tree checksums before and after commit do not match");
10861088
}
10871089
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699 ** COMMAND: ci
700 ** COMMAND: commit
701 **
702 ** Usage: %fossil commit ?OPTIONS? ?FILE...?
703 **
 
 
704 ** Create a new version containing all of the changes in the current
705 ** checkout. You will be prompted to enter a check-in comment unless
706 ** the comment has been specified on the command-line using "-m". The
707 ** editor defined in the "editor" fossil option (see %fossil help set)
708 ** will be used, or from the "VISUAL" or "EDITOR" environment variables
709 ** (in that order) if no editor is set.
710 **
711 ** You will be prompted for your GPG passphrase in order to sign the
712 ** new manifest unless the "--nosign" option is used. All files that
713 ** have changed will be committed unless some subset of files is
714 ** specified on the command line.
715 **
716 ** The --branch option followed by a branch name cases the new check-in
717 ** to be placed in the named branch. The --bgcolor option can be followed
718 ** by a color name (ex: '#ffc0c0') to specify the background color of
719 ** entries in the new branch when shown in the web timeline interface.
720 **
721 ** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
725 ** Children of private check-ins are automatically private.
726 **
727 ** Options:
728 **
729 ** --comment|-m COMMENT-TEXT
 
730 ** --branch NEW-BRANCH-NAME
731 ** --bgcolor COLOR
732 ** --nosign
733 ** --force|-f
734 ** --private
@@ -1065,11 +1067,11 @@
1065 */
1066 vfile_aggregate_checksum_repository(nvid, &cksum2);
1067 if( blob_compare(&cksum1, &cksum2) ){
1068 fossil_panic("tree checksum does not match repository after commit");
1069 }
1070
1071 /* Verify that the manifest checksum matches the expected checksum */
1072 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
1073 if( blob_compare(&cksum1, &cksum1b) ){
1074 fossil_panic("manifest checksum does not agree with manifest: "
1075 "%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
1076 }
1077 if( blob_compare(&cksum1, &cksum2) ){
1078 fossil_panic("tree checksum does not match manifest after commit: "
1079 "%b versus %b", &cksum1, &cksum2);
1080 }
1081
1082 /* Verify that the commit did not modify any disk images. */
1083 vfile_aggregate_checksum_disk(nvid, &cksum2);
1084 if( blob_compare(&cksum1, &cksum2) ){
1085 fossil_panic("tree checksums before and after commit do not match");
1086 }
1087
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699 ** COMMAND: ci
700 ** COMMAND: commit
701 **
702 ** Usage: %fossil commit ?OPTIONS? ?FILE...?
703 **
704
705
706 ** Create a new version containing all of the changes in the current
707 ** checkout. You will be prompted to enter a check-in comment unless
708 ** the comment has been specified on the command-line using "-m" or a
709 ** file containing the comment using -M. The editor defined in the
710 ** "editor" fossil option (see %fossil <a>help</a> set) will be used, or from
711 ** the "VISUAL" or "EDITOR" environment variables (in that order) if
712 ** no editor is set.
713 **
714 ** All files that have changed will be committed unless some subset of
715 ** files is specified on the command line.
716 **
717 ** The --branch option followed by a branch name causes the new check-in
 
718 ** to be placed in the named branch. The --bgcolor option can be followed
719 ** by a color name (ex: '#ffc0c0') to specify the background color of
720 ** entries in the new branch when shown in the web timeline interface.
721 **
722 ** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
726 ** Children of private check-ins are automatically private.
727 **
728 ** Options:
729 **
730 ** --comment|-m COMMENT-TEXT
731 ** --message-file|-M COMMENT-FILE
732 ** --branch NEW-BRANCH-NAME
733 ** --bgcolor COLOR
734 ** --nosign
735 ** --force|-f
736 ** --private
@@ -1065,11 +1067,11 @@
1067 */
1068 vfile_aggregate_checksum_repository(nvid, &cksum2);
1069 if( blob_compare(&cksum1, &cksum2) ){
1070 fossil_panic("tree checksum does not match repository after commit");
1071 }
1072
1073 /* Verify that the manifest checksum matches the expected checksum */
1074 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
1075 if( blob_compare(&cksum1, &cksum1b) ){
1076 fossil_panic("manifest checksum does not agree with manifest: "
1077 "%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
1078 }
1079 if( blob_compare(&cksum1, &cksum2) ){
1080 fossil_panic("tree checksum does not match manifest after commit: "
1081 "%b versus %b", &cksum1, &cksum2);
1082 }
1083
1084 /* Verify that the commit did not modify any disk images. */
1085 vfile_aggregate_checksum_disk(nvid, &cksum2);
1086 if( blob_compare(&cksum1, &cksum2) ){
1087 fossil_panic("tree checksums before and after commit do not match");
1088 }
1089
+15 -13
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699699
** COMMAND: ci
700700
** COMMAND: commit
701701
**
702702
** Usage: %fossil commit ?OPTIONS? ?FILE...?
703703
**
704
+
705
+
704706
** Create a new version containing all of the changes in the current
705707
** checkout. You will be prompted to enter a check-in comment unless
706
-** the comment has been specified on the command-line using "-m". The
707
-** editor defined in the "editor" fossil option (see %fossil help set)
708
-** will be used, or from the "VISUAL" or "EDITOR" environment variables
709
-** (in that order) if no editor is set.
710
-**
711
-** You will be prompted for your GPG passphrase in order to sign the
712
-** new manifest unless the "--nosign" option is used. All files that
713
-** have changed will be committed unless some subset of files is
714
-** specified on the command line.
715
-**
716
-** The --branch option followed by a branch name cases the new check-in
708
+** the comment has been specified on the command-line using "-m" or a
709
+** file containing the comment using -M. The editor defined in the
710
+** "editor" fossil option (see %fossil <a>help</a> set) will be used, or from
711
+** the "VISUAL" or "EDITOR" environment variables (in that order) if
712
+** no editor is set.
713
+**
714
+** All files that have changed will be committed unless some subset of
715
+** files is specified on the command line.
716
+**
717
+** The --branch option followed by a branch name causes the new check-in
717718
** to be placed in the named branch. The --bgcolor option can be followed
718719
** by a color name (ex: '#ffc0c0') to specify the background color of
719720
** entries in the new branch when shown in the web timeline interface.
720721
**
721722
** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
725726
** Children of private check-ins are automatically private.
726727
**
727728
** Options:
728729
**
729730
** --comment|-m COMMENT-TEXT
731
+** --message-file|-M COMMENT-FILE
730732
** --branch NEW-BRANCH-NAME
731733
** --bgcolor COLOR
732734
** --nosign
733735
** --force|-f
734736
** --private
@@ -1065,11 +1067,11 @@
10651067
*/
10661068
vfile_aggregate_checksum_repository(nvid, &cksum2);
10671069
if( blob_compare(&cksum1, &cksum2) ){
10681070
fossil_panic("tree checksum does not match repository after commit");
10691071
}
1070
-
1072
+
10711073
/* Verify that the manifest checksum matches the expected checksum */
10721074
vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
10731075
if( blob_compare(&cksum1, &cksum1b) ){
10741076
fossil_panic("manifest checksum does not agree with manifest: "
10751077
"%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
10761078
}
10771079
if( blob_compare(&cksum1, &cksum2) ){
10781080
fossil_panic("tree checksum does not match manifest after commit: "
10791081
"%b versus %b", &cksum1, &cksum2);
10801082
}
1081
-
1083
+
10821084
/* Verify that the commit did not modify any disk images. */
10831085
vfile_aggregate_checksum_disk(nvid, &cksum2);
10841086
if( blob_compare(&cksum1, &cksum2) ){
10851087
fossil_panic("tree checksums before and after commit do not match");
10861088
}
10871089
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699 ** COMMAND: ci
700 ** COMMAND: commit
701 **
702 ** Usage: %fossil commit ?OPTIONS? ?FILE...?
703 **
 
 
704 ** Create a new version containing all of the changes in the current
705 ** checkout. You will be prompted to enter a check-in comment unless
706 ** the comment has been specified on the command-line using "-m". The
707 ** editor defined in the "editor" fossil option (see %fossil help set)
708 ** will be used, or from the "VISUAL" or "EDITOR" environment variables
709 ** (in that order) if no editor is set.
710 **
711 ** You will be prompted for your GPG passphrase in order to sign the
712 ** new manifest unless the "--nosign" option is used. All files that
713 ** have changed will be committed unless some subset of files is
714 ** specified on the command line.
715 **
716 ** The --branch option followed by a branch name cases the new check-in
717 ** to be placed in the named branch. The --bgcolor option can be followed
718 ** by a color name (ex: '#ffc0c0') to specify the background color of
719 ** entries in the new branch when shown in the web timeline interface.
720 **
721 ** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
725 ** Children of private check-ins are automatically private.
726 **
727 ** Options:
728 **
729 ** --comment|-m COMMENT-TEXT
 
730 ** --branch NEW-BRANCH-NAME
731 ** --bgcolor COLOR
732 ** --nosign
733 ** --force|-f
734 ** --private
@@ -1065,11 +1067,11 @@
1065 */
1066 vfile_aggregate_checksum_repository(nvid, &cksum2);
1067 if( blob_compare(&cksum1, &cksum2) ){
1068 fossil_panic("tree checksum does not match repository after commit");
1069 }
1070
1071 /* Verify that the manifest checksum matches the expected checksum */
1072 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
1073 if( blob_compare(&cksum1, &cksum1b) ){
1074 fossil_panic("manifest checksum does not agree with manifest: "
1075 "%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
1076 }
1077 if( blob_compare(&cksum1, &cksum2) ){
1078 fossil_panic("tree checksum does not match manifest after commit: "
1079 "%b versus %b", &cksum1, &cksum2);
1080 }
1081
1082 /* Verify that the commit did not modify any disk images. */
1083 vfile_aggregate_checksum_disk(nvid, &cksum2);
1084 if( blob_compare(&cksum1, &cksum2) ){
1085 fossil_panic("tree checksums before and after commit do not match");
1086 }
1087
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699 ** COMMAND: ci
700 ** COMMAND: commit
701 **
702 ** Usage: %fossil commit ?OPTIONS? ?FILE...?
703 **
704
705
706 ** Create a new version containing all of the changes in the current
707 ** checkout. You will be prompted to enter a check-in comment unless
708 ** the comment has been specified on the command-line using "-m" or a
709 ** file containing the comment using -M. The editor defined in the
710 ** "editor" fossil option (see %fossil <a>help</a> set) will be used, or from
711 ** the "VISUAL" or "EDITOR" environment variables (in that order) if
712 ** no editor is set.
713 **
714 ** All files that have changed will be committed unless some subset of
715 ** files is specified on the command line.
716 **
717 ** The --branch option followed by a branch name causes the new check-in
 
718 ** to be placed in the named branch. The --bgcolor option can be followed
719 ** by a color name (ex: '#ffc0c0') to specify the background color of
720 ** entries in the new branch when shown in the web timeline interface.
721 **
722 ** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
726 ** Children of private check-ins are automatically private.
727 **
728 ** Options:
729 **
730 ** --comment|-m COMMENT-TEXT
731 ** --message-file|-M COMMENT-FILE
732 ** --branch NEW-BRANCH-NAME
733 ** --bgcolor COLOR
734 ** --nosign
735 ** --force|-f
736 ** --private
@@ -1065,11 +1067,11 @@
1067 */
1068 vfile_aggregate_checksum_repository(nvid, &cksum2);
1069 if( blob_compare(&cksum1, &cksum2) ){
1070 fossil_panic("tree checksum does not match repository after commit");
1071 }
1072
1073 /* Verify that the manifest checksum matches the expected checksum */
1074 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
1075 if( blob_compare(&cksum1, &cksum1b) ){
1076 fossil_panic("manifest checksum does not agree with manifest: "
1077 "%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
1078 }
1079 if( blob_compare(&cksum1, &cksum2) ){
1080 fossil_panic("tree checksum does not match manifest after commit: "
1081 "%b versus %b", &cksum1, &cksum2);
1082 }
1083
1084 /* Verify that the commit did not modify any disk images. */
1085 vfile_aggregate_checksum_disk(nvid, &cksum2);
1086 if( blob_compare(&cksum1, &cksum2) ){
1087 fossil_panic("tree checksums before and after commit do not match");
1088 }
1089
+15 -13
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699699
** COMMAND: ci
700700
** COMMAND: commit
701701
**
702702
** Usage: %fossil commit ?OPTIONS? ?FILE...?
703703
**
704
+
705
+
704706
** Create a new version containing all of the changes in the current
705707
** checkout. You will be prompted to enter a check-in comment unless
706
-** the comment has been specified on the command-line using "-m". The
707
-** editor defined in the "editor" fossil option (see %fossil help set)
708
-** will be used, or from the "VISUAL" or "EDITOR" environment variables
709
-** (in that order) if no editor is set.
710
-**
711
-** You will be prompted for your GPG passphrase in order to sign the
712
-** new manifest unless the "--nosign" option is used. All files that
713
-** have changed will be committed unless some subset of files is
714
-** specified on the command line.
715
-**
716
-** The --branch option followed by a branch name cases the new check-in
708
+** the comment has been specified on the command-line using "-m" or a
709
+** file containing the comment using -M. The editor defined in the
710
+** "editor" fossil option (see %fossil <a>help</a> set) will be used, or from
711
+** the "VISUAL" or "EDITOR" environment variables (in that order) if
712
+** no editor is set.
713
+**
714
+** All files that have changed will be committed unless some subset of
715
+** files is specified on the command line.
716
+**
717
+** The --branch option followed by a branch name causes the new check-in
717718
** to be placed in the named branch. The --bgcolor option can be followed
718719
** by a color name (ex: '#ffc0c0') to specify the background color of
719720
** entries in the new branch when shown in the web timeline interface.
720721
**
721722
** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
725726
** Children of private check-ins are automatically private.
726727
**
727728
** Options:
728729
**
729730
** --comment|-m COMMENT-TEXT
731
+** --message-file|-M COMMENT-FILE
730732
** --branch NEW-BRANCH-NAME
731733
** --bgcolor COLOR
732734
** --nosign
733735
** --force|-f
734736
** --private
@@ -1065,11 +1067,11 @@
10651067
*/
10661068
vfile_aggregate_checksum_repository(nvid, &cksum2);
10671069
if( blob_compare(&cksum1, &cksum2) ){
10681070
fossil_panic("tree checksum does not match repository after commit");
10691071
}
1070
-
1072
+
10711073
/* Verify that the manifest checksum matches the expected checksum */
10721074
vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
10731075
if( blob_compare(&cksum1, &cksum1b) ){
10741076
fossil_panic("manifest checksum does not agree with manifest: "
10751077
"%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
10761078
}
10771079
if( blob_compare(&cksum1, &cksum2) ){
10781080
fossil_panic("tree checksum does not match manifest after commit: "
10791081
"%b versus %b", &cksum1, &cksum2);
10801082
}
1081
-
1083
+
10821084
/* Verify that the commit did not modify any disk images. */
10831085
vfile_aggregate_checksum_disk(nvid, &cksum2);
10841086
if( blob_compare(&cksum1, &cksum2) ){
10851087
fossil_panic("tree checksums before and after commit do not match");
10861088
}
10871089
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699 ** COMMAND: ci
700 ** COMMAND: commit
701 **
702 ** Usage: %fossil commit ?OPTIONS? ?FILE...?
703 **
 
 
704 ** Create a new version containing all of the changes in the current
705 ** checkout. You will be prompted to enter a check-in comment unless
706 ** the comment has been specified on the command-line using "-m". The
707 ** editor defined in the "editor" fossil option (see %fossil help set)
708 ** will be used, or from the "VISUAL" or "EDITOR" environment variables
709 ** (in that order) if no editor is set.
710 **
711 ** You will be prompted for your GPG passphrase in order to sign the
712 ** new manifest unless the "--nosign" option is used. All files that
713 ** have changed will be committed unless some subset of files is
714 ** specified on the command line.
715 **
716 ** The --branch option followed by a branch name cases the new check-in
717 ** to be placed in the named branch. The --bgcolor option can be followed
718 ** by a color name (ex: '#ffc0c0') to specify the background color of
719 ** entries in the new branch when shown in the web timeline interface.
720 **
721 ** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
725 ** Children of private check-ins are automatically private.
726 **
727 ** Options:
728 **
729 ** --comment|-m COMMENT-TEXT
 
730 ** --branch NEW-BRANCH-NAME
731 ** --bgcolor COLOR
732 ** --nosign
733 ** --force|-f
734 ** --private
@@ -1065,11 +1067,11 @@
1065 */
1066 vfile_aggregate_checksum_repository(nvid, &cksum2);
1067 if( blob_compare(&cksum1, &cksum2) ){
1068 fossil_panic("tree checksum does not match repository after commit");
1069 }
1070
1071 /* Verify that the manifest checksum matches the expected checksum */
1072 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
1073 if( blob_compare(&cksum1, &cksum1b) ){
1074 fossil_panic("manifest checksum does not agree with manifest: "
1075 "%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
1076 }
1077 if( blob_compare(&cksum1, &cksum2) ){
1078 fossil_panic("tree checksum does not match manifest after commit: "
1079 "%b versus %b", &cksum1, &cksum2);
1080 }
1081
1082 /* Verify that the commit did not modify any disk images. */
1083 vfile_aggregate_checksum_disk(nvid, &cksum2);
1084 if( blob_compare(&cksum1, &cksum2) ){
1085 fossil_panic("tree checksums before and after commit do not match");
1086 }
1087
--- src/checkin.c
+++ src/checkin.c
@@ -699,23 +699,24 @@
699 ** COMMAND: ci
700 ** COMMAND: commit
701 **
702 ** Usage: %fossil commit ?OPTIONS? ?FILE...?
703 **
704
705
706 ** Create a new version containing all of the changes in the current
707 ** checkout. You will be prompted to enter a check-in comment unless
708 ** the comment has been specified on the command-line using "-m" or a
709 ** file containing the comment using -M. The editor defined in the
710 ** "editor" fossil option (see %fossil <a>help</a> set) will be used, or from
711 ** the "VISUAL" or "EDITOR" environment variables (in that order) if
712 ** no editor is set.
713 **
714 ** All files that have changed will be committed unless some subset of
715 ** files is specified on the command line.
716 **
717 ** The --branch option followed by a branch name causes the new check-in
 
718 ** to be placed in the named branch. The --bgcolor option can be followed
719 ** by a color name (ex: '#ffc0c0') to specify the background color of
720 ** entries in the new branch when shown in the web timeline interface.
721 **
722 ** A check-in is not permitted to fork unless the --force or -f option
@@ -725,10 +726,11 @@
726 ** Children of private check-ins are automatically private.
727 **
728 ** Options:
729 **
730 ** --comment|-m COMMENT-TEXT
731 ** --message-file|-M COMMENT-FILE
732 ** --branch NEW-BRANCH-NAME
733 ** --bgcolor COLOR
734 ** --nosign
735 ** --force|-f
736 ** --private
@@ -1065,11 +1067,11 @@
1067 */
1068 vfile_aggregate_checksum_repository(nvid, &cksum2);
1069 if( blob_compare(&cksum1, &cksum2) ){
1070 fossil_panic("tree checksum does not match repository after commit");
1071 }
1072
1073 /* Verify that the manifest checksum matches the expected checksum */
1074 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b);
1075 if( blob_compare(&cksum1, &cksum1b) ){
1076 fossil_panic("manifest checksum does not agree with manifest: "
1077 "%b versus %b", &cksum1, &cksum1b);
@@ -1076,11 +1078,11 @@
1078 }
1079 if( blob_compare(&cksum1, &cksum2) ){
1080 fossil_panic("tree checksum does not match manifest after commit: "
1081 "%b versus %b", &cksum1, &cksum2);
1082 }
1083
1084 /* Verify that the commit did not modify any disk images. */
1085 vfile_aggregate_checksum_disk(nvid, &cksum2);
1086 if( blob_compare(&cksum1, &cksum2) ){
1087 fossil_panic("tree checksums before and after commit do not match");
1088 }
1089
+1 -1
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
15231523
{ "gdiff-command", 0, 16, "gdiff" },
15241524
{ "ignore-glob", 0, 40, "" },
15251525
{ "http-port", 0, 16, "8080" },
15261526
{ "localauth", 0, 0, "off" },
15271527
{ "manifest", 0, 0, "off" },
1528
- { "mtime-changes", 0, 0, "off" },
1528
+ { "mtime-changes", 0, 0, "on" },
15291529
{ "pgp-command", 0, 32, "gpg --clearsign -o " },
15301530
{ "proxy", 0, 32, "off" },
15311531
{ "push-hook-cmd", 0, 32, "" },
15321532
{ "push-hook-force",
15331533
0, 0, "" },
15341534
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
1523 { "gdiff-command", 0, 16, "gdiff" },
1524 { "ignore-glob", 0, 40, "" },
1525 { "http-port", 0, 16, "8080" },
1526 { "localauth", 0, 0, "off" },
1527 { "manifest", 0, 0, "off" },
1528 { "mtime-changes", 0, 0, "off" },
1529 { "pgp-command", 0, 32, "gpg --clearsign -o " },
1530 { "proxy", 0, 32, "off" },
1531 { "push-hook-cmd", 0, 32, "" },
1532 { "push-hook-force",
1533 0, 0, "" },
1534
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
1523 { "gdiff-command", 0, 16, "gdiff" },
1524 { "ignore-glob", 0, 40, "" },
1525 { "http-port", 0, 16, "8080" },
1526 { "localauth", 0, 0, "off" },
1527 { "manifest", 0, 0, "off" },
1528 { "mtime-changes", 0, 0, "on" },
1529 { "pgp-command", 0, 32, "gpg --clearsign -o " },
1530 { "proxy", 0, 32, "off" },
1531 { "push-hook-cmd", 0, 32, "" },
1532 { "push-hook-force",
1533 0, 0, "" },
1534
+1 -1
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
15231523
{ "gdiff-command", 0, 16, "gdiff" },
15241524
{ "ignore-glob", 0, 40, "" },
15251525
{ "http-port", 0, 16, "8080" },
15261526
{ "localauth", 0, 0, "off" },
15271527
{ "manifest", 0, 0, "off" },
1528
- { "mtime-changes", 0, 0, "off" },
1528
+ { "mtime-changes", 0, 0, "on" },
15291529
{ "pgp-command", 0, 32, "gpg --clearsign -o " },
15301530
{ "proxy", 0, 32, "off" },
15311531
{ "push-hook-cmd", 0, 32, "" },
15321532
{ "push-hook-force",
15331533
0, 0, "" },
15341534
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
1523 { "gdiff-command", 0, 16, "gdiff" },
1524 { "ignore-glob", 0, 40, "" },
1525 { "http-port", 0, 16, "8080" },
1526 { "localauth", 0, 0, "off" },
1527 { "manifest", 0, 0, "off" },
1528 { "mtime-changes", 0, 0, "off" },
1529 { "pgp-command", 0, 32, "gpg --clearsign -o " },
1530 { "proxy", 0, 32, "off" },
1531 { "push-hook-cmd", 0, 32, "" },
1532 { "push-hook-force",
1533 0, 0, "" },
1534
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
1523 { "gdiff-command", 0, 16, "gdiff" },
1524 { "ignore-glob", 0, 40, "" },
1525 { "http-port", 0, 16, "8080" },
1526 { "localauth", 0, 0, "off" },
1527 { "manifest", 0, 0, "off" },
1528 { "mtime-changes", 0, 0, "on" },
1529 { "pgp-command", 0, 32, "gpg --clearsign -o " },
1530 { "proxy", 0, 32, "off" },
1531 { "push-hook-cmd", 0, 32, "" },
1532 { "push-hook-force",
1533 0, 0, "" },
1534
+1 -1
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
15231523
{ "gdiff-command", 0, 16, "gdiff" },
15241524
{ "ignore-glob", 0, 40, "" },
15251525
{ "http-port", 0, 16, "8080" },
15261526
{ "localauth", 0, 0, "off" },
15271527
{ "manifest", 0, 0, "off" },
1528
- { "mtime-changes", 0, 0, "off" },
1528
+ { "mtime-changes", 0, 0, "on" },
15291529
{ "pgp-command", 0, 32, "gpg --clearsign -o " },
15301530
{ "proxy", 0, 32, "off" },
15311531
{ "push-hook-cmd", 0, 32, "" },
15321532
{ "push-hook-force",
15331533
0, 0, "" },
15341534
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
1523 { "gdiff-command", 0, 16, "gdiff" },
1524 { "ignore-glob", 0, 40, "" },
1525 { "http-port", 0, 16, "8080" },
1526 { "localauth", 0, 0, "off" },
1527 { "manifest", 0, 0, "off" },
1528 { "mtime-changes", 0, 0, "off" },
1529 { "pgp-command", 0, 32, "gpg --clearsign -o " },
1530 { "proxy", 0, 32, "off" },
1531 { "push-hook-cmd", 0, 32, "" },
1532 { "push-hook-force",
1533 0, 0, "" },
1534
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
1523 { "gdiff-command", 0, 16, "gdiff" },
1524 { "ignore-glob", 0, 40, "" },
1525 { "http-port", 0, 16, "8080" },
1526 { "localauth", 0, 0, "off" },
1527 { "manifest", 0, 0, "off" },
1528 { "mtime-changes", 0, 0, "on" },
1529 { "pgp-command", 0, 32, "gpg --clearsign -o " },
1530 { "proxy", 0, 32, "off" },
1531 { "push-hook-cmd", 0, 32, "" },
1532 { "push-hook-force",
1533 0, 0, "" },
1534
+1 -1
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
15231523
{ "gdiff-command", 0, 16, "gdiff" },
15241524
{ "ignore-glob", 0, 40, "" },
15251525
{ "http-port", 0, 16, "8080" },
15261526
{ "localauth", 0, 0, "off" },
15271527
{ "manifest", 0, 0, "off" },
1528
- { "mtime-changes", 0, 0, "off" },
1528
+ { "mtime-changes", 0, 0, "on" },
15291529
{ "pgp-command", 0, 32, "gpg --clearsign -o " },
15301530
{ "proxy", 0, 32, "off" },
15311531
{ "push-hook-cmd", 0, 32, "" },
15321532
{ "push-hook-force",
15331533
0, 0, "" },
15341534
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
1523 { "gdiff-command", 0, 16, "gdiff" },
1524 { "ignore-glob", 0, 40, "" },
1525 { "http-port", 0, 16, "8080" },
1526 { "localauth", 0, 0, "off" },
1527 { "manifest", 0, 0, "off" },
1528 { "mtime-changes", 0, 0, "off" },
1529 { "pgp-command", 0, 32, "gpg --clearsign -o " },
1530 { "proxy", 0, 32, "off" },
1531 { "push-hook-cmd", 0, 32, "" },
1532 { "push-hook-force",
1533 0, 0, "" },
1534
--- src/db.c
+++ src/db.c
@@ -1523,11 +1523,11 @@
1523 { "gdiff-command", 0, 16, "gdiff" },
1524 { "ignore-glob", 0, 40, "" },
1525 { "http-port", 0, 16, "8080" },
1526 { "localauth", 0, 0, "off" },
1527 { "manifest", 0, 0, "off" },
1528 { "mtime-changes", 0, 0, "on" },
1529 { "pgp-command", 0, 32, "gpg --clearsign -o " },
1530 { "proxy", 0, 32, "off" },
1531 { "push-hook-cmd", 0, 32, "" },
1532 { "push-hook-force",
1533 0, 0, "" },
1534
+5 -2
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103103
if( i>0 && g.urlPath[i-1]=='/' ){
104104
zSep = "";
105105
}else{
106106
zSep = "/";
107107
}
108
- blob_appendf(pHdr, "POST %s%sxfer HTTP/1.0\r\n", g.urlPath, zSep);
108
+ blob_appendf(pHdr, "POST %s%sxfer/xfer HTTP/1.0\r\n", g.urlPath, zSep);
109109
if( g.urlProxyAuth ){
110110
blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111111
}
112112
blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113113
blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226226
}else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227227
int i, j;
228228
for(i=9; zLine[i] && zLine[i]==' '; i++){}
229229
if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230230
j = strlen(zLine) - 1;
231
- if( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ) zLine[j-4] = 0;
231
+ while( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ){
232
+ j -= 4;
233
+ zLine[j] = 0;
234
+ }
232235
fossil_print("redirect to %s\n", &zLine[i]);
233236
url_parse(&zLine[i]);
234237
transport_close();
235238
http_exchange(pSend, pReply, useLogin);
236239
return;
237240
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103 if( i>0 && g.urlPath[i-1]=='/' ){
104 zSep = "";
105 }else{
106 zSep = "/";
107 }
108 blob_appendf(pHdr, "POST %s%sxfer HTTP/1.0\r\n", g.urlPath, zSep);
109 if( g.urlProxyAuth ){
110 blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111 }
112 blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113 blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226 }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227 int i, j;
228 for(i=9; zLine[i] && zLine[i]==' '; i++){}
229 if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230 j = strlen(zLine) - 1;
231 if( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ) zLine[j-4] = 0;
 
 
 
232 fossil_print("redirect to %s\n", &zLine[i]);
233 url_parse(&zLine[i]);
234 transport_close();
235 http_exchange(pSend, pReply, useLogin);
236 return;
237
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103 if( i>0 && g.urlPath[i-1]=='/' ){
104 zSep = "";
105 }else{
106 zSep = "/";
107 }
108 blob_appendf(pHdr, "POST %s%sxfer/xfer HTTP/1.0\r\n", g.urlPath, zSep);
109 if( g.urlProxyAuth ){
110 blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111 }
112 blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113 blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226 }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227 int i, j;
228 for(i=9; zLine[i] && zLine[i]==' '; i++){}
229 if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230 j = strlen(zLine) - 1;
231 while( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ){
232 j -= 4;
233 zLine[j] = 0;
234 }
235 fossil_print("redirect to %s\n", &zLine[i]);
236 url_parse(&zLine[i]);
237 transport_close();
238 http_exchange(pSend, pReply, useLogin);
239 return;
240
+5 -2
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103103
if( i>0 && g.urlPath[i-1]=='/' ){
104104
zSep = "";
105105
}else{
106106
zSep = "/";
107107
}
108
- blob_appendf(pHdr, "POST %s%sxfer HTTP/1.0\r\n", g.urlPath, zSep);
108
+ blob_appendf(pHdr, "POST %s%sxfer/xfer HTTP/1.0\r\n", g.urlPath, zSep);
109109
if( g.urlProxyAuth ){
110110
blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111111
}
112112
blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113113
blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226226
}else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227227
int i, j;
228228
for(i=9; zLine[i] && zLine[i]==' '; i++){}
229229
if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230230
j = strlen(zLine) - 1;
231
- if( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ) zLine[j-4] = 0;
231
+ while( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ){
232
+ j -= 4;
233
+ zLine[j] = 0;
234
+ }
232235
fossil_print("redirect to %s\n", &zLine[i]);
233236
url_parse(&zLine[i]);
234237
transport_close();
235238
http_exchange(pSend, pReply, useLogin);
236239
return;
237240
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103 if( i>0 && g.urlPath[i-1]=='/' ){
104 zSep = "";
105 }else{
106 zSep = "/";
107 }
108 blob_appendf(pHdr, "POST %s%sxfer HTTP/1.0\r\n", g.urlPath, zSep);
109 if( g.urlProxyAuth ){
110 blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111 }
112 blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113 blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226 }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227 int i, j;
228 for(i=9; zLine[i] && zLine[i]==' '; i++){}
229 if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230 j = strlen(zLine) - 1;
231 if( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ) zLine[j-4] = 0;
 
 
 
232 fossil_print("redirect to %s\n", &zLine[i]);
233 url_parse(&zLine[i]);
234 transport_close();
235 http_exchange(pSend, pReply, useLogin);
236 return;
237
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103 if( i>0 && g.urlPath[i-1]=='/' ){
104 zSep = "";
105 }else{
106 zSep = "/";
107 }
108 blob_appendf(pHdr, "POST %s%sxfer/xfer HTTP/1.0\r\n", g.urlPath, zSep);
109 if( g.urlProxyAuth ){
110 blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111 }
112 blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113 blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226 }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227 int i, j;
228 for(i=9; zLine[i] && zLine[i]==' '; i++){}
229 if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230 j = strlen(zLine) - 1;
231 while( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ){
232 j -= 4;
233 zLine[j] = 0;
234 }
235 fossil_print("redirect to %s\n", &zLine[i]);
236 url_parse(&zLine[i]);
237 transport_close();
238 http_exchange(pSend, pReply, useLogin);
239 return;
240
+5 -2
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103103
if( i>0 && g.urlPath[i-1]=='/' ){
104104
zSep = "";
105105
}else{
106106
zSep = "/";
107107
}
108
- blob_appendf(pHdr, "POST %s%sxfer HTTP/1.0\r\n", g.urlPath, zSep);
108
+ blob_appendf(pHdr, "POST %s%sxfer/xfer HTTP/1.0\r\n", g.urlPath, zSep);
109109
if( g.urlProxyAuth ){
110110
blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111111
}
112112
blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113113
blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226226
}else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227227
int i, j;
228228
for(i=9; zLine[i] && zLine[i]==' '; i++){}
229229
if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230230
j = strlen(zLine) - 1;
231
- if( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ) zLine[j-4] = 0;
231
+ while( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ){
232
+ j -= 4;
233
+ zLine[j] = 0;
234
+ }
232235
fossil_print("redirect to %s\n", &zLine[i]);
233236
url_parse(&zLine[i]);
234237
transport_close();
235238
http_exchange(pSend, pReply, useLogin);
236239
return;
237240
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103 if( i>0 && g.urlPath[i-1]=='/' ){
104 zSep = "";
105 }else{
106 zSep = "/";
107 }
108 blob_appendf(pHdr, "POST %s%sxfer HTTP/1.0\r\n", g.urlPath, zSep);
109 if( g.urlProxyAuth ){
110 blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111 }
112 blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113 blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226 }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227 int i, j;
228 for(i=9; zLine[i] && zLine[i]==' '; i++){}
229 if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230 j = strlen(zLine) - 1;
231 if( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ) zLine[j-4] = 0;
 
 
 
232 fossil_print("redirect to %s\n", &zLine[i]);
233 url_parse(&zLine[i]);
234 transport_close();
235 http_exchange(pSend, pReply, useLogin);
236 return;
237
--- src/http.c
+++ src/http.c
@@ -103,11 +103,11 @@
103 if( i>0 && g.urlPath[i-1]=='/' ){
104 zSep = "";
105 }else{
106 zSep = "/";
107 }
108 blob_appendf(pHdr, "POST %s%sxfer/xfer HTTP/1.0\r\n", g.urlPath, zSep);
109 if( g.urlProxyAuth ){
110 blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth);
111 }
112 blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname);
113 blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n");
@@ -226,11 +226,14 @@
226 }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){
227 int i, j;
228 for(i=9; zLine[i] && zLine[i]==' '; i++){}
229 if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine);
230 j = strlen(zLine) - 1;
231 while( j>4 && strcmp(&zLine[j-4],"/xfer")==0 ){
232 j -= 4;
233 zLine[j] = 0;
234 }
235 fossil_print("redirect to %s\n", &zLine[i]);
236 url_parse(&zLine[i]);
237 transport_close();
238 http_exchange(pSend, pReply, useLogin);
239 return;
240
+4 -5
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
5151
** Return the name of the login cookie
5252
*/
5353
static char *login_cookie_name(void){
5454
static char *zCookieName = 0;
5555
if( zCookieName==0 ){
56
- int n = strlen(g.zTop);
57
- zCookieName = fossil_malloc( n*2+16 );
58
- /* 0123456789 12345 */
59
- strcpy(zCookieName, "fossil_login_");
60
- encode16((unsigned char*)g.zTop, (unsigned char*)&zCookieName[13], n);
56
+ unsigned int h = 0;
57
+ const char *z = g.zBaseURL;
58
+ while( *z ){ h = (h<<3) ^ (h>>26) ^ *(z++); }
59
+ zCookieName = mprintf("fossil_login_%08x", h);
6160
}
6261
return zCookieName;
6362
}
6463
6564
/*
6665
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
51 ** Return the name of the login cookie
52 */
53 static char *login_cookie_name(void){
54 static char *zCookieName = 0;
55 if( zCookieName==0 ){
56 int n = strlen(g.zTop);
57 zCookieName = fossil_malloc( n*2+16 );
58 /* 0123456789 12345 */
59 strcpy(zCookieName, "fossil_login_");
60 encode16((unsigned char*)g.zTop, (unsigned char*)&zCookieName[13], n);
61 }
62 return zCookieName;
63 }
64
65 /*
66
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
51 ** Return the name of the login cookie
52 */
53 static char *login_cookie_name(void){
54 static char *zCookieName = 0;
55 if( zCookieName==0 ){
56 unsigned int h = 0;
57 const char *z = g.zBaseURL;
58 while( *z ){ h = (h<<3) ^ (h>>26) ^ *(z++); }
59 zCookieName = mprintf("fossil_login_%08x", h);
 
60 }
61 return zCookieName;
62 }
63
64 /*
65
+4 -5
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
5151
** Return the name of the login cookie
5252
*/
5353
static char *login_cookie_name(void){
5454
static char *zCookieName = 0;
5555
if( zCookieName==0 ){
56
- int n = strlen(g.zTop);
57
- zCookieName = fossil_malloc( n*2+16 );
58
- /* 0123456789 12345 */
59
- strcpy(zCookieName, "fossil_login_");
60
- encode16((unsigned char*)g.zTop, (unsigned char*)&zCookieName[13], n);
56
+ unsigned int h = 0;
57
+ const char *z = g.zBaseURL;
58
+ while( *z ){ h = (h<<3) ^ (h>>26) ^ *(z++); }
59
+ zCookieName = mprintf("fossil_login_%08x", h);
6160
}
6261
return zCookieName;
6362
}
6463
6564
/*
6665
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
51 ** Return the name of the login cookie
52 */
53 static char *login_cookie_name(void){
54 static char *zCookieName = 0;
55 if( zCookieName==0 ){
56 int n = strlen(g.zTop);
57 zCookieName = fossil_malloc( n*2+16 );
58 /* 0123456789 12345 */
59 strcpy(zCookieName, "fossil_login_");
60 encode16((unsigned char*)g.zTop, (unsigned char*)&zCookieName[13], n);
61 }
62 return zCookieName;
63 }
64
65 /*
66
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
51 ** Return the name of the login cookie
52 */
53 static char *login_cookie_name(void){
54 static char *zCookieName = 0;
55 if( zCookieName==0 ){
56 unsigned int h = 0;
57 const char *z = g.zBaseURL;
58 while( *z ){ h = (h<<3) ^ (h>>26) ^ *(z++); }
59 zCookieName = mprintf("fossil_login_%08x", h);
 
60 }
61 return zCookieName;
62 }
63
64 /*
65
+4 -5
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
5151
** Return the name of the login cookie
5252
*/
5353
static char *login_cookie_name(void){
5454
static char *zCookieName = 0;
5555
if( zCookieName==0 ){
56
- int n = strlen(g.zTop);
57
- zCookieName = fossil_malloc( n*2+16 );
58
- /* 0123456789 12345 */
59
- strcpy(zCookieName, "fossil_login_");
60
- encode16((unsigned char*)g.zTop, (unsigned char*)&zCookieName[13], n);
56
+ unsigned int h = 0;
57
+ const char *z = g.zBaseURL;
58
+ while( *z ){ h = (h<<3) ^ (h>>26) ^ *(z++); }
59
+ zCookieName = mprintf("fossil_login_%08x", h);
6160
}
6261
return zCookieName;
6362
}
6463
6564
/*
6665
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
51 ** Return the name of the login cookie
52 */
53 static char *login_cookie_name(void){
54 static char *zCookieName = 0;
55 if( zCookieName==0 ){
56 int n = strlen(g.zTop);
57 zCookieName = fossil_malloc( n*2+16 );
58 /* 0123456789 12345 */
59 strcpy(zCookieName, "fossil_login_");
60 encode16((unsigned char*)g.zTop, (unsigned char*)&zCookieName[13], n);
61 }
62 return zCookieName;
63 }
64
65 /*
66
--- src/login.c
+++ src/login.c
@@ -51,15 +51,14 @@
51 ** Return the name of the login cookie
52 */
53 static char *login_cookie_name(void){
54 static char *zCookieName = 0;
55 if( zCookieName==0 ){
56 unsigned int h = 0;
57 const char *z = g.zBaseURL;
58 while( *z ){ h = (h<<3) ^ (h>>26) ^ *(z++); }
59 zCookieName = mprintf("fossil_login_%08x", h);
 
60 }
61 return zCookieName;
62 }
63
64 /*
65
+15 -8
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223223
*/
224224
int main(int argc, char **argv){
225225
const char *zCmdName = "unknown";
226226
int idx;
227227
int rc;
228
+ int mightBeCgi;
228229
229230
sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
230231
g.now = time(0);
231232
g.argc = argc;
232233
g.argv = argv;
233
- if( getenv("GATEWAY_INTERFACE")!=0 ){
234
- zCmdName = "cgi";
235
- }else if( argc<2 ){
236
- fprintf(stderr, "Usage: %s COMMAND ...\n"
237
- "\"%s help\" for a list of available commands\n"
238
- "\"%s help COMMAND\" for specific details\n",
239
- argv[0], argv[0], argv[0]);
240
- fossil_exit(1);
234
+ mightBeCgi = getenv("GATEWAY_INTERFACE")!=0;
235
+ if( argc<2 ){
236
+ if( mightBeCgi ){
237
+ zCmdName = "cgi";
238
+ }else{
239
+ fprintf(stderr, "Usage: %s COMMAND ...\n"
240
+ "\"%s help\" for a list of available commands\n"
241
+ "\"%s help COMMAND\" for specific details\n",
242
+ argv[0], argv[0], argv[0]);
243
+ fossil_exit(1);
244
+ }
241245
}else{
242246
g.fQuiet = find_option("quiet", 0, 0)!=0;
243247
g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
244248
g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
245249
g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
246250
g.zLogin = find_option("user", "U", 1);
247251
zCmdName = argv[1];
248252
}
249253
rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
254
+ if( rc==1 && mightBeCgi ){
255
+ rc = name_search("cgi", aCommand, count(aCommand), &idx);
256
+ }
250257
if( rc==1 ){
251258
fprintf(stderr,"%s: unknown command: %s\n"
252259
"%s: use \"help\" for more information\n",
253260
argv[0], zCmdName, argv[0]);
254261
fossil_exit(1);
255262
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223 */
224 int main(int argc, char **argv){
225 const char *zCmdName = "unknown";
226 int idx;
227 int rc;
 
228
229 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
230 g.now = time(0);
231 g.argc = argc;
232 g.argv = argv;
233 if( getenv("GATEWAY_INTERFACE")!=0 ){
234 zCmdName = "cgi";
235 }else if( argc<2 ){
236 fprintf(stderr, "Usage: %s COMMAND ...\n"
237 "\"%s help\" for a list of available commands\n"
238 "\"%s help COMMAND\" for specific details\n",
239 argv[0], argv[0], argv[0]);
240 fossil_exit(1);
 
 
 
241 }else{
242 g.fQuiet = find_option("quiet", 0, 0)!=0;
243 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
244 g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
245 g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
246 g.zLogin = find_option("user", "U", 1);
247 zCmdName = argv[1];
248 }
249 rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
 
 
 
250 if( rc==1 ){
251 fprintf(stderr,"%s: unknown command: %s\n"
252 "%s: use \"help\" for more information\n",
253 argv[0], zCmdName, argv[0]);
254 fossil_exit(1);
255
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223 */
224 int main(int argc, char **argv){
225 const char *zCmdName = "unknown";
226 int idx;
227 int rc;
228 int mightBeCgi;
229
230 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
231 g.now = time(0);
232 g.argc = argc;
233 g.argv = argv;
234 mightBeCgi = getenv("GATEWAY_INTERFACE")!=0;
235 if( argc<2 ){
236 if( mightBeCgi ){
237 zCmdName = "cgi";
238 }else{
239 fprintf(stderr, "Usage: %s COMMAND ...\n"
240 "\"%s help\" for a list of available commands\n"
241 "\"%s help COMMAND\" for specific details\n",
242 argv[0], argv[0], argv[0]);
243 fossil_exit(1);
244 }
245 }else{
246 g.fQuiet = find_option("quiet", 0, 0)!=0;
247 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
248 g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
249 g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
250 g.zLogin = find_option("user", "U", 1);
251 zCmdName = argv[1];
252 }
253 rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
254 if( rc==1 && mightBeCgi ){
255 rc = name_search("cgi", aCommand, count(aCommand), &idx);
256 }
257 if( rc==1 ){
258 fprintf(stderr,"%s: unknown command: %s\n"
259 "%s: use \"help\" for more information\n",
260 argv[0], zCmdName, argv[0]);
261 fossil_exit(1);
262
+15 -8
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223223
*/
224224
int main(int argc, char **argv){
225225
const char *zCmdName = "unknown";
226226
int idx;
227227
int rc;
228
+ int mightBeCgi;
228229
229230
sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
230231
g.now = time(0);
231232
g.argc = argc;
232233
g.argv = argv;
233
- if( getenv("GATEWAY_INTERFACE")!=0 ){
234
- zCmdName = "cgi";
235
- }else if( argc<2 ){
236
- fprintf(stderr, "Usage: %s COMMAND ...\n"
237
- "\"%s help\" for a list of available commands\n"
238
- "\"%s help COMMAND\" for specific details\n",
239
- argv[0], argv[0], argv[0]);
240
- fossil_exit(1);
234
+ mightBeCgi = getenv("GATEWAY_INTERFACE")!=0;
235
+ if( argc<2 ){
236
+ if( mightBeCgi ){
237
+ zCmdName = "cgi";
238
+ }else{
239
+ fprintf(stderr, "Usage: %s COMMAND ...\n"
240
+ "\"%s help\" for a list of available commands\n"
241
+ "\"%s help COMMAND\" for specific details\n",
242
+ argv[0], argv[0], argv[0]);
243
+ fossil_exit(1);
244
+ }
241245
}else{
242246
g.fQuiet = find_option("quiet", 0, 0)!=0;
243247
g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
244248
g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
245249
g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
246250
g.zLogin = find_option("user", "U", 1);
247251
zCmdName = argv[1];
248252
}
249253
rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
254
+ if( rc==1 && mightBeCgi ){
255
+ rc = name_search("cgi", aCommand, count(aCommand), &idx);
256
+ }
250257
if( rc==1 ){
251258
fprintf(stderr,"%s: unknown command: %s\n"
252259
"%s: use \"help\" for more information\n",
253260
argv[0], zCmdName, argv[0]);
254261
fossil_exit(1);
255262
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223 */
224 int main(int argc, char **argv){
225 const char *zCmdName = "unknown";
226 int idx;
227 int rc;
 
228
229 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
230 g.now = time(0);
231 g.argc = argc;
232 g.argv = argv;
233 if( getenv("GATEWAY_INTERFACE")!=0 ){
234 zCmdName = "cgi";
235 }else if( argc<2 ){
236 fprintf(stderr, "Usage: %s COMMAND ...\n"
237 "\"%s help\" for a list of available commands\n"
238 "\"%s help COMMAND\" for specific details\n",
239 argv[0], argv[0], argv[0]);
240 fossil_exit(1);
 
 
 
241 }else{
242 g.fQuiet = find_option("quiet", 0, 0)!=0;
243 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
244 g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
245 g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
246 g.zLogin = find_option("user", "U", 1);
247 zCmdName = argv[1];
248 }
249 rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
 
 
 
250 if( rc==1 ){
251 fprintf(stderr,"%s: unknown command: %s\n"
252 "%s: use \"help\" for more information\n",
253 argv[0], zCmdName, argv[0]);
254 fossil_exit(1);
255
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223 */
224 int main(int argc, char **argv){
225 const char *zCmdName = "unknown";
226 int idx;
227 int rc;
228 int mightBeCgi;
229
230 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
231 g.now = time(0);
232 g.argc = argc;
233 g.argv = argv;
234 mightBeCgi = getenv("GATEWAY_INTERFACE")!=0;
235 if( argc<2 ){
236 if( mightBeCgi ){
237 zCmdName = "cgi";
238 }else{
239 fprintf(stderr, "Usage: %s COMMAND ...\n"
240 "\"%s help\" for a list of available commands\n"
241 "\"%s help COMMAND\" for specific details\n",
242 argv[0], argv[0], argv[0]);
243 fossil_exit(1);
244 }
245 }else{
246 g.fQuiet = find_option("quiet", 0, 0)!=0;
247 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
248 g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
249 g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
250 g.zLogin = find_option("user", "U", 1);
251 zCmdName = argv[1];
252 }
253 rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
254 if( rc==1 && mightBeCgi ){
255 rc = name_search("cgi", aCommand, count(aCommand), &idx);
256 }
257 if( rc==1 ){
258 fprintf(stderr,"%s: unknown command: %s\n"
259 "%s: use \"help\" for more information\n",
260 argv[0], zCmdName, argv[0]);
261 fossil_exit(1);
262
+15 -8
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223223
*/
224224
int main(int argc, char **argv){
225225
const char *zCmdName = "unknown";
226226
int idx;
227227
int rc;
228
+ int mightBeCgi;
228229
229230
sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
230231
g.now = time(0);
231232
g.argc = argc;
232233
g.argv = argv;
233
- if( getenv("GATEWAY_INTERFACE")!=0 ){
234
- zCmdName = "cgi";
235
- }else if( argc<2 ){
236
- fprintf(stderr, "Usage: %s COMMAND ...\n"
237
- "\"%s help\" for a list of available commands\n"
238
- "\"%s help COMMAND\" for specific details\n",
239
- argv[0], argv[0], argv[0]);
240
- fossil_exit(1);
234
+ mightBeCgi = getenv("GATEWAY_INTERFACE")!=0;
235
+ if( argc<2 ){
236
+ if( mightBeCgi ){
237
+ zCmdName = "cgi";
238
+ }else{
239
+ fprintf(stderr, "Usage: %s COMMAND ...\n"
240
+ "\"%s help\" for a list of available commands\n"
241
+ "\"%s help COMMAND\" for specific details\n",
242
+ argv[0], argv[0], argv[0]);
243
+ fossil_exit(1);
244
+ }
241245
}else{
242246
g.fQuiet = find_option("quiet", 0, 0)!=0;
243247
g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
244248
g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
245249
g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
246250
g.zLogin = find_option("user", "U", 1);
247251
zCmdName = argv[1];
248252
}
249253
rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
254
+ if( rc==1 && mightBeCgi ){
255
+ rc = name_search("cgi", aCommand, count(aCommand), &idx);
256
+ }
250257
if( rc==1 ){
251258
fprintf(stderr,"%s: unknown command: %s\n"
252259
"%s: use \"help\" for more information\n",
253260
argv[0], zCmdName, argv[0]);
254261
fossil_exit(1);
255262
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223 */
224 int main(int argc, char **argv){
225 const char *zCmdName = "unknown";
226 int idx;
227 int rc;
 
228
229 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
230 g.now = time(0);
231 g.argc = argc;
232 g.argv = argv;
233 if( getenv("GATEWAY_INTERFACE")!=0 ){
234 zCmdName = "cgi";
235 }else if( argc<2 ){
236 fprintf(stderr, "Usage: %s COMMAND ...\n"
237 "\"%s help\" for a list of available commands\n"
238 "\"%s help COMMAND\" for specific details\n",
239 argv[0], argv[0], argv[0]);
240 fossil_exit(1);
 
 
 
241 }else{
242 g.fQuiet = find_option("quiet", 0, 0)!=0;
243 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
244 g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
245 g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
246 g.zLogin = find_option("user", "U", 1);
247 zCmdName = argv[1];
248 }
249 rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
 
 
 
250 if( rc==1 ){
251 fprintf(stderr,"%s: unknown command: %s\n"
252 "%s: use \"help\" for more information\n",
253 argv[0], zCmdName, argv[0]);
254 fossil_exit(1);
255
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223 */
224 int main(int argc, char **argv){
225 const char *zCmdName = "unknown";
226 int idx;
227 int rc;
228 int mightBeCgi;
229
230 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
231 g.now = time(0);
232 g.argc = argc;
233 g.argv = argv;
234 mightBeCgi = getenv("GATEWAY_INTERFACE")!=0;
235 if( argc<2 ){
236 if( mightBeCgi ){
237 zCmdName = "cgi";
238 }else{
239 fprintf(stderr, "Usage: %s COMMAND ...\n"
240 "\"%s help\" for a list of available commands\n"
241 "\"%s help COMMAND\" for specific details\n",
242 argv[0], argv[0], argv[0]);
243 fossil_exit(1);
244 }
245 }else{
246 g.fQuiet = find_option("quiet", 0, 0)!=0;
247 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
248 g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
249 g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
250 g.zLogin = find_option("user", "U", 1);
251 zCmdName = argv[1];
252 }
253 rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
254 if( rc==1 && mightBeCgi ){
255 rc = name_search("cgi", aCommand, count(aCommand), &idx);
256 }
257 if( rc==1 ){
258 fprintf(stderr,"%s: unknown command: %s\n"
259 "%s: use \"help\" for more information\n",
260 argv[0], zCmdName, argv[0]);
261 fossil_exit(1);
262
+15 -8
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223223
*/
224224
int main(int argc, char **argv){
225225
const char *zCmdName = "unknown";
226226
int idx;
227227
int rc;
228
+ int mightBeCgi;
228229
229230
sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
230231
g.now = time(0);
231232
g.argc = argc;
232233
g.argv = argv;
233
- if( getenv("GATEWAY_INTERFACE")!=0 ){
234
- zCmdName = "cgi";
235
- }else if( argc<2 ){
236
- fprintf(stderr, "Usage: %s COMMAND ...\n"
237
- "\"%s help\" for a list of available commands\n"
238
- "\"%s help COMMAND\" for specific details\n",
239
- argv[0], argv[0], argv[0]);
240
- fossil_exit(1);
234
+ mightBeCgi = getenv("GATEWAY_INTERFACE")!=0;
235
+ if( argc<2 ){
236
+ if( mightBeCgi ){
237
+ zCmdName = "cgi";
238
+ }else{
239
+ fprintf(stderr, "Usage: %s COMMAND ...\n"
240
+ "\"%s help\" for a list of available commands\n"
241
+ "\"%s help COMMAND\" for specific details\n",
242
+ argv[0], argv[0], argv[0]);
243
+ fossil_exit(1);
244
+ }
241245
}else{
242246
g.fQuiet = find_option("quiet", 0, 0)!=0;
243247
g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
244248
g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
245249
g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
246250
g.zLogin = find_option("user", "U", 1);
247251
zCmdName = argv[1];
248252
}
249253
rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
254
+ if( rc==1 && mightBeCgi ){
255
+ rc = name_search("cgi", aCommand, count(aCommand), &idx);
256
+ }
250257
if( rc==1 ){
251258
fprintf(stderr,"%s: unknown command: %s\n"
252259
"%s: use \"help\" for more information\n",
253260
argv[0], zCmdName, argv[0]);
254261
fossil_exit(1);
255262
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223 */
224 int main(int argc, char **argv){
225 const char *zCmdName = "unknown";
226 int idx;
227 int rc;
 
228
229 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
230 g.now = time(0);
231 g.argc = argc;
232 g.argv = argv;
233 if( getenv("GATEWAY_INTERFACE")!=0 ){
234 zCmdName = "cgi";
235 }else if( argc<2 ){
236 fprintf(stderr, "Usage: %s COMMAND ...\n"
237 "\"%s help\" for a list of available commands\n"
238 "\"%s help COMMAND\" for specific details\n",
239 argv[0], argv[0], argv[0]);
240 fossil_exit(1);
 
 
 
241 }else{
242 g.fQuiet = find_option("quiet", 0, 0)!=0;
243 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
244 g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
245 g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
246 g.zLogin = find_option("user", "U", 1);
247 zCmdName = argv[1];
248 }
249 rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
 
 
 
250 if( rc==1 ){
251 fprintf(stderr,"%s: unknown command: %s\n"
252 "%s: use \"help\" for more information\n",
253 argv[0], zCmdName, argv[0]);
254 fossil_exit(1);
255
--- src/main.c
+++ src/main.c
@@ -223,32 +223,39 @@
223 */
224 int main(int argc, char **argv){
225 const char *zCmdName = "unknown";
226 int idx;
227 int rc;
228 int mightBeCgi;
229
230 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
231 g.now = time(0);
232 g.argc = argc;
233 g.argv = argv;
234 mightBeCgi = getenv("GATEWAY_INTERFACE")!=0;
235 if( argc<2 ){
236 if( mightBeCgi ){
237 zCmdName = "cgi";
238 }else{
239 fprintf(stderr, "Usage: %s COMMAND ...\n"
240 "\"%s help\" for a list of available commands\n"
241 "\"%s help COMMAND\" for specific details\n",
242 argv[0], argv[0], argv[0]);
243 fossil_exit(1);
244 }
245 }else{
246 g.fQuiet = find_option("quiet", 0, 0)!=0;
247 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
248 g.fSqlPrint = find_option("sqlprint", 0, 0)!=0;
249 g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
250 g.zLogin = find_option("user", "U", 1);
251 zCmdName = argv[1];
252 }
253 rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
254 if( rc==1 && mightBeCgi ){
255 rc = name_search("cgi", aCommand, count(aCommand), &idx);
256 }
257 if( rc==1 ){
258 fprintf(stderr,"%s: unknown command: %s\n"
259 "%s: use \"help\" for more information\n",
260 argv[0], zCmdName, argv[0]);
261 fossil_exit(1);
262
+2 -2
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694694
}
695695
if( iVal ){
696696
@ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697697
@ <b>%s(zLabel)</b>
698698
}else{
699
- @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b>
699
+ @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b>
700700
}
701701
}
702702
703703
/*
704704
** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877877
login_insert_csrf_secret();
878878
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879879
if( pSet->width==0 ){
880880
onoff_attribute(pSet->name, pSet->name,
881881
pSet->var!=0 ? pSet->var : pSet->name,
882
- pSet->def[0]=='1');
882
+ is_truth(pSet->def));
883883
@ <br />
884884
}
885885
}
886886
@ </td><td style="width: 30;"></td><td valign="top">
887887
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888888
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694 }
695 if( iVal ){
696 @ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697 @ <b>%s(zLabel)</b>
698 }else{
699 @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b>
700 }
701 }
702
703 /*
704 ** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
881 pSet->var!=0 ? pSet->var : pSet->name,
882 pSet->def[0]=='1');
883 @ <br />
884 }
885 }
886 @ </td><td style="width: 30;"></td><td valign="top">
887 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694 }
695 if( iVal ){
696 @ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697 @ <b>%s(zLabel)</b>
698 }else{
699 @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b>
700 }
701 }
702
703 /*
704 ** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
881 pSet->var!=0 ? pSet->var : pSet->name,
882 is_truth(pSet->def));
883 @ <br />
884 }
885 }
886 @ </td><td style="width: 30;"></td><td valign="top">
887 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888
+2 -2
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694694
}
695695
if( iVal ){
696696
@ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697697
@ <b>%s(zLabel)</b>
698698
}else{
699
- @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b>
699
+ @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b>
700700
}
701701
}
702702
703703
/*
704704
** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877877
login_insert_csrf_secret();
878878
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879879
if( pSet->width==0 ){
880880
onoff_attribute(pSet->name, pSet->name,
881881
pSet->var!=0 ? pSet->var : pSet->name,
882
- pSet->def[0]=='1');
882
+ is_truth(pSet->def));
883883
@ <br />
884884
}
885885
}
886886
@ </td><td style="width: 30;"></td><td valign="top">
887887
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888888
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694 }
695 if( iVal ){
696 @ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697 @ <b>%s(zLabel)</b>
698 }else{
699 @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b>
700 }
701 }
702
703 /*
704 ** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
881 pSet->var!=0 ? pSet->var : pSet->name,
882 pSet->def[0]=='1');
883 @ <br />
884 }
885 }
886 @ </td><td style="width: 30;"></td><td valign="top">
887 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694 }
695 if( iVal ){
696 @ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697 @ <b>%s(zLabel)</b>
698 }else{
699 @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b>
700 }
701 }
702
703 /*
704 ** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
881 pSet->var!=0 ? pSet->var : pSet->name,
882 is_truth(pSet->def));
883 @ <br />
884 }
885 }
886 @ </td><td style="width: 30;"></td><td valign="top">
887 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888
+2 -2
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694694
}
695695
if( iVal ){
696696
@ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697697
@ <b>%s(zLabel)</b>
698698
}else{
699
- @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b>
699
+ @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b>
700700
}
701701
}
702702
703703
/*
704704
** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877877
login_insert_csrf_secret();
878878
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879879
if( pSet->width==0 ){
880880
onoff_attribute(pSet->name, pSet->name,
881881
pSet->var!=0 ? pSet->var : pSet->name,
882
- pSet->def[0]=='1');
882
+ is_truth(pSet->def));
883883
@ <br />
884884
}
885885
}
886886
@ </td><td style="width: 30;"></td><td valign="top">
887887
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888888
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694 }
695 if( iVal ){
696 @ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697 @ <b>%s(zLabel)</b>
698 }else{
699 @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b>
700 }
701 }
702
703 /*
704 ** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
881 pSet->var!=0 ? pSet->var : pSet->name,
882 pSet->def[0]=='1');
883 @ <br />
884 }
885 }
886 @ </td><td style="width: 30;"></td><td valign="top">
887 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694 }
695 if( iVal ){
696 @ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697 @ <b>%s(zLabel)</b>
698 }else{
699 @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b>
700 }
701 }
702
703 /*
704 ** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
881 pSet->var!=0 ? pSet->var : pSet->name,
882 is_truth(pSet->def));
883 @ <br />
884 }
885 }
886 @ </td><td style="width: 30;"></td><td valign="top">
887 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888
+2 -2
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694694
}
695695
if( iVal ){
696696
@ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697697
@ <b>%s(zLabel)</b>
698698
}else{
699
- @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b>
699
+ @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b>
700700
}
701701
}
702702
703703
/*
704704
** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877877
login_insert_csrf_secret();
878878
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879879
if( pSet->width==0 ){
880880
onoff_attribute(pSet->name, pSet->name,
881881
pSet->var!=0 ? pSet->var : pSet->name,
882
- pSet->def[0]=='1');
882
+ is_truth(pSet->def));
883883
@ <br />
884884
}
885885
}
886886
@ </td><td style="width: 30;"></td><td valign="top">
887887
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888888
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694 }
695 if( iVal ){
696 @ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697 @ <b>%s(zLabel)</b>
698 }else{
699 @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b>
700 }
701 }
702
703 /*
704 ** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
881 pSet->var!=0 ? pSet->var : pSet->name,
882 pSet->def[0]=='1');
883 @ <br />
884 }
885 }
886 @ </td><td style="width: 30;"></td><td valign="top">
887 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888
--- src/setup.c
+++ src/setup.c
@@ -694,11 +694,11 @@
694 }
695 if( iVal ){
696 @ <input type="checkbox" name="%s(zQParm)" checked="checked" />
697 @ <b>%s(zLabel)</b>
698 }else{
699 @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b>
700 }
701 }
702
703 /*
704 ** Generate an entry box for an attribute.
@@ -877,11 +877,11 @@
877 login_insert_csrf_secret();
878 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
879 if( pSet->width==0 ){
880 onoff_attribute(pSet->name, pSet->name,
881 pSet->var!=0 ? pSet->var : pSet->name,
882 is_truth(pSet->def));
883 @ <br />
884 }
885 }
886 @ </td><td style="width: 30;"></td><td valign="top">
887 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
888

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button