Fossil SCM

Add test-version web page. Refactor command line 'version' command code into a function to help facilitate that.

mistachkin 2016-01-29 21:03 trunk merge
Commit f7cd247b95ba57bb7aa3f1610dbd6648910dfa03
1 file changed +100 -67
+100 -67
--- src/main.c
+++ src/main.c
@@ -1009,10 +1009,83 @@
10091009
const char *get_version(){
10101010
static const char version[] = RELEASE_VERSION " " MANIFEST_VERSION " "
10111011
MANIFEST_DATE " UTC";
10121012
return version;
10131013
}
1014
+
1015
+/*
1016
+** This function populates a blob with version information. It is used by
1017
+** the "version" command and "test-version" web page. It assumes the blob
1018
+** passed to it is uninitialized; otherwise, it will leak memory.
1019
+*/
1020
+static void get_version_blob(
1021
+ Blob *pOut, /* Write the manifest here */
1022
+ int bVerbose /* Non-zero for full information. */
1023
+){
1024
+#if defined(FOSSIL_ENABLE_TCL)
1025
+ int rc;
1026
+ const char *zRc;
1027
+#endif
1028
+ blob_zero(pOut);
1029
+ blob_appendf(pOut, "This is fossil version %s\n", get_version());
1030
+ if( !bVerbose ) return;
1031
+ blob_appendf(pOut, "Compiled on %s %s using %s (%d-bit)\n",
1032
+ __DATE__, __TIME__, COMPILER_NAME, sizeof(void*)*8);
1033
+ blob_appendf(pOut, "SQLite %s %.30s\n", sqlite3_libversion(),
1034
+ sqlite3_sourceid());
1035
+ blob_appendf(pOut, "Schema version %s\n", AUX_SCHEMA_MAX);
1036
+#if defined(FOSSIL_ENABLE_MINIZ)
1037
+ blob_appendf(pOut, "miniz %s, loaded %s\n", MZ_VERSION, mz_version());
1038
+#else
1039
+ blob_appendf(pOut, "zlib %s, loaded %s\n", ZLIB_VERSION, zlibVersion());
1040
+#endif
1041
+#if defined(FOSSIL_ENABLE_SSL)
1042
+ blob_appendf(pOut, "SSL (%s)\n", SSLeay_version(SSLEAY_VERSION));
1043
+#endif
1044
+#if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
1045
+ blob_append(pOut, "LEGACY_MV_RM\n", -1);
1046
+#endif
1047
+#if defined(FOSSIL_ENABLE_EXEC_REL_PATHS)
1048
+ blob_append(pOut, "EXEC_REL_PATHS\n", -1);
1049
+#endif
1050
+#if defined(FOSSIL_ENABLE_TH1_DOCS)
1051
+ blob_append(pOut, "TH1_DOCS\n", -1);
1052
+#endif
1053
+#if defined(FOSSIL_ENABLE_TH1_HOOKS)
1054
+ blob_append(pOut, "TH1_HOOKS\n", -1);
1055
+#endif
1056
+#if defined(FOSSIL_ENABLE_TCL)
1057
+ Th_FossilInit(TH_INIT_DEFAULT | TH_INIT_FORCE_TCL);
1058
+ rc = Th_Eval(g.interp, 0, "tclInvoke info patchlevel", -1);
1059
+ zRc = Th_ReturnCodeName(rc, 0);
1060
+ blob_appendf(pOut, "TCL (Tcl %s, loaded %s: %s)\n",
1061
+ TCL_PATCH_LEVEL, zRc, Th_GetResult(g.interp, 0)
1062
+ );
1063
+#endif
1064
+#if defined(USE_TCL_STUBS)
1065
+ blob_append(pOut, "USE_TCL_STUBS\n", -1);
1066
+#endif
1067
+#if defined(FOSSIL_ENABLE_TCL_STUBS)
1068
+ blob_append(pOut, "TCL_STUBS\n", -1);
1069
+#endif
1070
+#if defined(FOSSIL_ENABLE_TCL_PRIVATE_STUBS)
1071
+ blob_append(pOut, "TCL_PRIVATE_STUBS\n", -1);
1072
+#endif
1073
+#if defined(FOSSIL_ENABLE_JSON)
1074
+ blob_appendf(pOut, "JSON (API %s)\n", FOSSIL_JSON_API_VERSION);
1075
+#endif
1076
+#if defined(BROKEN_MINGW_CMDLINE)
1077
+ blob_append(pOut, "MBCS_COMMAND_LINE\n", -1);
1078
+#else
1079
+ blob_append(pOut, "UNICODE_COMMAND_LINE\n", -1);
1080
+#endif
1081
+#if defined(FOSSIL_DYNAMIC_BUILD)
1082
+ blob_append(pOut, "DYNAMIC_BUILD\n", -1);
1083
+#else
1084
+ blob_append(pOut, "STATIC_BUILD\n", -1);
1085
+#endif
1086
+}
10141087
10151088
/*
10161089
** This function returns the user-agent string for Fossil, for
10171090
** use in HTTP(S) requests.
10181091
*/
@@ -1019,10 +1092,11 @@
10191092
const char *get_user_agent(){
10201093
static const char version[] = "Fossil/" RELEASE_VERSION " (" MANIFEST_DATE
10211094
" " MANIFEST_VERSION ")";
10221095
return version;
10231096
}
1097
+
10241098
10251099
/*
10261100
** COMMAND: version
10271101
**
10281102
** Usage: %fossil version ?-verbose|-v?
@@ -1031,80 +1105,39 @@
10311105
** If the verbose option is specified, additional details will
10321106
** be output about what optional features this binary was compiled
10331107
** with
10341108
*/
10351109
void version_cmd(void){
1036
- int verboseFlag = 0;
1037
-
1038
- fossil_print("This is fossil version %s\n", get_version());
1039
- verboseFlag = find_option("verbose","v",0)!=0;
1110
+ Blob versionInfo;
1111
+ int verboseFlag = find_option("verbose","v",0)!=0;
10401112
10411113
/* We should be done with options.. */
10421114
verify_all_options();
1043
-
1044
- if(!verboseFlag){
1045
- return;
1046
- }else{
1047
-#if defined(FOSSIL_ENABLE_TCL)
1048
- int rc;
1049
- const char *zRc;
1050
-#endif
1051
- fossil_print("Compiled on %s %s using %s (%d-bit)\n",
1052
- __DATE__, __TIME__, COMPILER_NAME, sizeof(void*)*8);
1053
- fossil_print("SQLite %s %.30s\n", sqlite3_libversion(), sqlite3_sourceid());
1054
- fossil_print("Schema version %s\n", AUX_SCHEMA_MAX);
1055
-#if defined(FOSSIL_ENABLE_MINIZ)
1056
- fossil_print("miniz %s, loaded %s\n", MZ_VERSION, mz_version());
1057
-#else
1058
- fossil_print("zlib %s, loaded %s\n", ZLIB_VERSION, zlibVersion());
1059
-#endif
1060
-#if defined(FOSSIL_ENABLE_SSL)
1061
- fossil_print("SSL (%s)\n", SSLeay_version(SSLEAY_VERSION));
1062
-#endif
1063
-#if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
1064
- fossil_print("LEGACY_MV_RM\n");
1065
-#endif
1066
-#if defined(FOSSIL_ENABLE_EXEC_REL_PATHS)
1067
- fossil_print("EXEC_REL_PATHS\n");
1068
-#endif
1069
-#if defined(FOSSIL_ENABLE_TH1_DOCS)
1070
- fossil_print("TH1_DOCS\n");
1071
-#endif
1072
-#if defined(FOSSIL_ENABLE_TH1_HOOKS)
1073
- fossil_print("TH1_HOOKS\n");
1074
-#endif
1075
-#if defined(FOSSIL_ENABLE_TCL)
1076
- Th_FossilInit(TH_INIT_DEFAULT | TH_INIT_FORCE_TCL);
1077
- rc = Th_Eval(g.interp, 0, "tclInvoke info patchlevel", -1);
1078
- zRc = Th_ReturnCodeName(rc, 0);
1079
- fossil_print("TCL (Tcl %s, loaded %s: %s)\n",
1080
- TCL_PATCH_LEVEL, zRc, Th_GetResult(g.interp, 0)
1081
- );
1082
-#endif
1083
-#if defined(USE_TCL_STUBS)
1084
- fossil_print("USE_TCL_STUBS\n");
1085
-#endif
1086
-#if defined(FOSSIL_ENABLE_TCL_STUBS)
1087
- fossil_print("TCL_STUBS\n");
1088
-#endif
1089
-#if defined(FOSSIL_ENABLE_TCL_PRIVATE_STUBS)
1090
- fossil_print("TCL_PRIVATE_STUBS\n");
1091
-#endif
1092
-#if defined(FOSSIL_ENABLE_JSON)
1093
- fossil_print("JSON (API %s)\n", FOSSIL_JSON_API_VERSION);
1094
-#endif
1095
-#if defined(BROKEN_MINGW_CMDLINE)
1096
- fossil_print("MBCS_COMMAND_LINE\n");
1097
-#else
1098
- fossil_print("UNICODE_COMMAND_LINE\n");
1099
-#endif
1100
-#if defined(FOSSIL_DYNAMIC_BUILD)
1101
- fossil_print("DYNAMIC_BUILD\n");
1102
-#else
1103
- fossil_print("STATIC_BUILD\n");
1104
-#endif
1105
- }
1115
+ get_version_blob(&versionInfo, verboseFlag);
1116
+ fossil_print("%s", blob_str(&versionInfo));
1117
+}
1118
+
1119
+
1120
+/*
1121
+** WEBPAGE: test-version
1122
+**
1123
+** Show the version information for Fossil.
1124
+**
1125
+** Query parameters:
1126
+**
1127
+** verbose Show all available details.
1128
+*/
1129
+void test_version_page(void){
1130
+ Blob versionInfo;
1131
+ int verboseFlag = P("verbose")!=0;
1132
+
1133
+ style_header("Version Information");
1134
+ get_version_blob(&versionInfo, verboseFlag);
1135
+ @ <blockquote><pre>
1136
+ @ %h(blob_str(&versionInfo))
1137
+ @ </pre></blockquote>
1138
+ style_footer();
11061139
}
11071140
11081141
11091142
/*
11101143
** COMMAND: help
11111144
--- src/main.c
+++ src/main.c
@@ -1009,10 +1009,83 @@
1009 const char *get_version(){
1010 static const char version[] = RELEASE_VERSION " " MANIFEST_VERSION " "
1011 MANIFEST_DATE " UTC";
1012 return version;
1013 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1014
1015 /*
1016 ** This function returns the user-agent string for Fossil, for
1017 ** use in HTTP(S) requests.
1018 */
@@ -1019,10 +1092,11 @@
1019 const char *get_user_agent(){
1020 static const char version[] = "Fossil/" RELEASE_VERSION " (" MANIFEST_DATE
1021 " " MANIFEST_VERSION ")";
1022 return version;
1023 }
 
1024
1025 /*
1026 ** COMMAND: version
1027 **
1028 ** Usage: %fossil version ?-verbose|-v?
@@ -1031,80 +1105,39 @@
1031 ** If the verbose option is specified, additional details will
1032 ** be output about what optional features this binary was compiled
1033 ** with
1034 */
1035 void version_cmd(void){
1036 int verboseFlag = 0;
1037
1038 fossil_print("This is fossil version %s\n", get_version());
1039 verboseFlag = find_option("verbose","v",0)!=0;
1040
1041 /* We should be done with options.. */
1042 verify_all_options();
1043
1044 if(!verboseFlag){
1045 return;
1046 }else{
1047 #if defined(FOSSIL_ENABLE_TCL)
1048 int rc;
1049 const char *zRc;
1050 #endif
1051 fossil_print("Compiled on %s %s using %s (%d-bit)\n",
1052 __DATE__, __TIME__, COMPILER_NAME, sizeof(void*)*8);
1053 fossil_print("SQLite %s %.30s\n", sqlite3_libversion(), sqlite3_sourceid());
1054 fossil_print("Schema version %s\n", AUX_SCHEMA_MAX);
1055 #if defined(FOSSIL_ENABLE_MINIZ)
1056 fossil_print("miniz %s, loaded %s\n", MZ_VERSION, mz_version());
1057 #else
1058 fossil_print("zlib %s, loaded %s\n", ZLIB_VERSION, zlibVersion());
1059 #endif
1060 #if defined(FOSSIL_ENABLE_SSL)
1061 fossil_print("SSL (%s)\n", SSLeay_version(SSLEAY_VERSION));
1062 #endif
1063 #if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
1064 fossil_print("LEGACY_MV_RM\n");
1065 #endif
1066 #if defined(FOSSIL_ENABLE_EXEC_REL_PATHS)
1067 fossil_print("EXEC_REL_PATHS\n");
1068 #endif
1069 #if defined(FOSSIL_ENABLE_TH1_DOCS)
1070 fossil_print("TH1_DOCS\n");
1071 #endif
1072 #if defined(FOSSIL_ENABLE_TH1_HOOKS)
1073 fossil_print("TH1_HOOKS\n");
1074 #endif
1075 #if defined(FOSSIL_ENABLE_TCL)
1076 Th_FossilInit(TH_INIT_DEFAULT | TH_INIT_FORCE_TCL);
1077 rc = Th_Eval(g.interp, 0, "tclInvoke info patchlevel", -1);
1078 zRc = Th_ReturnCodeName(rc, 0);
1079 fossil_print("TCL (Tcl %s, loaded %s: %s)\n",
1080 TCL_PATCH_LEVEL, zRc, Th_GetResult(g.interp, 0)
1081 );
1082 #endif
1083 #if defined(USE_TCL_STUBS)
1084 fossil_print("USE_TCL_STUBS\n");
1085 #endif
1086 #if defined(FOSSIL_ENABLE_TCL_STUBS)
1087 fossil_print("TCL_STUBS\n");
1088 #endif
1089 #if defined(FOSSIL_ENABLE_TCL_PRIVATE_STUBS)
1090 fossil_print("TCL_PRIVATE_STUBS\n");
1091 #endif
1092 #if defined(FOSSIL_ENABLE_JSON)
1093 fossil_print("JSON (API %s)\n", FOSSIL_JSON_API_VERSION);
1094 #endif
1095 #if defined(BROKEN_MINGW_CMDLINE)
1096 fossil_print("MBCS_COMMAND_LINE\n");
1097 #else
1098 fossil_print("UNICODE_COMMAND_LINE\n");
1099 #endif
1100 #if defined(FOSSIL_DYNAMIC_BUILD)
1101 fossil_print("DYNAMIC_BUILD\n");
1102 #else
1103 fossil_print("STATIC_BUILD\n");
1104 #endif
1105 }
1106 }
1107
1108
1109 /*
1110 ** COMMAND: help
1111
--- src/main.c
+++ src/main.c
@@ -1009,10 +1009,83 @@
1009 const char *get_version(){
1010 static const char version[] = RELEASE_VERSION " " MANIFEST_VERSION " "
1011 MANIFEST_DATE " UTC";
1012 return version;
1013 }
1014
1015 /*
1016 ** This function populates a blob with version information. It is used by
1017 ** the "version" command and "test-version" web page. It assumes the blob
1018 ** passed to it is uninitialized; otherwise, it will leak memory.
1019 */
1020 static void get_version_blob(
1021 Blob *pOut, /* Write the manifest here */
1022 int bVerbose /* Non-zero for full information. */
1023 ){
1024 #if defined(FOSSIL_ENABLE_TCL)
1025 int rc;
1026 const char *zRc;
1027 #endif
1028 blob_zero(pOut);
1029 blob_appendf(pOut, "This is fossil version %s\n", get_version());
1030 if( !bVerbose ) return;
1031 blob_appendf(pOut, "Compiled on %s %s using %s (%d-bit)\n",
1032 __DATE__, __TIME__, COMPILER_NAME, sizeof(void*)*8);
1033 blob_appendf(pOut, "SQLite %s %.30s\n", sqlite3_libversion(),
1034 sqlite3_sourceid());
1035 blob_appendf(pOut, "Schema version %s\n", AUX_SCHEMA_MAX);
1036 #if defined(FOSSIL_ENABLE_MINIZ)
1037 blob_appendf(pOut, "miniz %s, loaded %s\n", MZ_VERSION, mz_version());
1038 #else
1039 blob_appendf(pOut, "zlib %s, loaded %s\n", ZLIB_VERSION, zlibVersion());
1040 #endif
1041 #if defined(FOSSIL_ENABLE_SSL)
1042 blob_appendf(pOut, "SSL (%s)\n", SSLeay_version(SSLEAY_VERSION));
1043 #endif
1044 #if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
1045 blob_append(pOut, "LEGACY_MV_RM\n", -1);
1046 #endif
1047 #if defined(FOSSIL_ENABLE_EXEC_REL_PATHS)
1048 blob_append(pOut, "EXEC_REL_PATHS\n", -1);
1049 #endif
1050 #if defined(FOSSIL_ENABLE_TH1_DOCS)
1051 blob_append(pOut, "TH1_DOCS\n", -1);
1052 #endif
1053 #if defined(FOSSIL_ENABLE_TH1_HOOKS)
1054 blob_append(pOut, "TH1_HOOKS\n", -1);
1055 #endif
1056 #if defined(FOSSIL_ENABLE_TCL)
1057 Th_FossilInit(TH_INIT_DEFAULT | TH_INIT_FORCE_TCL);
1058 rc = Th_Eval(g.interp, 0, "tclInvoke info patchlevel", -1);
1059 zRc = Th_ReturnCodeName(rc, 0);
1060 blob_appendf(pOut, "TCL (Tcl %s, loaded %s: %s)\n",
1061 TCL_PATCH_LEVEL, zRc, Th_GetResult(g.interp, 0)
1062 );
1063 #endif
1064 #if defined(USE_TCL_STUBS)
1065 blob_append(pOut, "USE_TCL_STUBS\n", -1);
1066 #endif
1067 #if defined(FOSSIL_ENABLE_TCL_STUBS)
1068 blob_append(pOut, "TCL_STUBS\n", -1);
1069 #endif
1070 #if defined(FOSSIL_ENABLE_TCL_PRIVATE_STUBS)
1071 blob_append(pOut, "TCL_PRIVATE_STUBS\n", -1);
1072 #endif
1073 #if defined(FOSSIL_ENABLE_JSON)
1074 blob_appendf(pOut, "JSON (API %s)\n", FOSSIL_JSON_API_VERSION);
1075 #endif
1076 #if defined(BROKEN_MINGW_CMDLINE)
1077 blob_append(pOut, "MBCS_COMMAND_LINE\n", -1);
1078 #else
1079 blob_append(pOut, "UNICODE_COMMAND_LINE\n", -1);
1080 #endif
1081 #if defined(FOSSIL_DYNAMIC_BUILD)
1082 blob_append(pOut, "DYNAMIC_BUILD\n", -1);
1083 #else
1084 blob_append(pOut, "STATIC_BUILD\n", -1);
1085 #endif
1086 }
1087
1088 /*
1089 ** This function returns the user-agent string for Fossil, for
1090 ** use in HTTP(S) requests.
1091 */
@@ -1019,10 +1092,11 @@
1092 const char *get_user_agent(){
1093 static const char version[] = "Fossil/" RELEASE_VERSION " (" MANIFEST_DATE
1094 " " MANIFEST_VERSION ")";
1095 return version;
1096 }
1097
1098
1099 /*
1100 ** COMMAND: version
1101 **
1102 ** Usage: %fossil version ?-verbose|-v?
@@ -1031,80 +1105,39 @@
1105 ** If the verbose option is specified, additional details will
1106 ** be output about what optional features this binary was compiled
1107 ** with
1108 */
1109 void version_cmd(void){
1110 Blob versionInfo;
1111 int verboseFlag = find_option("verbose","v",0)!=0;
 
 
1112
1113 /* We should be done with options.. */
1114 verify_all_options();
1115 get_version_blob(&versionInfo, verboseFlag);
1116 fossil_print("%s", blob_str(&versionInfo));
1117 }
1118
1119
1120 /*
1121 ** WEBPAGE: test-version
1122 **
1123 ** Show the version information for Fossil.
1124 **
1125 ** Query parameters:
1126 **
1127 ** verbose Show all available details.
1128 */
1129 void test_version_page(void){
1130 Blob versionInfo;
1131 int verboseFlag = P("verbose")!=0;
1132
1133 style_header("Version Information");
1134 get_version_blob(&versionInfo, verboseFlag);
1135 @ <blockquote><pre>
1136 @ %h(blob_str(&versionInfo))
1137 @ </pre></blockquote>
1138 style_footer();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1139 }
1140
1141
1142 /*
1143 ** COMMAND: help
1144

Keyboard Shortcuts

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