@ -69,42 +69,49 @@ struct cmd_results *output_cmd_background(int argc, char **argv) {
 
			
		
	
		
		
			
				
					
								return  cmd_res ; 
			return  cmd_res ; 
 
			
		
	
		
		
			
				
					
							} 
		} 
 
			
		
	
		
		
			
				
					
							free ( src ) ; 
		free ( src ) ; 
 
			
		
	
		
		
			
				
					
							src  =  p . we_wordv [ 0 ] ; 
		src  =  strdup ( p . we_wordv [ 0 ] ) ; 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
							wordfree ( & p ) ; 
 
			
		
	
		
		
			
				
					
							if  ( ! src )  { 
 
			
		
	
		
		
			
				
					
								wlr_log ( L_ERROR ,  " Failed to duplicate string " ) ; 
 
			
		
	
		
		
			
				
					
								return  cmd_results_new ( CMD_FAILURE ,  " output " , 
 
			
		
	
		
		
			
				
					
									" Unable to allocate resource " ) ; 
 
			
		
	
		
		
			
				
					
							} 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
							if  ( config - > reading  & &  * src  ! =  ' / ' )  { 
		if  ( config - > reading  & &  * src  ! =  ' / ' )  { 
 
			
		
	
		
		
			
				
					
								// src file is inside configuration dir
 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
								char  * conf  =  strdup ( config - > current_config ) ; 
			char  * conf  =  strdup ( config - > current_config ) ; 
 
			
		
	
		
		
			
				
					
								if  ( conf )  { 
			if ( ! conf )  { 
 
			
				
				
			
		
	
		
		
			
				
					
									char  * conf_path  =  dirname ( conf ) ; 
				wlr_log ( L_ERROR ,  " Failed to duplicate string " ) ; 
 
			
				
				
			
		
	
		
		
			
				
					
									src  =  malloc ( strlen ( conf_path )  +  strlen ( src )  +  2 ) ; 
				return  cmd_results_new ( CMD_FAILURE ,  " output " , 
 
			
				
				
			
		
	
		
		
			
				
					
									if  ( ! src )  { 
 
			
		
	
		
		
			
				
					
										free ( conf ) ; 
 
			
		
	
		
		
			
				
					
										wordfree ( & p ) ; 
 
			
		
	
		
		
			
				
					
										wlr_log ( L_ERROR , 
 
			
		
	
		
		
			
				
					
											" Unable to allocate resource: Not enough memory " ) ; 
 
			
		
	
		
		
			
				
					
										return  cmd_results_new ( CMD_FAILURE ,  " output " , 
 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
											" Unable to allocate resources " ) ; 
						" Unable to allocate resources " ) ; 
 
			
		
	
		
		
			
				
					
									} 
			} 
 
			
				
				
			
		
	
		
		
			
				
					
									sprintf ( src ,  " %s/%s " ,  conf_path ,  p . we_wordv [ 0 ] ) ; 
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
								char  * conf_path  =  dirname ( conf ) ; 
 
			
		
	
		
		
			
				
					
								char  * rel_path  =  src ; 
 
			
		
	
		
		
			
				
					
								src  =  malloc ( strlen ( conf_path )  +  strlen ( src )  +  2 ) ; 
 
			
		
	
		
		
			
				
					
								if  ( ! src )  { 
 
			
		
	
		
		
			
				
					
									free ( rel_path ) ; 
 
			
		
	
		
		
			
				
					
									free ( conf ) ; 
				free ( conf ) ; 
 
			
		
	
		
		
			
				
					
								}  else  { 
				wlr_log ( L_ERROR ,  " Unable to allocate memory " ) ; 
 
			
				
				
			
		
	
		
		
			
				
					
									wlr_log ( L_ERROR ,  " Unable to allocate background source " ) ; 
				return  cmd_results_new ( CMD_FAILURE ,  " output " , 
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
											" Unable to allocate resources " ) ; 
 
			
		
	
		
		
			
				
					
								} 
			} 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
								sprintf ( src ,  " %s/%s " ,  conf_path ,  rel_path ) ; 
 
			
		
	
		
		
			
				
					
								free ( rel_path ) ; 
 
			
		
	
		
		
			
				
					
								free ( conf ) ; 
 
			
		
	
		
		
			
				
					
							} 
		} 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
							if  ( access ( src ,  F_OK )  = =  - 1 )  { 
		if  ( access ( src ,  F_OK )  = =  - 1 )  { 
 
			
		
	
		
		
			
				
					
								struct  cmd_results  * cmd_res  =  cmd_results_new ( CMD_FAILURE ,  " output " , 
			struct  cmd_results  * cmd_res  =  cmd_results_new ( CMD_FAILURE ,  " output " , 
 
			
		
	
		
		
			
				
					
									" Unable to access background file '%s': %s " ,  src ,  strerror ( errno ) ) ; 
				" Unable to access background file '%s': %s " ,  src ,  strerror ( errno ) ) ; 
 
			
		
	
		
		
			
				
					
								free ( src ) ; 
			free ( src ) ; 
 
			
		
	
		
		
			
				
					
								wordfree ( & p ) ; 
 
			
		
	
		
		
			
				
					
								return  cmd_res ; 
			return  cmd_res ; 
 
			
		
	
		
		
			
				
					
							} 
		} 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
							output - > background  =  strdup ( src ) ; 
		output - > background  =  src ; 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
							output - > background_option  =  strdup ( mode ) ; 
		output - > background_option  =  strdup ( mode ) ; 
 
			
		
	
		
		
			
				
					
							if  ( src  ! =  p . we_wordv [ 0 ] )  { 
 
			
		
	
		
		
			
				
					
								free ( src ) ; 
 
			
		
	
		
		
			
				
					
							} 
 
			
		
	
		
		
			
				
					
							wordfree ( & p ) ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
							argc  - =  j  +  1 ;  argv  + =  j  +  1 ; 
		argc  - =  j  +  1 ;  argv  + =  j  +  1 ; 
 
			
		
	
		
		
			
				
					
						} 
	}