diff --git a/client/pool-buffer.c b/client/pool-buffer.c index fa468c0d..588bd06c 100644 --- a/client/pool-buffer.c +++ b/client/pool-buffer.c @@ -1,4 +1,4 @@ -#define _XOPEN_SOURCE 500 +#define _POSIX_C_SOURCE 200809 #include #include #include diff --git a/meson.build b/meson.build index eb5cba84..253a4e96 100644 --- a/meson.build +++ b/meson.build @@ -38,7 +38,7 @@ pango = dependency('pango') pangocairo = dependency('pangocairo') gdk_pixbuf = dependency('gdk-pixbuf-2.0', required: false) pixman = dependency('pixman-1') -libcap = dependency('libcap') +libcap = dependency('libcap', required: false) libinput = dependency('libinput', version: '>=1.6.0') libpam = cc.find_library('pam') systemd = dependency('libsystemd', required: false) @@ -104,7 +104,7 @@ if scdoc.found() endforeach endif -add_project_arguments('-DSYSCONFDIR="/@0@"'.format(sysconfdir), language : 'c') +add_project_arguments('-DSYSCONFDIR="/@0@/@1@"'.format(prefix, sysconfdir), language : 'c') version = get_option('sway-version') if version != '' diff --git a/sway/commands.c b/sway/commands.c index 359856cc..e72b8916 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -1,4 +1,4 @@ -#define _XOPEN_SOURCE 500 +#define _POSIX_C_SOURCE 200809 #include #include #include diff --git a/sway/commands/bar.c b/sway/commands/bar.c index f6a70c17..f760888e 100644 --- a/sway/commands/bar.c +++ b/sway/commands/bar.c @@ -1,4 +1,4 @@ -#define _XOPEN_SOURCE 500 +#define _POSIX_C_SOURCE 200809 #include #include #include diff --git a/sway/commands/output/background.c b/sway/commands/output/background.c index 74894812..ddad679d 100644 --- a/sway/commands/output/background.c +++ b/sway/commands/output/background.c @@ -1,4 +1,4 @@ -#define _XOPEN_SOURCE 500 +#define _POSIX_C_SOURCE 200809 #include #include #include diff --git a/sway/main.c b/sway/main.c index 7ed10c86..2f05dc38 100644 --- a/sway/main.c +++ b/sway/main.c @@ -366,13 +366,15 @@ int main(int argc, char **argv) { return 1; } -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD__) if (getuid() != geteuid() || getgid() != getegid()) { +#ifdef __linux__ // Retain capabilities after setuid() if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0)) { wlr_log(WLR_ERROR, "Cannot keep caps after setuid()"); exit(EXIT_FAILURE); } +#endif suid = true; } #endif @@ -382,7 +384,7 @@ int main(int argc, char **argv) { detect_proprietary(); detect_raspi(); -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD__) drop_permissions(suid); #endif // handle SIGTERM signals diff --git a/sway/server.c b/sway/server.c index 8b5bc93c..749365cb 100644 --- a/sway/server.c +++ b/sway/server.c @@ -140,6 +140,10 @@ bool server_init(struct sway_server *server) { void server_fini(struct sway_server *server) { // TODO: free sway-specific resources +#ifdef HAVE_XWAYLAND + wlr_xwayland_destroy(server->xwayland.wlr_xwayland); +#endif + wl_display_destroy_clients(server->wl_display); wl_display_destroy(server->wl_display); list_free(server->dirty_containers); list_free(server->transactions); diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index 60256336..1957d94f 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -1,4 +1,4 @@ -#define _XOPEN_SOURCE 500 +#define _POSIX_C_SOURCE 200809 #include #include #include diff --git a/swaybar/ipc.c b/swaybar/ipc.c index c2d05920..0e60c10c 100644 --- a/swaybar/ipc.c +++ b/swaybar/ipc.c @@ -1,4 +1,4 @@ -#define _XOPEN_SOURCE 500 +#define _POSIX_C_SOURCE 200809 #include #include #include diff --git a/swaylock/meson.build b/swaylock/meson.build index 63f694b9..675b8c69 100644 --- a/swaylock/meson.build +++ b/swaylock/meson.build @@ -24,7 +24,16 @@ executable( install: true ) -install_data( - 'pam/swaylock', - install_dir: sysconfdir + '/pam.d/' -) +if is_freebsd + install_data( + 'pam/swaylock.freebsd', + install_dir: sysconfdir + '/pam.d/', + rename: 'swaylock' + ) +else + install_data( + 'pam/swaylock.linux', + install_dir: sysconfdir + '/pam.d/', + rename: 'swaylock' + ) +endif diff --git a/swaylock/pam/swaylock.freebsd b/swaylock/pam/swaylock.freebsd new file mode 100644 index 00000000..603fc185 --- /dev/null +++ b/swaylock/pam/swaylock.freebsd @@ -0,0 +1,6 @@ +# +# PAM configuration file for the swaylock screen locker. By default, it includes +# the 'passwd' configuration file (see /etc/pam.d/passwd) +# + +auth include passwd diff --git a/swaylock/pam/swaylock b/swaylock/pam/swaylock.linux similarity index 100% rename from swaylock/pam/swaylock rename to swaylock/pam/swaylock.linux