sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 0d51f62224a3c2e65894f1725076a588b172447c
parent d2e2b04bfd505561981c9137bfc493bb8effe63e
Author: taiyu <taiyu.len@gmail.com>
Date:   Fri, 18 Sep 2015 07:23:04 -0700

merge + no c_extensions

Diffstat:
MCMakeLists.txt | 1+
Minclude/stringop.h | 7++++++-
Msway/commands.c | 4+++-
Msway/container.c | 2++
Msway/log.c | 4+---
Msway/main.c | 2++
Msway/stringop.c | 29+++++++++++++++++++++--------
Msway/workspace.c | 1+
8 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 2.8.5) project(sway C) set(CMAKE_C_FLAGS "-g") set(CMAKE_C_STANDARD 99) +SET(CMAKE_C_EXTENSIONS OFF) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/") add_definitions("-Wall -Wextra -Wno-unused-parameter") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake) diff --git a/include/stringop.h b/include/stringop.h @@ -2,8 +2,13 @@ #define _SWAY_STRINGOP_H #include "list.h" +#if !HAVE_DECL_SETENV +// Not sure why we need to provide this +extern int setenv(const char *, const char *, int); +#endif + // array of whitespace characters to use for delims -extern const char *whitespace; +extern const char whitespace[]; char *strip_whitespace(char *str); char *strip_comments(char *str); diff --git a/sway/commands.c b/sway/commands.c @@ -5,8 +5,10 @@ #include <stdlib.h> #include <errno.h> #include <string.h> +#include <strings.h> #include <unistd.h> #include <ctype.h> +#include <sys/types.h> #include "stringop.h" #include "layout.h" #include "focus.h" @@ -193,7 +195,7 @@ static enum cmd_status cmd_exec_always(int argc, char **argv) { sway_log(L_DEBUG, "Executing %s", cmd); pid_t pid; - if ((pid = vfork()) == 0) { + if ((pid = fork()) == 0) { execv("/bin/sh", args); _exit(-1); } else if (pid < 0) { diff --git a/sway/container.c b/sway/container.c @@ -1,7 +1,9 @@ #include <stdlib.h> #include <stdbool.h> #include <strings.h> +#include <string.h> #include "config.h" +#include "stringop.h" #include "container.h" #include "workspace.h" #include "focus.h" diff --git a/sway/log.c b/sway/log.c @@ -80,9 +80,7 @@ void sway_log_errno(log_importance_t verbosity, char* format, ...) { va_end(args); fprintf(stderr, ": "); - char error[256]; - strerror_r(errno, error, sizeof(error)); - fprintf(stderr, "%s", error); + fprintf(stderr, "%s", strerror(errno)); if (colored && isatty(STDERR_FILENO)) { fprintf(stderr, "\x1B[0m"); diff --git a/sway/main.c b/sway/main.c @@ -3,9 +3,11 @@ #include <stdbool.h> #include <wlc/wlc.h> #include <sys/wait.h> +#include <sys/types.h> #include <signal.h> #include <getopt.h> #include "layout.h" +#include "stringop.h" #include "config.h" #include "log.h" #include "readline.h" diff --git a/sway/stringop.c b/sway/stringop.c @@ -1,5 +1,6 @@ #include <stdlib.h> #include <stdio.h> +#include <string.h> #include <strings.h> #include <ctype.h> #include "stringop.h" @@ -7,7 +8,7 @@ #include "string.h" #include "list.h" -const char *whitespace = " \f\n\r\t\v"; +const char whitespace[] = " \f\n\r\t\v"; /* Note: This returns 8 characters for trimmed_start per tab character. */ char *strip_whitespace(char *_str) { @@ -313,13 +314,16 @@ char *join_list(list_t *list, char *separator) { } char *cmdsep(char **stringp, const char *delim) { - char *head = strsep(stringp, delim); - // But skip over trailing delims. '3 tokens here' -> '3' 'tokens here' - if (*stringp) { - *stringp += strspn(*stringp, delim); - // If skiping over delims brings us to the end of string, set to NULL - if (!**stringp) *stringp = NULL; - } + // skip over leading delims + char *head = *stringp + strspn(*stringp, delim); + // Find end token + char *tail = *stringp += strcspn(*stringp, delim); + // Set stringp to begining of next token + *stringp += strspn(*stringp, delim); + // Set stringp to null if last token + if (!**stringp) *stringp = NULL; + // Nullify end of first token + *tail = 0; return head; } @@ -358,3 +362,12 @@ char *argsep(char **stringp, const char *delim) { found: return start; } + +char *strdup(const char *str) { + char *dup = malloc(strlen(str) + 1); + if (dup) { + strcpy(dup, str); + } + return dup; +} + diff --git a/sway/workspace.c b/sway/workspace.c @@ -2,6 +2,7 @@ #include <stdbool.h> #include <wlc/wlc.h> #include <string.h> +#include <strings.h> #include "workspace.h" #include "layout.h" #include "list.h"