* child.c: Getting input for the statusline
*
*/
+#include "common.h"
+
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <yajl/yajl_gen.h>
#include <paths.h>
-#include "common.h"
-
/* Global variables for child_*() */
i3bar_child child;
FREE(first->name);
FREE(first->instance);
FREE(first->min_width_str);
+ FREE(first->background);
+ FREE(first->border);
}
TAILQ_REMOVE(head, first, blocks);
char *message;
va_list args;
va_start(args, format);
- (void)vasprintf(&message, format, args);
+ if (vasprintf(&message, format, args) == -1) {
+ return;
+ }
struct status_block *err_block = scalloc(1, sizeof(struct status_block));
err_block->full_text = i3string_from_utf8("Error: ");
sasprintf(&(ctx->block.color), "%.*s", len, val);
return 1;
}
+ if (strcasecmp(ctx->last_map_key, "background") == 0) {
+ sasprintf(&(ctx->block.background), "%.*s", len, val);
+ return 1;
+ }
+ if (strcasecmp(ctx->last_map_key, "border") == 0) {
+ sasprintf(&(ctx->block.border), "%.*s", len, val);
+ return 1;
+ }
if (strcasecmp(ctx->last_map_key, "markup") == 0) {
ctx->block.pango_markup = (len == strlen("pango") && !strncasecmp((const char *)val, "pango", strlen("pango")));
return 1;
return 1;
}
if (strcasecmp(ctx->last_map_key, "min_width") == 0) {
- char *copy = (char *)smalloc(len + 1);
- strncpy(copy, (const char *)val, len);
- copy[len] = 0;
- ctx->block.min_width_str = copy;
+ sasprintf(&(ctx->block.min_width_str), "%.*s", len, val);
return 1;
}
if (strcasecmp(ctx->last_map_key, "name") == 0) {
- char *copy = (char *)smalloc(len + 1);
- strncpy(copy, (const char *)val, len);
- copy[len] = 0;
- ctx->block.name = copy;
+ sasprintf(&(ctx->block.name), "%.*s", len, val);
return 1;
}
if (strcasecmp(ctx->last_map_key, "instance") == 0) {
- char *copy = (char *)smalloc(len + 1);
- strncpy(copy, (const char *)val, len);
- copy[len] = 0;
- ctx->block.instance = copy;
+ sasprintf(&(ctx->block.instance), "%.*s", len, val);
return 1;
}
I3STRING_FREE(first->full_text);
/* Remove the trailing newline and terminate the string at the same
* time. */
- if (buffer[length - 1] == '\n' || buffer[length - 1] == '\r')
+ if (buffer[length - 1] == '\n' || buffer[length - 1] == '\r') {
buffer[length - 1] = '\0';
- else
+ } else {
buffer[length] = '\0';
- first->full_text = i3string_from_markup(buffer);
+ }
+
+ first->full_text = i3string_from_utf8(buffer);
}
static bool read_json_input(unsigned char *input, int length) {