Fossil SCM
merge from trunk
Commit
3ea66260b5555d2e3c86eea8d5975161b0f5c6a2
Parent
cb75de51b551e56…
22 files changed
+15
-13
+15
-13
+15
-13
+15
-13
+1
-1
+1
-1
+1
-1
+1
-1
+5
-2
+5
-2
+5
-2
+4
-5
+4
-5
+4
-5
+15
-8
+15
-8
+15
-8
+15
-8
+2
-2
+2
-2
+2
-2
+2
-2
+15
-13
| --- src/checkin.c | ||
| +++ src/checkin.c | ||
| @@ -699,23 +699,24 @@ | ||
| 699 | 699 | ** COMMAND: ci |
| 700 | 700 | ** COMMAND: commit |
| 701 | 701 | ** |
| 702 | 702 | ** Usage: %fossil commit ?OPTIONS? ?FILE...? |
| 703 | 703 | ** |
| 704 | + | |
| 705 | + | |
| 704 | 706 | ** Create a new version containing all of the changes in the current |
| 705 | 707 | ** 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 | |
| 717 | 718 | ** to be placed in the named branch. The --bgcolor option can be followed |
| 718 | 719 | ** by a color name (ex: '#ffc0c0') to specify the background color of |
| 719 | 720 | ** entries in the new branch when shown in the web timeline interface. |
| 720 | 721 | ** |
| 721 | 722 | ** A check-in is not permitted to fork unless the --force or -f option |
| @@ -725,10 +726,11 @@ | ||
| 725 | 726 | ** Children of private check-ins are automatically private. |
| 726 | 727 | ** |
| 727 | 728 | ** Options: |
| 728 | 729 | ** |
| 729 | 730 | ** --comment|-m COMMENT-TEXT |
| 731 | +** --message-file|-M COMMENT-FILE | |
| 730 | 732 | ** --branch NEW-BRANCH-NAME |
| 731 | 733 | ** --bgcolor COLOR |
| 732 | 734 | ** --nosign |
| 733 | 735 | ** --force|-f |
| 734 | 736 | ** --private |
| @@ -1065,11 +1067,11 @@ | ||
| 1065 | 1067 | */ |
| 1066 | 1068 | vfile_aggregate_checksum_repository(nvid, &cksum2); |
| 1067 | 1069 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1068 | 1070 | fossil_panic("tree checksum does not match repository after commit"); |
| 1069 | 1071 | } |
| 1070 | - | |
| 1072 | + | |
| 1071 | 1073 | /* Verify that the manifest checksum matches the expected checksum */ |
| 1072 | 1074 | vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b); |
| 1073 | 1075 | if( blob_compare(&cksum1, &cksum1b) ){ |
| 1074 | 1076 | fossil_panic("manifest checksum does not agree with manifest: " |
| 1075 | 1077 | "%b versus %b", &cksum1, &cksum1b); |
| @@ -1076,11 +1078,11 @@ | ||
| 1076 | 1078 | } |
| 1077 | 1079 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1078 | 1080 | fossil_panic("tree checksum does not match manifest after commit: " |
| 1079 | 1081 | "%b versus %b", &cksum1, &cksum2); |
| 1080 | 1082 | } |
| 1081 | - | |
| 1083 | + | |
| 1082 | 1084 | /* Verify that the commit did not modify any disk images. */ |
| 1083 | 1085 | vfile_aggregate_checksum_disk(nvid, &cksum2); |
| 1084 | 1086 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1085 | 1087 | fossil_panic("tree checksums before and after commit do not match"); |
| 1086 | 1088 | } |
| 1087 | 1089 |
| --- 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 @@ | ||
| 699 | 699 | ** COMMAND: ci |
| 700 | 700 | ** COMMAND: commit |
| 701 | 701 | ** |
| 702 | 702 | ** Usage: %fossil commit ?OPTIONS? ?FILE...? |
| 703 | 703 | ** |
| 704 | + | |
| 705 | + | |
| 704 | 706 | ** Create a new version containing all of the changes in the current |
| 705 | 707 | ** 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 | |
| 717 | 718 | ** to be placed in the named branch. The --bgcolor option can be followed |
| 718 | 719 | ** by a color name (ex: '#ffc0c0') to specify the background color of |
| 719 | 720 | ** entries in the new branch when shown in the web timeline interface. |
| 720 | 721 | ** |
| 721 | 722 | ** A check-in is not permitted to fork unless the --force or -f option |
| @@ -725,10 +726,11 @@ | ||
| 725 | 726 | ** Children of private check-ins are automatically private. |
| 726 | 727 | ** |
| 727 | 728 | ** Options: |
| 728 | 729 | ** |
| 729 | 730 | ** --comment|-m COMMENT-TEXT |
| 731 | +** --message-file|-M COMMENT-FILE | |
| 730 | 732 | ** --branch NEW-BRANCH-NAME |
| 731 | 733 | ** --bgcolor COLOR |
| 732 | 734 | ** --nosign |
| 733 | 735 | ** --force|-f |
| 734 | 736 | ** --private |
| @@ -1065,11 +1067,11 @@ | ||
| 1065 | 1067 | */ |
| 1066 | 1068 | vfile_aggregate_checksum_repository(nvid, &cksum2); |
| 1067 | 1069 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1068 | 1070 | fossil_panic("tree checksum does not match repository after commit"); |
| 1069 | 1071 | } |
| 1070 | - | |
| 1072 | + | |
| 1071 | 1073 | /* Verify that the manifest checksum matches the expected checksum */ |
| 1072 | 1074 | vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b); |
| 1073 | 1075 | if( blob_compare(&cksum1, &cksum1b) ){ |
| 1074 | 1076 | fossil_panic("manifest checksum does not agree with manifest: " |
| 1075 | 1077 | "%b versus %b", &cksum1, &cksum1b); |
| @@ -1076,11 +1078,11 @@ | ||
| 1076 | 1078 | } |
| 1077 | 1079 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1078 | 1080 | fossil_panic("tree checksum does not match manifest after commit: " |
| 1079 | 1081 | "%b versus %b", &cksum1, &cksum2); |
| 1080 | 1082 | } |
| 1081 | - | |
| 1083 | + | |
| 1082 | 1084 | /* Verify that the commit did not modify any disk images. */ |
| 1083 | 1085 | vfile_aggregate_checksum_disk(nvid, &cksum2); |
| 1084 | 1086 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1085 | 1087 | fossil_panic("tree checksums before and after commit do not match"); |
| 1086 | 1088 | } |
| 1087 | 1089 |
| --- 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 @@ | ||
| 699 | 699 | ** COMMAND: ci |
| 700 | 700 | ** COMMAND: commit |
| 701 | 701 | ** |
| 702 | 702 | ** Usage: %fossil commit ?OPTIONS? ?FILE...? |
| 703 | 703 | ** |
| 704 | + | |
| 705 | + | |
| 704 | 706 | ** Create a new version containing all of the changes in the current |
| 705 | 707 | ** 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 | |
| 717 | 718 | ** to be placed in the named branch. The --bgcolor option can be followed |
| 718 | 719 | ** by a color name (ex: '#ffc0c0') to specify the background color of |
| 719 | 720 | ** entries in the new branch when shown in the web timeline interface. |
| 720 | 721 | ** |
| 721 | 722 | ** A check-in is not permitted to fork unless the --force or -f option |
| @@ -725,10 +726,11 @@ | ||
| 725 | 726 | ** Children of private check-ins are automatically private. |
| 726 | 727 | ** |
| 727 | 728 | ** Options: |
| 728 | 729 | ** |
| 729 | 730 | ** --comment|-m COMMENT-TEXT |
| 731 | +** --message-file|-M COMMENT-FILE | |
| 730 | 732 | ** --branch NEW-BRANCH-NAME |
| 731 | 733 | ** --bgcolor COLOR |
| 732 | 734 | ** --nosign |
| 733 | 735 | ** --force|-f |
| 734 | 736 | ** --private |
| @@ -1065,11 +1067,11 @@ | ||
| 1065 | 1067 | */ |
| 1066 | 1068 | vfile_aggregate_checksum_repository(nvid, &cksum2); |
| 1067 | 1069 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1068 | 1070 | fossil_panic("tree checksum does not match repository after commit"); |
| 1069 | 1071 | } |
| 1070 | - | |
| 1072 | + | |
| 1071 | 1073 | /* Verify that the manifest checksum matches the expected checksum */ |
| 1072 | 1074 | vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b); |
| 1073 | 1075 | if( blob_compare(&cksum1, &cksum1b) ){ |
| 1074 | 1076 | fossil_panic("manifest checksum does not agree with manifest: " |
| 1075 | 1077 | "%b versus %b", &cksum1, &cksum1b); |
| @@ -1076,11 +1078,11 @@ | ||
| 1076 | 1078 | } |
| 1077 | 1079 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1078 | 1080 | fossil_panic("tree checksum does not match manifest after commit: " |
| 1079 | 1081 | "%b versus %b", &cksum1, &cksum2); |
| 1080 | 1082 | } |
| 1081 | - | |
| 1083 | + | |
| 1082 | 1084 | /* Verify that the commit did not modify any disk images. */ |
| 1083 | 1085 | vfile_aggregate_checksum_disk(nvid, &cksum2); |
| 1084 | 1086 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1085 | 1087 | fossil_panic("tree checksums before and after commit do not match"); |
| 1086 | 1088 | } |
| 1087 | 1089 |
| --- 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 @@ | ||
| 699 | 699 | ** COMMAND: ci |
| 700 | 700 | ** COMMAND: commit |
| 701 | 701 | ** |
| 702 | 702 | ** Usage: %fossil commit ?OPTIONS? ?FILE...? |
| 703 | 703 | ** |
| 704 | + | |
| 705 | + | |
| 704 | 706 | ** Create a new version containing all of the changes in the current |
| 705 | 707 | ** 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 | |
| 717 | 718 | ** to be placed in the named branch. The --bgcolor option can be followed |
| 718 | 719 | ** by a color name (ex: '#ffc0c0') to specify the background color of |
| 719 | 720 | ** entries in the new branch when shown in the web timeline interface. |
| 720 | 721 | ** |
| 721 | 722 | ** A check-in is not permitted to fork unless the --force or -f option |
| @@ -725,10 +726,11 @@ | ||
| 725 | 726 | ** Children of private check-ins are automatically private. |
| 726 | 727 | ** |
| 727 | 728 | ** Options: |
| 728 | 729 | ** |
| 729 | 730 | ** --comment|-m COMMENT-TEXT |
| 731 | +** --message-file|-M COMMENT-FILE | |
| 730 | 732 | ** --branch NEW-BRANCH-NAME |
| 731 | 733 | ** --bgcolor COLOR |
| 732 | 734 | ** --nosign |
| 733 | 735 | ** --force|-f |
| 734 | 736 | ** --private |
| @@ -1065,11 +1067,11 @@ | ||
| 1065 | 1067 | */ |
| 1066 | 1068 | vfile_aggregate_checksum_repository(nvid, &cksum2); |
| 1067 | 1069 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1068 | 1070 | fossil_panic("tree checksum does not match repository after commit"); |
| 1069 | 1071 | } |
| 1070 | - | |
| 1072 | + | |
| 1071 | 1073 | /* Verify that the manifest checksum matches the expected checksum */ |
| 1072 | 1074 | vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b); |
| 1073 | 1075 | if( blob_compare(&cksum1, &cksum1b) ){ |
| 1074 | 1076 | fossil_panic("manifest checksum does not agree with manifest: " |
| 1075 | 1077 | "%b versus %b", &cksum1, &cksum1b); |
| @@ -1076,11 +1078,11 @@ | ||
| 1076 | 1078 | } |
| 1077 | 1079 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1078 | 1080 | fossil_panic("tree checksum does not match manifest after commit: " |
| 1079 | 1081 | "%b versus %b", &cksum1, &cksum2); |
| 1080 | 1082 | } |
| 1081 | - | |
| 1083 | + | |
| 1082 | 1084 | /* Verify that the commit did not modify any disk images. */ |
| 1083 | 1085 | vfile_aggregate_checksum_disk(nvid, &cksum2); |
| 1084 | 1086 | if( blob_compare(&cksum1, &cksum2) ){ |
| 1085 | 1087 | fossil_panic("tree checksums before and after commit do not match"); |
| 1086 | 1088 | } |
| 1087 | 1089 |
| --- 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 |
M
src/db.c
+1
-1
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1523,11 +1523,11 @@ | ||
| 1523 | 1523 | { "gdiff-command", 0, 16, "gdiff" }, |
| 1524 | 1524 | { "ignore-glob", 0, 40, "" }, |
| 1525 | 1525 | { "http-port", 0, 16, "8080" }, |
| 1526 | 1526 | { "localauth", 0, 0, "off" }, |
| 1527 | 1527 | { "manifest", 0, 0, "off" }, |
| 1528 | - { "mtime-changes", 0, 0, "off" }, | |
| 1528 | + { "mtime-changes", 0, 0, "on" }, | |
| 1529 | 1529 | { "pgp-command", 0, 32, "gpg --clearsign -o " }, |
| 1530 | 1530 | { "proxy", 0, 32, "off" }, |
| 1531 | 1531 | { "push-hook-cmd", 0, 32, "" }, |
| 1532 | 1532 | { "push-hook-force", |
| 1533 | 1533 | 0, 0, "" }, |
| 1534 | 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, "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 |
M
src/db.c
+1
-1
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1523,11 +1523,11 @@ | ||
| 1523 | 1523 | { "gdiff-command", 0, 16, "gdiff" }, |
| 1524 | 1524 | { "ignore-glob", 0, 40, "" }, |
| 1525 | 1525 | { "http-port", 0, 16, "8080" }, |
| 1526 | 1526 | { "localauth", 0, 0, "off" }, |
| 1527 | 1527 | { "manifest", 0, 0, "off" }, |
| 1528 | - { "mtime-changes", 0, 0, "off" }, | |
| 1528 | + { "mtime-changes", 0, 0, "on" }, | |
| 1529 | 1529 | { "pgp-command", 0, 32, "gpg --clearsign -o " }, |
| 1530 | 1530 | { "proxy", 0, 32, "off" }, |
| 1531 | 1531 | { "push-hook-cmd", 0, 32, "" }, |
| 1532 | 1532 | { "push-hook-force", |
| 1533 | 1533 | 0, 0, "" }, |
| 1534 | 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, "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 |
M
src/db.c
+1
-1
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1523,11 +1523,11 @@ | ||
| 1523 | 1523 | { "gdiff-command", 0, 16, "gdiff" }, |
| 1524 | 1524 | { "ignore-glob", 0, 40, "" }, |
| 1525 | 1525 | { "http-port", 0, 16, "8080" }, |
| 1526 | 1526 | { "localauth", 0, 0, "off" }, |
| 1527 | 1527 | { "manifest", 0, 0, "off" }, |
| 1528 | - { "mtime-changes", 0, 0, "off" }, | |
| 1528 | + { "mtime-changes", 0, 0, "on" }, | |
| 1529 | 1529 | { "pgp-command", 0, 32, "gpg --clearsign -o " }, |
| 1530 | 1530 | { "proxy", 0, 32, "off" }, |
| 1531 | 1531 | { "push-hook-cmd", 0, 32, "" }, |
| 1532 | 1532 | { "push-hook-force", |
| 1533 | 1533 | 0, 0, "" }, |
| 1534 | 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, "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 |
M
src/db.c
+1
-1
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1523,11 +1523,11 @@ | ||
| 1523 | 1523 | { "gdiff-command", 0, 16, "gdiff" }, |
| 1524 | 1524 | { "ignore-glob", 0, 40, "" }, |
| 1525 | 1525 | { "http-port", 0, 16, "8080" }, |
| 1526 | 1526 | { "localauth", 0, 0, "off" }, |
| 1527 | 1527 | { "manifest", 0, 0, "off" }, |
| 1528 | - { "mtime-changes", 0, 0, "off" }, | |
| 1528 | + { "mtime-changes", 0, 0, "on" }, | |
| 1529 | 1529 | { "pgp-command", 0, 32, "gpg --clearsign -o " }, |
| 1530 | 1530 | { "proxy", 0, 32, "off" }, |
| 1531 | 1531 | { "push-hook-cmd", 0, 32, "" }, |
| 1532 | 1532 | { "push-hook-force", |
| 1533 | 1533 | 0, 0, "" }, |
| 1534 | 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, "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 @@ | ||
| 103 | 103 | if( i>0 && g.urlPath[i-1]=='/' ){ |
| 104 | 104 | zSep = ""; |
| 105 | 105 | }else{ |
| 106 | 106 | zSep = "/"; |
| 107 | 107 | } |
| 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); | |
| 109 | 109 | if( g.urlProxyAuth ){ |
| 110 | 110 | blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth); |
| 111 | 111 | } |
| 112 | 112 | blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname); |
| 113 | 113 | blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n"); |
| @@ -226,11 +226,14 @@ | ||
| 226 | 226 | }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){ |
| 227 | 227 | int i, j; |
| 228 | 228 | for(i=9; zLine[i] && zLine[i]==' '; i++){} |
| 229 | 229 | if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine); |
| 230 | 230 | 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 | + } | |
| 232 | 235 | fossil_print("redirect to %s\n", &zLine[i]); |
| 233 | 236 | url_parse(&zLine[i]); |
| 234 | 237 | transport_close(); |
| 235 | 238 | http_exchange(pSend, pReply, useLogin); |
| 236 | 239 | return; |
| 237 | 240 |
| --- 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 @@ | ||
| 103 | 103 | if( i>0 && g.urlPath[i-1]=='/' ){ |
| 104 | 104 | zSep = ""; |
| 105 | 105 | }else{ |
| 106 | 106 | zSep = "/"; |
| 107 | 107 | } |
| 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); | |
| 109 | 109 | if( g.urlProxyAuth ){ |
| 110 | 110 | blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth); |
| 111 | 111 | } |
| 112 | 112 | blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname); |
| 113 | 113 | blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n"); |
| @@ -226,11 +226,14 @@ | ||
| 226 | 226 | }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){ |
| 227 | 227 | int i, j; |
| 228 | 228 | for(i=9; zLine[i] && zLine[i]==' '; i++){} |
| 229 | 229 | if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine); |
| 230 | 230 | 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 | + } | |
| 232 | 235 | fossil_print("redirect to %s\n", &zLine[i]); |
| 233 | 236 | url_parse(&zLine[i]); |
| 234 | 237 | transport_close(); |
| 235 | 238 | http_exchange(pSend, pReply, useLogin); |
| 236 | 239 | return; |
| 237 | 240 |
| --- 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 @@ | ||
| 103 | 103 | if( i>0 && g.urlPath[i-1]=='/' ){ |
| 104 | 104 | zSep = ""; |
| 105 | 105 | }else{ |
| 106 | 106 | zSep = "/"; |
| 107 | 107 | } |
| 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); | |
| 109 | 109 | if( g.urlProxyAuth ){ |
| 110 | 110 | blob_appendf(pHdr, "Proxy-Authorization: %s\n", g.urlProxyAuth); |
| 111 | 111 | } |
| 112 | 112 | blob_appendf(pHdr, "Host: %s\r\n", g.urlHostname); |
| 113 | 113 | blob_appendf(pHdr, "User-Agent: Fossil/" MANIFEST_VERSION "\r\n"); |
| @@ -226,11 +226,14 @@ | ||
| 226 | 226 | }else if( rc==302 && strncasecmp(zLine, "location:", 9)==0 ){ |
| 227 | 227 | int i, j; |
| 228 | 228 | for(i=9; zLine[i] && zLine[i]==' '; i++){} |
| 229 | 229 | if( zLine[i]==0 ) fossil_fatal("malformed redirect: %s", zLine); |
| 230 | 230 | 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 | + } | |
| 232 | 235 | fossil_print("redirect to %s\n", &zLine[i]); |
| 233 | 236 | url_parse(&zLine[i]); |
| 234 | 237 | transport_close(); |
| 235 | 238 | http_exchange(pSend, pReply, useLogin); |
| 236 | 239 | return; |
| 237 | 240 |
| --- 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 @@ | ||
| 51 | 51 | ** Return the name of the login cookie |
| 52 | 52 | */ |
| 53 | 53 | static char *login_cookie_name(void){ |
| 54 | 54 | static char *zCookieName = 0; |
| 55 | 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); | |
| 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); | |
| 61 | 60 | } |
| 62 | 61 | return zCookieName; |
| 63 | 62 | } |
| 64 | 63 | |
| 65 | 64 | /* |
| 66 | 65 |
| --- 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 @@ | ||
| 51 | 51 | ** Return the name of the login cookie |
| 52 | 52 | */ |
| 53 | 53 | static char *login_cookie_name(void){ |
| 54 | 54 | static char *zCookieName = 0; |
| 55 | 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); | |
| 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); | |
| 61 | 60 | } |
| 62 | 61 | return zCookieName; |
| 63 | 62 | } |
| 64 | 63 | |
| 65 | 64 | /* |
| 66 | 65 |
| --- 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 @@ | ||
| 51 | 51 | ** Return the name of the login cookie |
| 52 | 52 | */ |
| 53 | 53 | static char *login_cookie_name(void){ |
| 54 | 54 | static char *zCookieName = 0; |
| 55 | 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); | |
| 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); | |
| 61 | 60 | } |
| 62 | 61 | return zCookieName; |
| 63 | 62 | } |
| 64 | 63 | |
| 65 | 64 | /* |
| 66 | 65 |
| --- 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 @@ | ||
| 223 | 223 | */ |
| 224 | 224 | int main(int argc, char **argv){ |
| 225 | 225 | const char *zCmdName = "unknown"; |
| 226 | 226 | int idx; |
| 227 | 227 | int rc; |
| 228 | + int mightBeCgi; | |
| 228 | 229 | |
| 229 | 230 | sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0); |
| 230 | 231 | g.now = time(0); |
| 231 | 232 | g.argc = argc; |
| 232 | 233 | 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 | + } | |
| 241 | 245 | }else{ |
| 242 | 246 | g.fQuiet = find_option("quiet", 0, 0)!=0; |
| 243 | 247 | g.fSqlTrace = find_option("sqltrace", 0, 0)!=0; |
| 244 | 248 | g.fSqlPrint = find_option("sqlprint", 0, 0)!=0; |
| 245 | 249 | g.fHttpTrace = find_option("httptrace", 0, 0)!=0; |
| 246 | 250 | g.zLogin = find_option("user", "U", 1); |
| 247 | 251 | zCmdName = argv[1]; |
| 248 | 252 | } |
| 249 | 253 | rc = name_search(zCmdName, aCommand, count(aCommand), &idx); |
| 254 | + if( rc==1 && mightBeCgi ){ | |
| 255 | + rc = name_search("cgi", aCommand, count(aCommand), &idx); | |
| 256 | + } | |
| 250 | 257 | if( rc==1 ){ |
| 251 | 258 | fprintf(stderr,"%s: unknown command: %s\n" |
| 252 | 259 | "%s: use \"help\" for more information\n", |
| 253 | 260 | argv[0], zCmdName, argv[0]); |
| 254 | 261 | fossil_exit(1); |
| 255 | 262 |
| --- 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 @@ | ||
| 223 | 223 | */ |
| 224 | 224 | int main(int argc, char **argv){ |
| 225 | 225 | const char *zCmdName = "unknown"; |
| 226 | 226 | int idx; |
| 227 | 227 | int rc; |
| 228 | + int mightBeCgi; | |
| 228 | 229 | |
| 229 | 230 | sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0); |
| 230 | 231 | g.now = time(0); |
| 231 | 232 | g.argc = argc; |
| 232 | 233 | 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 | + } | |
| 241 | 245 | }else{ |
| 242 | 246 | g.fQuiet = find_option("quiet", 0, 0)!=0; |
| 243 | 247 | g.fSqlTrace = find_option("sqltrace", 0, 0)!=0; |
| 244 | 248 | g.fSqlPrint = find_option("sqlprint", 0, 0)!=0; |
| 245 | 249 | g.fHttpTrace = find_option("httptrace", 0, 0)!=0; |
| 246 | 250 | g.zLogin = find_option("user", "U", 1); |
| 247 | 251 | zCmdName = argv[1]; |
| 248 | 252 | } |
| 249 | 253 | rc = name_search(zCmdName, aCommand, count(aCommand), &idx); |
| 254 | + if( rc==1 && mightBeCgi ){ | |
| 255 | + rc = name_search("cgi", aCommand, count(aCommand), &idx); | |
| 256 | + } | |
| 250 | 257 | if( rc==1 ){ |
| 251 | 258 | fprintf(stderr,"%s: unknown command: %s\n" |
| 252 | 259 | "%s: use \"help\" for more information\n", |
| 253 | 260 | argv[0], zCmdName, argv[0]); |
| 254 | 261 | fossil_exit(1); |
| 255 | 262 |
| --- 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 @@ | ||
| 223 | 223 | */ |
| 224 | 224 | int main(int argc, char **argv){ |
| 225 | 225 | const char *zCmdName = "unknown"; |
| 226 | 226 | int idx; |
| 227 | 227 | int rc; |
| 228 | + int mightBeCgi; | |
| 228 | 229 | |
| 229 | 230 | sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0); |
| 230 | 231 | g.now = time(0); |
| 231 | 232 | g.argc = argc; |
| 232 | 233 | 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 | + } | |
| 241 | 245 | }else{ |
| 242 | 246 | g.fQuiet = find_option("quiet", 0, 0)!=0; |
| 243 | 247 | g.fSqlTrace = find_option("sqltrace", 0, 0)!=0; |
| 244 | 248 | g.fSqlPrint = find_option("sqlprint", 0, 0)!=0; |
| 245 | 249 | g.fHttpTrace = find_option("httptrace", 0, 0)!=0; |
| 246 | 250 | g.zLogin = find_option("user", "U", 1); |
| 247 | 251 | zCmdName = argv[1]; |
| 248 | 252 | } |
| 249 | 253 | rc = name_search(zCmdName, aCommand, count(aCommand), &idx); |
| 254 | + if( rc==1 && mightBeCgi ){ | |
| 255 | + rc = name_search("cgi", aCommand, count(aCommand), &idx); | |
| 256 | + } | |
| 250 | 257 | if( rc==1 ){ |
| 251 | 258 | fprintf(stderr,"%s: unknown command: %s\n" |
| 252 | 259 | "%s: use \"help\" for more information\n", |
| 253 | 260 | argv[0], zCmdName, argv[0]); |
| 254 | 261 | fossil_exit(1); |
| 255 | 262 |
| --- 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 @@ | ||
| 223 | 223 | */ |
| 224 | 224 | int main(int argc, char **argv){ |
| 225 | 225 | const char *zCmdName = "unknown"; |
| 226 | 226 | int idx; |
| 227 | 227 | int rc; |
| 228 | + int mightBeCgi; | |
| 228 | 229 | |
| 229 | 230 | sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0); |
| 230 | 231 | g.now = time(0); |
| 231 | 232 | g.argc = argc; |
| 232 | 233 | 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 | + } | |
| 241 | 245 | }else{ |
| 242 | 246 | g.fQuiet = find_option("quiet", 0, 0)!=0; |
| 243 | 247 | g.fSqlTrace = find_option("sqltrace", 0, 0)!=0; |
| 244 | 248 | g.fSqlPrint = find_option("sqlprint", 0, 0)!=0; |
| 245 | 249 | g.fHttpTrace = find_option("httptrace", 0, 0)!=0; |
| 246 | 250 | g.zLogin = find_option("user", "U", 1); |
| 247 | 251 | zCmdName = argv[1]; |
| 248 | 252 | } |
| 249 | 253 | rc = name_search(zCmdName, aCommand, count(aCommand), &idx); |
| 254 | + if( rc==1 && mightBeCgi ){ | |
| 255 | + rc = name_search("cgi", aCommand, count(aCommand), &idx); | |
| 256 | + } | |
| 250 | 257 | if( rc==1 ){ |
| 251 | 258 | fprintf(stderr,"%s: unknown command: %s\n" |
| 252 | 259 | "%s: use \"help\" for more information\n", |
| 253 | 260 | argv[0], zCmdName, argv[0]); |
| 254 | 261 | fossil_exit(1); |
| 255 | 262 |
| --- 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 @@ | ||
| 694 | 694 | } |
| 695 | 695 | if( iVal ){ |
| 696 | 696 | @ <input type="checkbox" name="%s(zQParm)" checked="checked" /> |
| 697 | 697 | @ <b>%s(zLabel)</b> |
| 698 | 698 | }else{ |
| 699 | - @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b> | |
| 699 | + @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b> | |
| 700 | 700 | } |
| 701 | 701 | } |
| 702 | 702 | |
| 703 | 703 | /* |
| 704 | 704 | ** Generate an entry box for an attribute. |
| @@ -877,11 +877,11 @@ | ||
| 877 | 877 | login_insert_csrf_secret(); |
| 878 | 878 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 879 | 879 | if( pSet->width==0 ){ |
| 880 | 880 | onoff_attribute(pSet->name, pSet->name, |
| 881 | 881 | pSet->var!=0 ? pSet->var : pSet->name, |
| 882 | - pSet->def[0]=='1'); | |
| 882 | + is_truth(pSet->def)); | |
| 883 | 883 | @ <br /> |
| 884 | 884 | } |
| 885 | 885 | } |
| 886 | 886 | @ </td><td style="width: 30;"></td><td valign="top"> |
| 887 | 887 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 888 | 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 | 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 @@ | ||
| 694 | 694 | } |
| 695 | 695 | if( iVal ){ |
| 696 | 696 | @ <input type="checkbox" name="%s(zQParm)" checked="checked" /> |
| 697 | 697 | @ <b>%s(zLabel)</b> |
| 698 | 698 | }else{ |
| 699 | - @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b> | |
| 699 | + @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b> | |
| 700 | 700 | } |
| 701 | 701 | } |
| 702 | 702 | |
| 703 | 703 | /* |
| 704 | 704 | ** Generate an entry box for an attribute. |
| @@ -877,11 +877,11 @@ | ||
| 877 | 877 | login_insert_csrf_secret(); |
| 878 | 878 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 879 | 879 | if( pSet->width==0 ){ |
| 880 | 880 | onoff_attribute(pSet->name, pSet->name, |
| 881 | 881 | pSet->var!=0 ? pSet->var : pSet->name, |
| 882 | - pSet->def[0]=='1'); | |
| 882 | + is_truth(pSet->def)); | |
| 883 | 883 | @ <br /> |
| 884 | 884 | } |
| 885 | 885 | } |
| 886 | 886 | @ </td><td style="width: 30;"></td><td valign="top"> |
| 887 | 887 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 888 | 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 | 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 @@ | ||
| 694 | 694 | } |
| 695 | 695 | if( iVal ){ |
| 696 | 696 | @ <input type="checkbox" name="%s(zQParm)" checked="checked" /> |
| 697 | 697 | @ <b>%s(zLabel)</b> |
| 698 | 698 | }else{ |
| 699 | - @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b> | |
| 699 | + @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b> | |
| 700 | 700 | } |
| 701 | 701 | } |
| 702 | 702 | |
| 703 | 703 | /* |
| 704 | 704 | ** Generate an entry box for an attribute. |
| @@ -877,11 +877,11 @@ | ||
| 877 | 877 | login_insert_csrf_secret(); |
| 878 | 878 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 879 | 879 | if( pSet->width==0 ){ |
| 880 | 880 | onoff_attribute(pSet->name, pSet->name, |
| 881 | 881 | pSet->var!=0 ? pSet->var : pSet->name, |
| 882 | - pSet->def[0]=='1'); | |
| 882 | + is_truth(pSet->def)); | |
| 883 | 883 | @ <br /> |
| 884 | 884 | } |
| 885 | 885 | } |
| 886 | 886 | @ </td><td style="width: 30;"></td><td valign="top"> |
| 887 | 887 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 888 | 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 | 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 @@ | ||
| 694 | 694 | } |
| 695 | 695 | if( iVal ){ |
| 696 | 696 | @ <input type="checkbox" name="%s(zQParm)" checked="checked" /> |
| 697 | 697 | @ <b>%s(zLabel)</b> |
| 698 | 698 | }else{ |
| 699 | - @ <input type="checkbox" name="%s(zQParm)" /><b>%s(zLabel)</b> | |
| 699 | + @ <input type="checkbox" name="%s(zQParm)" /> <b>%s(zLabel)</b> | |
| 700 | 700 | } |
| 701 | 701 | } |
| 702 | 702 | |
| 703 | 703 | /* |
| 704 | 704 | ** Generate an entry box for an attribute. |
| @@ -877,11 +877,11 @@ | ||
| 877 | 877 | login_insert_csrf_secret(); |
| 878 | 878 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 879 | 879 | if( pSet->width==0 ){ |
| 880 | 880 | onoff_attribute(pSet->name, pSet->name, |
| 881 | 881 | pSet->var!=0 ? pSet->var : pSet->name, |
| 882 | - pSet->def[0]=='1'); | |
| 882 | + is_truth(pSet->def)); | |
| 883 | 883 | @ <br /> |
| 884 | 884 | } |
| 885 | 885 | } |
| 886 | 886 | @ </td><td style="width: 30;"></td><td valign="top"> |
| 887 | 887 | for(pSet=ctrlSettings; pSet->name!=0; pSet++){ |
| 888 | 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 | 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 |