On 07/02/2012 11:44 PM, Peter Hutterer wrote:
There's probably some better way to do this than strdup()ing everything, send me a patch if you know how.
Hopefully it will be easier if we use a vector of std::strings, as I mentioned in the previous patch review :).
Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> --- src/xserver.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/xserver.cpp b/src/xserver.cpp index 765feb1..cc78d59 100644 --- a/src/xserver.cpp +++ b/src/xserver.cpp @@ -301,13 +301,25 @@ unsigned int xorg::testing::XServer::Start(void) { } unsigned int xorg::testing::XServer::Start(std::string &program) { + std::vector<char*> args; + std::map<std::string, std::string>::iterator it; + TestStartup(); - Process::Start(program, program.c_str(), - GetDisplayString(), - "-logverbose", "10", - "-logfile", d_->options["-logfile"].c_str(), - "-config", d_->options["-config"].c_str(), - NULL); + + args.push_back(strdup(program.c_str())); + args.push_back(strdup(GetDisplayString())); + + for (it = d_->options.begin(); it != d_->options.end(); it++) { + args.push_back(strdup(it->first.c_str())); + if (it->second.length()) + args.push_back(strdup(it->second.c_str())); + } + + Process::Start(program, args); + + std::vector<char*>::iterator vit; + for (vit = args.begin(); vit != args.end(); vit++) + free(*vit); /* FIXME: use -displayfd here once the released servers support it */ return d_->display_number;
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel