Browse Source

qga: save state directory in ga_install_service()

If the user selects a non-default state directory at service installation
time, we should remember it in the registered service.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
pull/4/head
Laszlo Ersek 13 years ago
committed by Michael Roth
parent
commit
a839ee77c7
  1. 11
      qga/main.c
  2. 6
      qga/service-win32.c
  3. 3
      qga/service-win32.h

11
qga/main.c

@ -1022,7 +1022,16 @@ int main(int argc, char **argv)
case 's':
service = optarg;
if (strcmp(service, "install") == 0) {
return ga_install_service(path, log_filepath);
const char *fixed_state_dir;
/* If the user passed the "-t" option, we save that state dir
* in the service. Otherwise we let the service fetch the state
* dir from the environment when it starts.
*/
fixed_state_dir = (state_dir == dfl_pathnames.state_dir) ?
NULL :
state_dir;
return ga_install_service(path, log_filepath, fixed_state_dir);
} else if (strcmp(service, "uninstall") == 0) {
return ga_uninstall_service();
} else {

6
qga/service-win32.c

@ -35,7 +35,8 @@ static int printf_win_error(const char *text)
return n;
}
int ga_install_service(const char *path, const char *logfile)
int ga_install_service(const char *path, const char *logfile,
const char *state_dir)
{
SC_HANDLE manager;
SC_HANDLE service;
@ -56,6 +57,9 @@ int ga_install_service(const char *path, const char *logfile)
if (logfile) {
g_string_append_printf(cmdline, " -l %s -v", logfile);
}
if (state_dir) {
g_string_append_printf(cmdline, " -t %s", state_dir);
}
g_debug("service's cmdline: %s", cmdline->str);

3
qga/service-win32.h

@ -24,7 +24,8 @@ typedef struct GAService {
SERVICE_STATUS_HANDLE status_handle;
} GAService;
int ga_install_service(const char *path, const char *logfile);
int ga_install_service(const char *path, const char *logfile,
const char *state_dir);
int ga_uninstall_service(void);
#endif

Loading…
Cancel
Save