From: Michael Stapelberg Date: Sun, 17 Jan 2016 21:21:56 +0000 (-0800) Subject: Merge pull request #2161 from botovq/next X-Git-Tag: 4.12~31 X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3;a=commitdiff_plain;h=a761e018d571417c4b9560572f12fee5c879235a;hp=9a4dbf366bcfce43e50185f05ed8c3ad85ac8ba1 Merge pull request #2161 from botovq/next Add pledge support for OpenBSD --- diff --git a/i3-msg/main.c b/i3-msg/main.c index e4a0628c..36691cae 100644 --- a/i3-msg/main.c +++ b/i3-msg/main.c @@ -119,6 +119,10 @@ static yajl_callbacks reply_callbacks = { }; int main(int argc, char *argv[]) { +#if defined(__OpenBSD__) + if (pledge("stdio rpath unix", NULL) == -1) + err(EXIT_FAILURE, "pledge"); +#endif char *env_socket_path = getenv("I3SOCK"); if (env_socket_path) socket_path = sstrdup(env_socket_path); diff --git a/i3-nagbar/main.c b/i3-nagbar/main.c index 38740774..674fcb7d 100644 --- a/i3-nagbar/main.c +++ b/i3-nagbar/main.c @@ -470,6 +470,11 @@ int main(int argc, char *argv[]) { font = load_font(pattern, true); set_font(&font); +#if defined(__OpenBSD__) + if (pledge("stdio rpath wpath cpath getpw proc exec", NULL) == -1) + err(EXIT_FAILURE, "pledge"); +#endif + xcb_rectangle_t win_pos = get_window_position(); xcb_cursor_t cursor; diff --git a/src/log.c b/src/log.c index b7ad072f..e8a08b53 100644 --- a/src/log.c +++ b/src/log.c @@ -58,6 +58,8 @@ static char *loglastwrap; static int logbuffer_size; /* File descriptor for shm_open. */ static int logbuffer_shm; +/* Size (in bytes) of physical memory */ +static long long physical_mem_bytes; /* * Writes the offsets for the next write and for the last wrap to the @@ -89,6 +91,16 @@ void init_logging(void) { } } } + if (physical_mem_bytes == 0) { +#if defined(__APPLE__) + int mib[2] = {CTL_HW, HW_MEMSIZE}; + size_t length = sizeof(long long); + sysctl(mib, 2, &physical_mem_bytes, &length, NULL, 0); +#else + physical_mem_bytes = (long long)sysconf(_SC_PHYS_PAGES) * + sysconf(_SC_PAGESIZE); +#endif + } /* Start SHM logging if shmlog_size is > 0. shmlog_size is SHMLOG_SIZE by * default on development versions, and 0 on release versions. If it is * not > 0, the user has turned it off, so let's close the logbuffer. */ @@ -108,15 +120,6 @@ void open_logbuffer(void) { * For 512 MiB of RAM this will lead to a 5 MiB log buffer. * At the moment (2011-12-10), no testcase leads to an i3 log * of more than ~ 600 KiB. */ - long long physical_mem_bytes; -#if defined(__APPLE__) - int mib[2] = {CTL_HW, HW_MEMSIZE}; - size_t length = sizeof(long long); - sysctl(mib, 2, &physical_mem_bytes, &length, NULL, 0); -#else - physical_mem_bytes = (long long)sysconf(_SC_PHYS_PAGES) * - sysconf(_SC_PAGESIZE); -#endif logbuffer_size = min(physical_mem_bytes * 0.01, shmlog_size); #if defined(__FreeBSD__) sasprintf(&shmlogname, "/tmp/i3-log-%d", getpid()); diff --git a/src/main.c b/src/main.c index 78835e08..b2ce17d8 100644 --- a/src/main.c +++ b/src/main.c @@ -802,6 +802,11 @@ int main(int argc, char *argv[]) { xcb_free_pixmap(conn, pixmap); } +#if defined(__OpenBSD__) + if (pledge("stdio rpath wpath cpath proc exec unix", NULL) == -1) + err(EXIT_FAILURE, "pledge"); +#endif + struct sigaction action; action.sa_sigaction = handle_signal;