Merge pull request #2161 from botovq/next

Add pledge support for OpenBSD
This commit is contained in:
Michael Stapelberg 2016-01-17 13:21:56 -08:00
commit a761e018d5
4 changed files with 26 additions and 9 deletions

View File

@ -119,6 +119,10 @@ static yajl_callbacks reply_callbacks = {
}; };
int main(int argc, char *argv[]) { 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"); char *env_socket_path = getenv("I3SOCK");
if (env_socket_path) if (env_socket_path)
socket_path = sstrdup(env_socket_path); socket_path = sstrdup(env_socket_path);

View File

@ -470,6 +470,11 @@ int main(int argc, char *argv[]) {
font = load_font(pattern, true); font = load_font(pattern, true);
set_font(&font); 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_rectangle_t win_pos = get_window_position();
xcb_cursor_t cursor; xcb_cursor_t cursor;

View File

@ -58,6 +58,8 @@ static char *loglastwrap;
static int logbuffer_size; static int logbuffer_size;
/* File descriptor for shm_open. */ /* File descriptor for shm_open. */
static int logbuffer_shm; 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 * 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 /* 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 * 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. */ * 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. * 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 * At the moment (2011-12-10), no testcase leads to an i3 log
* of more than ~ 600 KiB. */ * 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); logbuffer_size = min(physical_mem_bytes * 0.01, shmlog_size);
#if defined(__FreeBSD__) #if defined(__FreeBSD__)
sasprintf(&shmlogname, "/tmp/i3-log-%d", getpid()); sasprintf(&shmlogname, "/tmp/i3-log-%d", getpid());

View File

@ -802,6 +802,11 @@ int main(int argc, char *argv[]) {
xcb_free_pixmap(conn, pixmap); 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; struct sigaction action;
action.sa_sigaction = handle_signal; action.sa_sigaction = handle_signal;