mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Merge pull request #393 from robotanarchy/musl-libc-compatibility
musl libc compatibility
This commit is contained in:
		
						commit
						91c102a897
					
				
					 9 changed files with 41 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -9,6 +9,7 @@ add_definitions(-DFALLBACK_CONFIG_DIR=\"${FALLBACK_CONFIG_DIR}\")
 | 
			
		|||
set(CMAKE_C_FLAGS "-g")
 | 
			
		||||
set(CMAKE_C_STANDARD 99)
 | 
			
		||||
set(CMAKE_C_EXTENSIONS OFF)
 | 
			
		||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 | 
			
		||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
 | 
			
		||||
add_definitions(
 | 
			
		||||
    -D_GNU_SOURCE
 | 
			
		||||
| 
						 | 
				
			
			@ -58,6 +59,14 @@ find_package(Pango)
 | 
			
		|||
find_package(GdkPixbuf)
 | 
			
		||||
find_package(PAM)
 | 
			
		||||
 | 
			
		||||
find_package(Backtrace)
 | 
			
		||||
if(Backtrace_FOUND)
 | 
			
		||||
  include_directories("${Backtrace_INCLUDE_DIRS}")
 | 
			
		||||
  add_definitions(-DSWAY_Backtrace_FOUND=1)
 | 
			
		||||
  set(LINK_LIBRARIES, "${LINK_LIBRARIES} ${Backtrace_LIBRARIES}")
 | 
			
		||||
  set(SWAY_Backtrace_HEADER "${Backtrace_HEADER}")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
include(FeatureSummary)
 | 
			
		||||
include(Manpage)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,3 +6,10 @@ add_library(sway-common
 | 
			
		|||
	readline.c
 | 
			
		||||
	stringop.c
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
if(Backtrace_FOUND)
 | 
			
		||||
	set_target_properties(sway-common
 | 
			
		||||
		PROPERTIES
 | 
			
		||||
		COMPILE_FLAGS "-include ${Backtrace_HEADER}"
 | 
			
		||||
		)
 | 
			
		||||
endif()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,14 +50,8 @@ void list_cat(list_t *list, list_t *source) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// pass the pointer of the object we care about to the comparison function
 | 
			
		||||
static int list_cmp(const void *l, const void *r, void *_cmp) {
 | 
			
		||||
	int (*cmp)(const void *, const void *) = _cmp;
 | 
			
		||||
	return cmp(*(void**)l, *(void**)r);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void list_sort(list_t *list, int compare(const void *left, const void *right)) {
 | 
			
		||||
	qsort_r(list->items, list->length, sizeof(void *), list_cmp, compare);
 | 
			
		||||
void list_qsort(list_t* list, int compare(const void *left, const void *right)) {
 | 
			
		||||
	qsort(list->items, list->length, sizeof(void *), compare);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int list_seq_find(list_t *list, int compare(const void *item, const void *data), const void *data) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,6 @@
 | 
			
		|||
#include <errno.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stringop.h>
 | 
			
		||||
#include <execinfo.h>
 | 
			
		||||
 | 
			
		||||
int colored = 1;
 | 
			
		||||
log_importance_t loglevel_default = L_ERROR;
 | 
			
		||||
| 
						 | 
				
			
			@ -137,6 +136,7 @@ bool _sway_assert(bool condition, const char* format, ...) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void error_handler(int sig) {
 | 
			
		||||
#if SWAY_Backtrace_FOUND
 | 
			
		||||
	int i;
 | 
			
		||||
	int max_lines = 20;
 | 
			
		||||
	void *array[max_lines];
 | 
			
		||||
| 
						 | 
				
			
			@ -155,5 +155,8 @@ void error_handler(int sig) {
 | 
			
		|||
	for (i = 0; (size_t)i < bt_len; i++) {
 | 
			
		||||
		sway_log(L_ERROR, "Backtrace: %s", bt[i]);
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
	sway_log(L_ERROR, "Error: Signal %d.", sig);
 | 
			
		||||
#endif
 | 
			
		||||
	exit(1);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -179,10 +179,12 @@ void free_output_config(struct output_config *oc);
 | 
			
		|||
int workspace_output_cmp_workspace(const void *a, const void *b);
 | 
			
		||||
 | 
			
		||||
int sway_binding_cmp(const void *a, const void *b);
 | 
			
		||||
int sway_binding_cmp_qsort(const void *a, const void *b);
 | 
			
		||||
int sway_binding_cmp_keys(const void *a, const void *b);
 | 
			
		||||
void free_sway_binding(struct sway_binding *sb);
 | 
			
		||||
 | 
			
		||||
int sway_mouse_binding_cmp(const void *a, const void *b);
 | 
			
		||||
int sway_mouse_binding_cmp_qsort(const void *a, const void *b);
 | 
			
		||||
int sway_mouse_binding_cmp_buttons(const void *a, const void *b);
 | 
			
		||||
void free_sway_mouse_binding(struct sway_mouse_binding *smb);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,8 +13,9 @@ void list_add(list_t *list, void *item);
 | 
			
		|||
void list_insert(list_t *list, int index, void *item);
 | 
			
		||||
void list_del(list_t *list, int index);
 | 
			
		||||
void list_cat(list_t *list, list_t *source);
 | 
			
		||||
// See qsort
 | 
			
		||||
void list_sort(list_t *list, int compare(const void *left, const void *right));
 | 
			
		||||
// See qsort. Remember to use *_qsort functions as compare functions,
 | 
			
		||||
// because they dereference the left and right arguments first!
 | 
			
		||||
void list_qsort(list_t *list, int compare(const void *left, const void *right));
 | 
			
		||||
// Return index for first item in list that returns 0 for given compare
 | 
			
		||||
// function or -1 if none matches.
 | 
			
		||||
int list_seq_find(list_t *list, int compare(const void *item, const void *cmp_to), const void *cmp_to);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -220,7 +220,7 @@ static struct cmd_results *cmd_bindsym(int argc, char **argv) {
 | 
			
		|||
	}
 | 
			
		||||
	binding->order = binding_order++;
 | 
			
		||||
	list_add(mode->bindings, binding);
 | 
			
		||||
	list_sort(mode->bindings, sway_binding_cmp);
 | 
			
		||||
	list_qsort(mode->bindings, sway_binding_cmp_qsort);
 | 
			
		||||
 | 
			
		||||
	sway_log(L_DEBUG, "bindsym - Bound %s to command %s", argv[0], binding->command);
 | 
			
		||||
	return cmd_results_new(CMD_SUCCESS, NULL, NULL);
 | 
			
		||||
| 
						 | 
				
			
			@ -1266,9 +1266,9 @@ static struct cmd_results *cmd_scratchpad(int argc, char **argv) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// sort in order of longest->shortest
 | 
			
		||||
static int compare_set(const void *_l, const void *_r) {
 | 
			
		||||
	struct sway_variable const *l = _l;
 | 
			
		||||
	struct sway_variable const *r = _r;
 | 
			
		||||
static int compare_set_qsort(const void *_l, const void *_r) {
 | 
			
		||||
	struct sway_variable const *l = *(void **)_l;
 | 
			
		||||
	struct sway_variable const *r = *(void **)_r;
 | 
			
		||||
	return strlen(r->name) - strlen(l->name);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1295,7 +1295,7 @@ static struct cmd_results *cmd_set(int argc, char **argv) {
 | 
			
		|||
		var = malloc(sizeof(struct sway_variable));
 | 
			
		||||
		var->name = strdup(argv[0]);
 | 
			
		||||
		list_add(config->symbols, var);
 | 
			
		||||
		list_sort(config->symbols, compare_set);
 | 
			
		||||
		list_qsort(config->symbols, compare_set_qsort);
 | 
			
		||||
	}
 | 
			
		||||
	var->value = join_args(argv + 1, argc - 1);
 | 
			
		||||
	return cmd_results_new(CMD_SUCCESS, NULL, NULL);
 | 
			
		||||
| 
						 | 
				
			
			@ -1631,7 +1631,7 @@ static struct cmd_results *bar_cmd_bindsym(int argc, char **argv) {
 | 
			
		|||
		list_del(bar->bindings, i);
 | 
			
		||||
	}
 | 
			
		||||
	list_add(bar->bindings, binding);
 | 
			
		||||
	list_sort(bar->bindings, sway_mouse_binding_cmp);
 | 
			
		||||
	list_qsort(bar->bindings, sway_mouse_binding_cmp_qsort);
 | 
			
		||||
 | 
			
		||||
	sway_log(L_DEBUG, "bindsym - Bound %s to command %s when clicking swaybar", argv[0], binding->command);
 | 
			
		||||
	return cmd_results_new(CMD_SUCCESS, NULL, NULL);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -642,6 +642,10 @@ int sway_binding_cmp(const void *a, const void *b) {
 | 
			
		|||
	return lenient_strcmp(binda->command, bindb->command);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sway_binding_cmp_qsort(const void *a, const void *b) {
 | 
			
		||||
	return sway_binding_cmp(*(void **)a, *(void **)b);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void free_sway_binding(struct sway_binding *binding) {
 | 
			
		||||
	if (binding->keys) {
 | 
			
		||||
		for (int i = 0; i < binding->keys->length; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -675,6 +679,10 @@ int sway_mouse_binding_cmp(const void *a, const void *b) {
 | 
			
		|||
	return lenient_strcmp(binda->command, bindb->command);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sway_mouse_binding_cmp_qsort(const void *a, const void *b) {
 | 
			
		||||
	return sway_mouse_binding_cmp(*(void **)a, *(void **)b);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void free_sway_mouse_binding(struct sway_mouse_binding *binding) {
 | 
			
		||||
	if (binding->command) {
 | 
			
		||||
		free(binding->command);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,6 @@
 | 
			
		|||
#include <errno.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stringop.h>
 | 
			
		||||
#include <execinfo.h>
 | 
			
		||||
#include "workspace.h"
 | 
			
		||||
 | 
			
		||||
extern log_importance_t v;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue