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>
This commit is contained in:
		
							parent
							
								
									a880845f3d
								
							
						
					
					
						commit
						a839ee77c7
					
				
							
								
								
									
										11
									
								
								qga/main.c
								
								
								
								
							
							
						
						
									
										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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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…
	
		Reference in New Issue