Index: pgServer.cpp =================================================================== RCS file: /projects/pgadmin3/src/schema/pgServer.cpp,v retrieving revision 1.50 retrieving revision 1.51 diff -Lsrc/schema/pgServer.cpp -Lsrc/schema/pgServer.cpp -u -w -r1.50 -r1.51 --- src/schema/pgServer.cpp +++ src/schema/pgServer.cpp @@ -149,6 +149,9 @@ else GetServerRunning(); // ignore result, just to wait for startup } +#else + wxString res = ExecProcess(serviceId + wxT(" start")); + done = (res.Find(wxT("tarting")) > 0); #endif return done; } @@ -170,10 +173,14 @@ serviceId.c_str(), rc); } } +#else + wxString res = ExecProcess(serviceId + wxT(" stop")); + done = (res.Find(wxT("stopped")) > 0); #endif return done; } + bool pgServer::GetServerRunning() { bool done=false; @@ -202,6 +209,11 @@ break; } } +#else + + wxString res = ExecProcess(serviceId + wxT(" status")); + done = (res.Find(wxT("PID: ")) > 0); + #endif return done; } @@ -227,7 +239,7 @@ #ifdef WIN32 return serviceHandle != 0; #else - return false; + return !serviceId.IsEmpty(); #endif } Index: misc.h =================================================================== RCS file: /projects/pgadmin3/src/include/misc.h,v retrieving revision 1.43 retrieving revision 1.44 diff -Lsrc/include/misc.h -Lsrc/include/misc.h -u -w -r1.43 -r1.44 --- src/include/misc.h +++ src/include/misc.h @@ -133,6 +133,9 @@ void DisplayHelp(wxWindow *wnd, const wxString &helpTopic, char **icon=0); void DisplaySqlHelp(wxWindow *wnd, const wxString &helpTopic, char **icon=0); +#ifndef WIN32 +wxString ExecProcess(const wxString &cmd); +#endif enum // depends on frmMain browserImages->Add order! Index: misc.cpp =================================================================== RCS file: /projects/pgadmin3/src/utils/misc.cpp,v retrieving revision 1.53 retrieving revision 1.54 diff -Lsrc/utils/misc.cpp -Lsrc/utils/misc.cpp -u -w -r1.53 -r1.54 --- src/utils/misc.cpp +++ src/utils/misc.cpp @@ -530,3 +530,23 @@ DisplayHelp(wnd, wxT("pg/") + helpTopic, icon); } + +#ifndef WIN32 +wxString ExecProcess(const wxString &cmd) +{ + wxString res; + FILE *f=popen(cmd.ToAscii(), "r"); + + if (f) + { + char buffer[1024]; + int cnt; + while ((cnt = fread(buffer, 1, 1024, f)) > 0) + { + res += wxString::FromAscii(buffer); + } + pclose(f); + } + return res; +} +#endif