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