| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1201,6 +1201,7 @@ static void *watchdog(void *arg) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static struct option long_options[] = { | 
					 | 
					 | 
					 | 
					static struct option long_options[] = { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"standalone",	no_argument,		0,	'A'}, | 
					 | 
					 | 
					 | 
						{"standalone",	no_argument,		0,	'A'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"config",	required_argument,	0,	'c'}, | 
					 | 
					 | 
					 | 
						{"config",	required_argument,	0,	'c'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{"daemonise",	no_argument,		0,	'D'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"ckdb-name",	required_argument,	0,	'd'}, | 
					 | 
					 | 
					 | 
						{"ckdb-name",	required_argument,	0,	'd'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"group",	required_argument,	0,	'g'}, | 
					 | 
					 | 
					 | 
						{"group",	required_argument,	0,	'g'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"handover",	no_argument,		0,	'H'}, | 
					 | 
					 | 
					 | 
						{"handover",	no_argument,		0,	'H'}, | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1218,6 +1219,7 @@ static struct option long_options[] = { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else | 
					 | 
					 | 
					 | 
					#else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static struct option long_options[] = { | 
					 | 
					 | 
					 | 
					static struct option long_options[] = { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"config",	required_argument,	0,	'c'}, | 
					 | 
					 | 
					 | 
						{"config",	required_argument,	0,	'c'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{"daemonise",	no_argument,		0,	'D'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"group",	required_argument,	0,	'g'}, | 
					 | 
					 | 
					 | 
						{"group",	required_argument,	0,	'g'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"handover",	no_argument,		0,	'H'}, | 
					 | 
					 | 
					 | 
						{"handover",	no_argument,		0,	'H'}, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{"help",	no_argument,		0,	'h'}, | 
					 | 
					 | 
					 | 
						{"help",	no_argument,		0,	'h'}, | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1267,7 +1269,7 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ckp.initial_args[ckp.args] = strdup(argv[ckp.args]); | 
					 | 
					 | 
					 | 
							ckp.initial_args[ckp.args] = strdup(argv[ckp.args]); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ckp.initial_args[ckp.args] = NULL; | 
					 | 
					 | 
					 | 
						ckp.initial_args[ckp.args] = NULL; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						while ((c = getopt_long(argc, argv, "Ac:d:g:HhkLl:n:PpS:s:", long_options, &i)) != -1) { | 
					 | 
					 | 
					 | 
						while ((c = getopt_long(argc, argv, "Ac:Dd:g:HhkLl:n:PpS:s:", long_options, &i)) != -1) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							switch (c) { | 
					 | 
					 | 
					 | 
							switch (c) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								case 'A': | 
					 | 
					 | 
					 | 
								case 'A': | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ckp.standalone = true; | 
					 | 
					 | 
					 | 
									ckp.standalone = true; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1275,6 +1277,9 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								case 'c': | 
					 | 
					 | 
					 | 
								case 'c': | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ckp.config = optarg; | 
					 | 
					 | 
					 | 
									ckp.config = optarg; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									break; | 
					 | 
					 | 
					 | 
									break; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								case 'D': | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ckp.daemon = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									break; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								case 'd': | 
					 | 
					 | 
					 | 
								case 'd': | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ckp.ckdb_name = optarg; | 
					 | 
					 | 
					 | 
									ckp.ckdb_name = optarg; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									break; | 
					 | 
					 | 
					 | 
									break; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1500,6 +1505,20 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (ckp.daemon) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							int fd; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (fork()) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								exit(0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							setsid(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							fd = open("/dev/null",O_RDWR, 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (fd != -1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								dup2(fd, STDIN_FILENO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								dup2(fd, STDOUT_FILENO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								dup2(fd, STDERR_FILENO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						write_namepid(&ckp.main); | 
					 | 
					 | 
					 | 
						write_namepid(&ckp.main); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						open_process_sock(&ckp, &ckp.main, &ckp.main.us); | 
					 | 
					 | 
					 | 
						open_process_sock(&ckp, &ckp.main, &ckp.main.us); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						launch_logger(&ckp.main); | 
					 | 
					 | 
					 | 
						launch_logger(&ckp.main); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |