diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 0c190540a..1894b5781 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -1339,11 +1339,6 @@ int SrsConfig::parse_options(int argc, char** argv) } } - // cwd - char cwd[256]; - getcwd(cwd, sizeof(cwd)); - _cwd = cwd; - // config show_help = true; for (int i = 1; i < argc; i++) { @@ -1411,6 +1406,18 @@ int SrsConfig::parse_options(int argc, char** argv) return ret; } +int SrsConfig::initialize_cwd() +{ + int ret = ERROR_SUCCESS; + + // cwd + char cwd[256]; + getcwd(cwd, sizeof(cwd)); + _cwd = cwd; + + return ret; +} + string SrsConfig::config() { return config_file; diff --git a/trunk/src/app/srs_app_config.hpp b/trunk/src/app/srs_app_config.hpp index 0f8ac1217..7fae47fea 100644 --- a/trunk/src/app/srs_app_config.hpp +++ b/trunk/src/app/srs_app_config.hpp @@ -287,6 +287,11 @@ public: * parse the cli, the main(argc,argv) function. */ virtual int parse_options(int argc, char** argv); + /** + * initialize the cwd for server, + * because we may change the workdir. + */ + virtual int initialize_cwd(); /** * get the config file path. */ diff --git a/trunk/src/main/srs_main_server.cpp b/trunk/src/main/srs_main_server.cpp index 21a10077e..551d76298 100644 --- a/trunk/src/main/srs_main_server.cpp +++ b/trunk/src/main/srs_main_server.cpp @@ -34,6 +34,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #endif +using namespace std; + #include #include #include @@ -283,11 +285,14 @@ int main(int argc, char** argv) } // change the work dir and set cwd. - std::string cwd = _srs_config->get_work_dir(); + string cwd = _srs_config->get_work_dir(); if (!cwd.empty() && cwd != "./" && (ret = chdir(cwd.c_str())) != ERROR_SUCCESS) { srs_error("change cwd to %s failed. ret=%d", cwd.c_str(), ret); return ret; } + if ((ret = _srs_config->initialize_cwd()) != ERROR_SUCCESS) { + return ret; + } // config parsed, initialize log. if ((ret = _srs_log->initialize()) != ERROR_SUCCESS) {