mirror of
				https://github.com/swaywm/sway.git
				synced 2025-10-29 05:40:18 -04:00 
			
		
		
		
	fix swaymsg: errors are displayed again
Command errors didn't get displayed, because the success function didn't accept objects
This commit is contained in:
		
							parent
							
								
									d3ea07f828
								
							
						
					
					
						commit
						659871de1e
					
				
					 1 changed files with 21 additions and 6 deletions
				
			
		|  | @ -19,30 +19,44 @@ void sway_terminate(int exit_code) { | ||||||
| 	exit(exit_code); | 	exit(exit_code); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static bool success_object(json_object *result) { | ||||||
|  | 	json_object *success; | ||||||
|  | 
 | ||||||
|  | 	if (!json_object_object_get_ex(result, "success", &success)) { | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (!json_object_get_boolean(success)) { | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // Iterate results array and return false if any of them failed
 | // Iterate results array and return false if any of them failed
 | ||||||
| static bool success(json_object *r, bool fallback) { | static bool success(json_object *r, bool fallback) { | ||||||
| 	if (!json_object_is_type(r, json_type_array)) { | 	if (!json_object_is_type(r, json_type_array)) { | ||||||
| 		return fallback; | 		return fallback; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	size_t results_len = json_object_array_length(r); | 	size_t results_len = json_object_array_length(r); | ||||||
| 	if (!results_len) { | 	if (!results_len) { | ||||||
| 		return fallback; | 		return fallback; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	for (size_t i = 0; i < results_len; ++i) { | 	for (size_t i = 0; i < results_len; ++i) { | ||||||
| 		json_object *result = json_object_array_get_idx(r, i); | 		json_object *result = json_object_array_get_idx(r, i); | ||||||
| 		json_object *success; | 
 | ||||||
| 		if (!json_object_object_get_ex(result, "success", &success)) { | 		if (!success_object(result)) { | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 		if (!json_object_get_boolean(success)) { |  | ||||||
| 			return false; | 			return false; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	return true; | 	return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void pretty_print_cmd(json_object *r) { | static void pretty_print_cmd(json_object *r) { | ||||||
| 	if (!success(r, true)) { | 	if (!success_object(r)) { | ||||||
| 		json_object *error; | 		json_object *error; | ||||||
| 		if (!json_object_object_get_ex(r, "error", &error)) { | 		if (!json_object_object_get_ex(r, "error", &error)) { | ||||||
| 			printf("An unknkown error occurred"); | 			printf("An unknkown error occurred"); | ||||||
|  | @ -402,6 +416,7 @@ int main(int argc, char **argv) { | ||||||
| 	} else { | 	} else { | ||||||
| 		sway_abort("Unknown message type %s", cmdtype); | 		sway_abort("Unknown message type %s", cmdtype); | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	free(cmdtype); | 	free(cmdtype); | ||||||
| 
 | 
 | ||||||
| 	char *command = NULL; | 	char *command = NULL; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Armin Preiml
						Armin Preiml