Backport semarie@'s improvement of the pledge patch which is now
upstream. i3 is now pledged unconditionally and the shmlog can again be enabled at runtime. ok dcoppa@
This commit is contained in:
parent
a8f19eecd5
commit
a538b86afc
@ -1,9 +1,9 @@
|
||||
# $OpenBSD: Makefile,v 1.101 2016/01/15 19:57:24 sthen Exp $
|
||||
# $OpenBSD: Makefile,v 1.102 2016/01/18 10:04:28 tb Exp $
|
||||
|
||||
COMMENT = improved dynamic tiling window manager
|
||||
|
||||
DISTNAME = i3-4.11
|
||||
REVISION = 1
|
||||
REVISION = 2
|
||||
CATEGORIES = x11
|
||||
|
||||
EXTRACT_SUFX = .tar.bz2
|
||||
|
@ -1,9 +1,9 @@
|
||||
$OpenBSD: patch-src_log_c,v 1.10 2015/10/04 08:48:12 dcoppa Exp $
|
||||
$OpenBSD: patch-src_log_c,v 1.11 2016/01/18 10:04:29 tb Exp $
|
||||
|
||||
OpenBSD lacks pthread_condattr_setpshared()
|
||||
|
||||
--- src/log.c.orig Wed Sep 30 08:55:10 2015
|
||||
+++ src/log.c Fri Oct 2 16:58:54 2015
|
||||
+++ src/log.c Sun Jan 17 23:10:44 2016
|
||||
@@ -20,7 +20,9 @@
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
@ -14,7 +14,49 @@ OpenBSD lacks pthread_condattr_setpshared()
|
||||
|
||||
#include "util.h"
|
||||
#include "log.h"
|
||||
@@ -154,11 +156,13 @@ void open_logbuffer(void) {
|
||||
@@ -58,6 +60,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 +93,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 +122,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());
|
||||
@@ -154,11 +159,13 @@ void open_logbuffer(void) {
|
||||
|
||||
header = (i3_shmlog_header *)logbuffer;
|
||||
|
||||
@ -28,7 +70,7 @@ OpenBSD lacks pthread_condattr_setpshared()
|
||||
|
||||
logwalk = logbuffer + sizeof(i3_shmlog_header);
|
||||
loglastwrap = logbuffer + logbuffer_size;
|
||||
@@ -273,8 +277,10 @@ static void vlog(const bool print, const char *fmt, va
|
||||
@@ -273,8 +280,10 @@ static void vlog(const bool print, const char *fmt, va
|
||||
|
||||
store_log_markers();
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
$OpenBSD: patch-src_main_c,v 1.15 2015/12/21 10:16:03 tb Exp $
|
||||
$OpenBSD: patch-src_main_c,v 1.16 2016/01/18 10:04:29 tb Exp $
|
||||
|
||||
Bugfix: add keymap fall back (_XKB_RULES_NAMES, then defaults)
|
||||
|
||||
@ -9,7 +9,7 @@ add pledge:
|
||||
"proc exec" for executing programs
|
||||
|
||||
--- src/main.c.orig Wed Sep 30 08:55:10 2015
|
||||
+++ src/main.c Sun Dec 20 14:58:54 2015
|
||||
+++ src/main.c Sun Jan 17 17:55:53 2016
|
||||
@@ -87,6 +87,7 @@ struct ws_assignments_head ws_assignments = TAILQ_HEAD
|
||||
|
||||
/* We hope that those are supported and set them to true */
|
||||
@ -26,16 +26,14 @@ add pledge:
|
||||
if (!extreply->present) {
|
||||
DLOG("xkb is not present on this server\n");
|
||||
} else {
|
||||
@@ -784,6 +786,13 @@ int main(int argc, char *argv[]) {
|
||||
@@ -784,6 +786,11 @@ int main(int argc, char *argv[]) {
|
||||
xcb_free_gc(conn, gc);
|
||||
xcb_free_pixmap(conn, pixmap);
|
||||
}
|
||||
+
|
||||
+#if defined(__OpenBSD__)
|
||||
+ /* can't use pledge if shm* calls are used */
|
||||
+ if (shmlog_size == 0)
|
||||
+ if (pledge("stdio rpath wpath cpath proc exec unix", NULL) == -1)
|
||||
+ err(EXIT_FAILURE, "pledge");
|
||||
+ if (pledge("stdio rpath wpath cpath proc exec unix", NULL) == -1)
|
||||
+ err(EXIT_FAILURE, "pledge");
|
||||
+#endif
|
||||
|
||||
struct sigaction action;
|
||||
|
Loading…
Reference in New Issue
Block a user