move sstrdup, scalloc, smalloc, srealloc to libi3, improve error messages
This commit is contained in:
parent
8f5dd749c3
commit
501dc36b98
@ -14,4 +14,32 @@
|
|||||||
*/
|
*/
|
||||||
char *socket_path_from_x11();
|
char *socket_path_from_x11();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Safe-wrapper around malloc which exits if malloc returns NULL (meaning that
|
||||||
|
* there is no more memory available)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void *smalloc(size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Safe-wrapper around calloc which exits if malloc returns NULL (meaning that
|
||||||
|
* there is no more memory available)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void *scalloc(size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Safe-wrapper around realloc which exits if realloc returns NULL (meaning
|
||||||
|
* that there is no more memory available).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void *srealloc(void *ptr, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Safe-wrapper around strdup which exits if malloc returns NULL (meaning that
|
||||||
|
* there is no more memory available)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
char *sstrdup(const char *str);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -66,34 +66,6 @@ Rect rect_add(Rect a, Rect b);
|
|||||||
*/
|
*/
|
||||||
bool update_if_necessary(uint32_t *destination, const uint32_t new_value);
|
bool update_if_necessary(uint32_t *destination, const uint32_t new_value);
|
||||||
|
|
||||||
/**
|
|
||||||
* Safe-wrapper around malloc which exits if malloc returns NULL (meaning that
|
|
||||||
* there is no more memory available)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void *smalloc(size_t size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Safe-wrapper around calloc which exits if malloc returns NULL (meaning that
|
|
||||||
* there is no more memory available)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void *scalloc(size_t size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Safe-wrapper around realloc which exits if realloc returns NULL (meaning
|
|
||||||
* that there is no more memory available).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void *srealloc(void *ptr, size_t size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Safe-wrapper around strdup which exits if malloc returns NULL (meaning that
|
|
||||||
* there is no more memory available)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
char *sstrdup(const char *str);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the given application by passing it through a shell. We use double
|
* Starts the given application by passing it through a shell. We use double
|
||||||
* fork to avoid zombie processes. As the started application’s parent exits
|
* fork to avoid zombie processes. As the started application’s parent exits
|
||||||
|
47
libi3/safewrappers.c
Normal file
47
libi3/safewrappers.c
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* vim:ts=4:sw=4:expandtab
|
||||||
|
*
|
||||||
|
* i3 - an improved dynamic tiling window manager
|
||||||
|
*
|
||||||
|
* © 2009-2011 Michael Stapelberg and contributors
|
||||||
|
*
|
||||||
|
* See file LICENSE for license information.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <err.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The s* functions (safe) are wrappers around malloc, strdup, …, which exits if one of
|
||||||
|
* the called functions returns NULL, meaning that there is no more memory available
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void *smalloc(size_t size) {
|
||||||
|
void *result = malloc(size);
|
||||||
|
if (result == NULL)
|
||||||
|
err(EXIT_FAILURE, "malloc(%zd)", size);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *scalloc(size_t size) {
|
||||||
|
void *result = calloc(size, 1);
|
||||||
|
if (result == NULL)
|
||||||
|
err(EXIT_FAILURE, "calloc(%zd)", size);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *srealloc(void *ptr, size_t size) {
|
||||||
|
void *result = realloc(ptr, size);
|
||||||
|
if (result == NULL && size > 0)
|
||||||
|
err(EXIT_FAILURE, "realloc(%zd)", size);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sstrdup(const char *str) {
|
||||||
|
char *result = strdup(str);
|
||||||
|
if (result == NULL)
|
||||||
|
err(EXIT_FAILURE, "strdup()");
|
||||||
|
return result;
|
||||||
|
}
|
@ -17,6 +17,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "libi3.h"
|
||||||
|
|
||||||
#include "cfgparse.tab.h"
|
#include "cfgparse.tab.h"
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "libi3.h"
|
||||||
|
|
||||||
int cmdyycolumn = 1;
|
int cmdyycolumn = 1;
|
||||||
|
|
||||||
|
30
src/util.c
30
src/util.c
@ -58,36 +58,6 @@ bool update_if_necessary(uint32_t *destination, const uint32_t new_value) {
|
|||||||
return ((*destination = new_value) != old_value);
|
return ((*destination = new_value) != old_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* The s* functions (safe) are wrappers around malloc, strdup, …, which exits if one of
|
|
||||||
* the called functions returns NULL, meaning that there is no more memory available
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void *smalloc(size_t size) {
|
|
||||||
void *result = malloc(size);
|
|
||||||
exit_if_null(result, "Error: out of memory (malloc(%zd))\n", size);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *scalloc(size_t size) {
|
|
||||||
void *result = calloc(size, 1);
|
|
||||||
exit_if_null(result, "Error: out of memory (calloc(%zd))\n", size);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *srealloc(void *ptr, size_t size) {
|
|
||||||
void *result = realloc(ptr, size);
|
|
||||||
if (result == NULL && size > 0)
|
|
||||||
die("Error: out memory (realloc(%zd))\n", size);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *sstrdup(const char *str) {
|
|
||||||
char *result = strdup(str);
|
|
||||||
exit_if_null(result, "Error: out of memory (strdup())\n");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Starts the given application by passing it through a shell. We use double fork
|
* Starts the given application by passing it through a shell. We use double fork
|
||||||
* to avoid zombie processes. As the started application’s parent exits (immediately),
|
* to avoid zombie processes. As the started application’s parent exits (immediately),
|
||||||
|
Loading…
Reference in New Issue
Block a user