winlin

support test config file. change to 0.9.61

@@ -436,6 +436,7 @@ SrsConfig::SrsConfig() @@ -436,6 +436,7 @@ SrsConfig::SrsConfig()
436 { 436 {
437 show_help = false; 437 show_help = false;
438 show_version = false; 438 show_version = false;
  439 + test_conf = false;
439 440
440 root = new SrsConfDirective(); 441 root = new SrsConfDirective();
441 root->conf_line = 0; 442 root->conf_line = 0;
@@ -1073,13 +1074,11 @@ int SrsConfig::parse_options(int argc, char** argv) @@ -1073,13 +1074,11 @@ int SrsConfig::parse_options(int argc, char** argv)
1073 1074
1074 if (show_help) { 1075 if (show_help) {
1075 print_help(argv); 1076 print_help(argv);
  1077 + exit(0);
1076 } 1078 }
1077 1079
1078 if (show_version) { 1080 if (show_version) {
1079 fprintf(stderr, "%s\n", RTMP_SIG_SRS_VERSION); 1081 fprintf(stderr, "%s\n", RTMP_SIG_SRS_VERSION);
1080 - }  
1081 -  
1082 - if (show_help || show_version) {  
1083 exit(0); 1082 exit(0);
1084 } 1083 }
1085 1084
@@ -1089,7 +1088,19 @@ int SrsConfig::parse_options(int argc, char** argv) @@ -1089,7 +1088,19 @@ int SrsConfig::parse_options(int argc, char** argv)
1089 return ret; 1088 return ret;
1090 } 1089 }
1091 1090
1092 - return parse_file(config_file.c_str()); 1091 + ret = parse_file(config_file.c_str());
  1092 +
  1093 + if (test_conf) {
  1094 + if (ret == ERROR_SUCCESS) {
  1095 + srs_trace("config file is ok");
  1096 + exit(0);
  1097 + } else {
  1098 + srs_error("config file is invalid");
  1099 + exit(ret);
  1100 + }
  1101 + }
  1102 +
  1103 + return ret;
1093 } 1104 }
1094 1105
1095 int SrsConfig::parse_file(const char* filename) 1106 int SrsConfig::parse_file(const char* filename)
@@ -1154,6 +1165,10 @@ int SrsConfig::parse_argv(int& i, char** argv) @@ -1154,6 +1165,10 @@ int SrsConfig::parse_argv(int& i, char** argv)
1154 case 'h': 1165 case 'h':
1155 show_help = true; 1166 show_help = true;
1156 break; 1167 break;
  1168 + case 't':
  1169 + show_help = false;
  1170 + test_conf = true;
  1171 + break;
1157 case 'v': 1172 case 'v':
1158 case 'V': 1173 case 'V':
1159 show_help = false; 1174 show_help = false;
@@ -1188,19 +1203,23 @@ void SrsConfig::print_help(char** argv) @@ -1188,19 +1203,23 @@ void SrsConfig::print_help(char** argv)
1188 RTMP_SIG_SRS_NAME" "RTMP_SIG_SRS_VERSION" "RTMP_SIG_SRS_COPYRIGHT"\n" 1203 RTMP_SIG_SRS_NAME" "RTMP_SIG_SRS_VERSION" "RTMP_SIG_SRS_COPYRIGHT"\n"
1189 "Primary Authors: "RTMP_SIG_SRS_PRIMARY_AUTHROS"\n" 1204 "Primary Authors: "RTMP_SIG_SRS_PRIMARY_AUTHROS"\n"
1190 "Build: "SRS_BUILD_DATE" Configuration:"SRS_CONFIGURE"\n" 1205 "Build: "SRS_BUILD_DATE" Configuration:"SRS_CONFIGURE"\n"
1191 - "Usage: %s [-h?vVt] [-c <filename>]\n" 1206 + "Usage: %s [-h?vV] [[-t] -c <filename>]\n"
1192 "\n" 1207 "\n"
1193 "Options:\n" 1208 "Options:\n"
1194 - " -?, -h : show help\n"  
1195 - " -v, -V : show version and exit\n"  
1196 - " -t : test configuration file\n"  
1197 - " -c filename : set configuration file\n" 1209 + " -?, -h : show this help and exit(0)\n"
  1210 + " -v, -V : show version and exit(0)\n"
  1211 + " -t : test configuration file, exit(error_code).\n"
  1212 + " -c filename : use configuration file for SRS\n"
1198 "\n" 1213 "\n"
1199 RTMP_SIG_SRS_WEB"\n" 1214 RTMP_SIG_SRS_WEB"\n"
1200 RTMP_SIG_SRS_URL"\n" 1215 RTMP_SIG_SRS_URL"\n"
1201 "Email: "RTMP_SIG_SRS_EMAIL"\n" 1216 "Email: "RTMP_SIG_SRS_EMAIL"\n"
1202 - "\n",  
1203 - argv[0]); 1217 + "\n"
  1218 + "For example:\n"
  1219 + " %s -v\n"
  1220 + " %s -t -c "SRS_DEFAULT_CONF"\n"
  1221 + " %s -c "SRS_DEFAULT_CONF"\n",
  1222 + argv[0], argv[0], argv[0], argv[0]);
1204 } 1223 }
1205 1224
1206 bool SrsConfig::get_deamon() 1225 bool SrsConfig::get_deamon()
@@ -39,6 +39,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -39,6 +39,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39 39
40 #define SRS_LOCALHOST "127.0.0.1" 40 #define SRS_LOCALHOST "127.0.0.1"
41 #define SRS_CONF_DEFAULT_PID_FILE "./objs/srs.pid" 41 #define SRS_CONF_DEFAULT_PID_FILE "./objs/srs.pid"
  42 +#define SRS_DEFAULT_CONF "conf/srs.conf"
42 43
43 #define SRS_CONF_DEFAULT_HLS_PATH "./objs/nginx/html" 44 #define SRS_CONF_DEFAULT_HLS_PATH "./objs/nginx/html"
44 #define SRS_CONF_DEFAULT_HLS_FRAGMENT 10 45 #define SRS_CONF_DEFAULT_HLS_FRAGMENT 10
@@ -111,6 +112,7 @@ class SrsConfig @@ -111,6 +112,7 @@ class SrsConfig
111 { 112 {
112 private: 113 private:
113 bool show_help; 114 bool show_help;
  115 + bool test_conf;
114 bool show_version; 116 bool show_version;
115 std::string config_file; 117 std::string config_file;
116 SrsConfDirective* root; 118 SrsConfDirective* root;
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 // current release version 31 // current release version
32 #define VERSION_MAJOR "0" 32 #define VERSION_MAJOR "0"
33 #define VERSION_MINOR "9" 33 #define VERSION_MINOR "9"
34 -#define VERSION_REVISION "60" 34 +#define VERSION_REVISION "61"
35 #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION 35 #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
36 // server info. 36 // server info.
37 #define RTMP_SIG_SRS_KEY "srs" 37 #define RTMP_SIG_SRS_KEY "srs"