* vim:ts=4:sw=4:expandtab
*
* i3bar - an xcb-based status- and ws-bar for i3
+ * © 2010-2011 Axel Wagner and contributors (see also: LICENSE)
*
- * © 2010-2011 Axel Wagner and contributors
- *
- * See file LICNSE for license information
- *
- * src/workspaces.c: Maintaining the workspace-lists
+ * workspaces.c: Maintaining the workspace-lists
*
*/
#include <string.h>
if (!strcmp(params->cur_key, "name")) {
/* Save the name */
- params->workspaces_walk->name = malloc(sizeof(const unsigned char) * (len + 1));
+ params->workspaces_walk->name = smalloc(sizeof(const unsigned char) * (len + 1));
strncpy(params->workspaces_walk->name, (const char*) val, len);
params->workspaces_walk->name[len] = '\0';
/* Convert the name to ucs2, save its length in glyphs and calculate its rendered width */
- int ucs2_len;
+ size_t ucs2_len;
xcb_char2b_t *ucs2_name = (xcb_char2b_t*) convert_utf8_to_ucs2(params->workspaces_walk->name, &ucs2_len);
params->workspaces_walk->ucs2_name = ucs2_name;
params->workspaces_walk->name_glyphs = ucs2_len;
params->workspaces_walk->name_width =
- predict_text_extents(params->workspaces_walk->ucs2_name,
- params->workspaces_walk->name_glyphs);
+ predict_text_width((char *)params->workspaces_walk->ucs2_name,
+ params->workspaces_walk->name_glyphs, true);
DLOG("Got Workspace %s, name_width: %d, glyphs: %d\n",
params->workspaces_walk->name,
if (!strcmp(params->cur_key, "output")) {
/* We add the ws to the TAILQ of the output, it belongs to */
- output_name = malloc(sizeof(const unsigned char) * (len + 1));
+ output_name = smalloc(sizeof(const unsigned char) * (len + 1));
strncpy(output_name, (const char*) val, len);
output_name[len] = '\0';
- params->workspaces_walk->output = get_output_by_name(output_name);
+ i3_output *target = get_output_by_name(output_name);
+ if (target) {
+ params->workspaces_walk->output = target;
- TAILQ_INSERT_TAIL(params->workspaces_walk->output->workspaces,
- params->workspaces_walk,
- tailq);
+ TAILQ_INSERT_TAIL(params->workspaces_walk->output->workspaces,
+ params->workspaces_walk,
+ tailq);
+ }
FREE(output_name);
return 1;
i3_ws *new_workspace = NULL;
if (params->cur_key == NULL) {
- new_workspace = malloc(sizeof(i3_ws));
+ new_workspace = smalloc(sizeof(i3_ws));
new_workspace->num = -1;
new_workspace->name = NULL;
new_workspace->visible = 0;
struct workspaces_json_params *params = (struct workspaces_json_params*) params_;
FREE(params->cur_key);
- params->cur_key = malloc(sizeof(unsigned char) * (keyLen + 1));
- if (params->cur_key == NULL) {
- ELOG("Could not allocate memory: %s\n", strerror(errno));
- exit(EXIT_FAILURE);
- }
+ params->cur_key = smalloc(sizeof(unsigned char) * (keyLen + 1));
strncpy(params->cur_key, (const char*) keyVal, keyLen);
params->cur_key[keyLen] = '\0';