Proper strings, drop non POSIX strdup

This commit is contained in:
Bastien Dejean 2012-09-10 13:47:51 +02:00
parent f96be0b22e
commit aa1c50417d
8 changed files with 37 additions and 49 deletions

View file

@ -6,6 +6,7 @@
#define MIN(A, B) ((A) < (B) ? (A) : (B)) #define MIN(A, B) ((A) < (B) ? (A) : (B))
#define BOOLSTR(A) ((A) ? "true" : "false") #define BOOLSTR(A) ((A) ? "true" : "false")
#define MAXLEN 256
#define MOVE_RESIZE_MASK XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT #define MOVE_RESIZE_MASK XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT
#if 1 #if 1

View file

@ -1,5 +1,3 @@
#define _BSD_SOURCE
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <lua.h> #include <lua.h>
@ -24,19 +22,15 @@ int has_table(lua_State *L, char *name)
return result; return result;
} }
char *string_expr(lua_State *L, char *expr, char* fallback) void string_expr(lua_State *L, char *dest, char *expr, const char* fallback)
{ {
char *result;
if (eval_expr(L, expr) == 0) { if (eval_expr(L, expr) == 0) {
if (lua_isstring(L, -1)) if (lua_isstring(L, -1))
result = strdup(lua_tostring(L, -1)); strncpy(dest, lua_tostring(L, -1), sizeof(dest));
else if (fallback != NULL) else if (fallback != NULL)
result = strdup(fallback); strncpy(dest, fallback, sizeof(dest));
else
result = NULL;
lua_pop(L, 1); lua_pop(L, 1);
} }
return result;
} }
double double_expr(lua_State *L, char *expr, double fallback) double double_expr(lua_State *L, char *expr, double fallback)

View file

@ -7,7 +7,7 @@
int eval_expr(lua_State *, char *); int eval_expr(lua_State *, char *);
int has_table(lua_State *, char *); int has_table(lua_State *, char *);
char *string_expr(lua_State *, char *, char *); void string_expr(lua_State *, char *, char *, const char *);
double double_expr(lua_State *, char *, double); double double_expr(lua_State *, char *, double);
int int_expr(lua_State *, char *, int); int int_expr(lua_State *, char *, int);
bool bool_expr(lua_State *, char *, bool); bool bool_expr(lua_State *, char *, bool);

View file

@ -1,5 +1,3 @@
#define _BSD_SOURCE
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include "helpers.h" #include "helpers.h"
@ -101,32 +99,25 @@ void set_setting(char *name, char *value)
} else if (strcmp(name, "bottom_padding") == 0) { } else if (strcmp(name, "bottom_padding") == 0) {
sscanf(value, "%i", &bottom_padding); sscanf(value, "%i", &bottom_padding);
} else if (strcmp(name, "normal_border_color") == 0) { } else if (strcmp(name, "normal_border_color") == 0) {
free(normal_border_color); strncpy(normal_border_color, value, sizeof(normal_border_color));
normal_border_color = strdup(value);
normal_border_color_pxl = get_color(normal_border_color); normal_border_color_pxl = get_color(normal_border_color);
} else if (strcmp(name, "active_border_color") == 0) { } else if (strcmp(name, "active_border_color") == 0) {
free(active_border_color); strncpy(active_border_color, value, sizeof(active_border_color));
active_border_color = strdup(value);
active_border_color_pxl = get_color(active_border_color); active_border_color_pxl = get_color(active_border_color);
} else if (strcmp(name, "inner_border_color") == 0) { } else if (strcmp(name, "inner_border_color") == 0) {
free(inner_border_color); strncpy(inner_border_color, value, sizeof(inner_border_color));
inner_border_color = strdup(value);
inner_border_color_pxl = get_color(inner_border_color); inner_border_color_pxl = get_color(inner_border_color);
} else if (strcmp(name, "outer_border_color") == 0) { } else if (strcmp(name, "outer_border_color") == 0) {
free(outer_border_color); strncpy(outer_border_color, value, sizeof(outer_border_color));
outer_border_color = strdup(value);
outer_border_color_pxl = get_color(outer_border_color); outer_border_color_pxl = get_color(outer_border_color);
} else if (strcmp(name, "presel_border_color") == 0) { } else if (strcmp(name, "presel_border_color") == 0) {
free(presel_border_color); strncpy(presel_border_color, value, sizeof(presel_border_color));
presel_border_color = strdup(value);
presel_border_color_pxl = get_color(presel_border_color); presel_border_color_pxl = get_color(presel_border_color);
} else if (strcmp(name, "locked_border_color") == 0) { } else if (strcmp(name, "locked_border_color") == 0) {
free(locked_border_color); strncpy(locked_border_color, value, sizeof(locked_border_color));
locked_border_color = strdup(value);
locked_border_color_pxl = get_color(locked_border_color); locked_border_color_pxl = get_color(locked_border_color);
} else if (strcmp(name, "wm_name") == 0) { } else if (strcmp(name, "wm_name") == 0) {
free(wm_name); strncpy(wm_name, value, sizeof(wm_name));
wm_name = strdup(value);
} else if (strcmp(name, "adaptive_window_border") == 0) { } else if (strcmp(name, "adaptive_window_border") == 0) {
if (is_bool(value)) if (is_bool(value))
adaptive_window_border = parse_bool(value); adaptive_window_border = parse_bool(value);

View file

@ -1,5 +1,3 @@
#define _BSD_SOURCE
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -33,12 +31,12 @@ void load_settings(void)
void apply_settings(lua_State *L) void apply_settings(lua_State *L)
{ {
normal_border_color = string_expr(L, "normal_border_color", NORMAL_BORDER_COLOR); string_expr(L, normal_border_color, "normal_border_color", NORMAL_BORDER_COLOR);
active_border_color = string_expr(L, "active_border_color", ACTIVE_BORDER_COLOR); string_expr(L, active_border_color, "active_border_color", ACTIVE_BORDER_COLOR);
inner_border_color = string_expr(L, "inner_border_color", INNER_BORDER_COLOR); string_expr(L, inner_border_color, "inner_border_color", INNER_BORDER_COLOR);
outer_border_color = string_expr(L, "outer_border_color", OUTER_BORDER_COLOR); string_expr(L, outer_border_color, "outer_border_color", OUTER_BORDER_COLOR);
presel_border_color = string_expr(L, "presel_border_color", PRESEL_BORDER_COLOR); string_expr(L, presel_border_color, "presel_border_color", PRESEL_BORDER_COLOR);
locked_border_color = string_expr(L, "locked_border_color", LOCKED_BORDER_COLOR); string_expr(L, locked_border_color, "locked_border_color", LOCKED_BORDER_COLOR);
normal_border_color_pxl = get_color(normal_border_color); normal_border_color_pxl = get_color(normal_border_color);
active_border_color_pxl = get_color(active_border_color); active_border_color_pxl = get_color(active_border_color);
@ -47,7 +45,7 @@ void apply_settings(lua_State *L)
presel_border_color_pxl = get_color(presel_border_color); presel_border_color_pxl = get_color(presel_border_color);
locked_border_color_pxl = get_color(locked_border_color); locked_border_color_pxl = get_color(locked_border_color);
wm_name = string_expr(L, "wm_name", WM_NAME); string_expr(L, wm_name, "wm_name", WM_NAME);
adaptive_window_border = bool_expr(L, "adaptive_window_border", ADAPTIVE_WINDOW_BORDER); adaptive_window_border = bool_expr(L, "adaptive_window_border", ADAPTIVE_WINDOW_BORDER);
adaptive_window_gap = bool_expr(L, "adaptive_window_gap", ADAPTIVE_WINDOW_GAP); adaptive_window_gap = bool_expr(L, "adaptive_window_gap", ADAPTIVE_WINDOW_GAP);

View file

@ -32,14 +32,14 @@
#define PRESEL_BORDER_COLOR "#331122" #define PRESEL_BORDER_COLOR "#331122"
#define LOCKED_BORDER_COLOR "#331122" #define LOCKED_BORDER_COLOR "#331122"
char *normal_border_color; char normal_border_color[MAXLEN];
char *active_border_color; char active_border_color[MAXLEN];
char *inner_border_color; char inner_border_color[MAXLEN];
char *outer_border_color; char outer_border_color[MAXLEN];
char *presel_border_color; char presel_border_color[MAXLEN];
char *locked_border_color; char locked_border_color[MAXLEN];
char *wm_name; char wm_name[MAXLEN];
uint32_t normal_border_color_pxl; uint32_t normal_border_color_pxl;
uint32_t active_border_color_pxl; uint32_t active_border_color_pxl;

15
types.c
View file

@ -1,5 +1,3 @@
#define _BSD_SOURCE
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <xcb/xcb.h> #include <xcb/xcb.h>
@ -20,7 +18,7 @@ node_t *make_node(void)
desktop_t *make_desktop(void) desktop_t *make_desktop(void)
{ {
desktop_t *d = malloc(sizeof(desktop_t)); desktop_t *d = malloc(sizeof(desktop_t));
d->name = strdup(DESK_NAME); strncpy(d->name, DESK_NAME, sizeof(d->name));
d->layout = LAYOUT_TILED; d->layout = LAYOUT_TILED;
d->prev = d->next = NULL; d->prev = d->next = NULL;
d->root = d->focus = d->last_focus = NULL; d->root = d->focus = d->last_focus = NULL;
@ -31,8 +29,13 @@ client_t *make_client(xcb_window_t win)
{ {
client_t *c = malloc(sizeof(client_t)); client_t *c = malloc(sizeof(client_t));
c->window = win; c->window = win;
c->floating = false; c->floating = c->fullscreen = c->locked = false;
c->fullscreen = false;
c->locked = false;
return c; return c;
} }
rule_t *make_rule(void)
{
rule_t *r = malloc(sizeof(rule_t));
r->floating = r->fullscreen = r->locked = r->centered = false;
return r;
}

View file

@ -78,7 +78,7 @@ struct node_t {
typedef struct desktop_t desktop_t; typedef struct desktop_t desktop_t;
struct desktop_t { struct desktop_t {
char *name; char name[MAXLEN];
layout_t layout; layout_t layout;
node_t *root; node_t *root;
node_t *focus; node_t *focus;
@ -95,6 +95,7 @@ struct rule_t {
bool floating; bool floating;
bool fullscreen; bool fullscreen;
bool locked; bool locked;
bool centered;
rule_t *next; rule_t *next;
}; };