update indenting of src/util.c

This commit is contained in:
Michael Stapelberg 2010-11-28 14:14:34 +01:00
parent 32cc7134aa
commit f7fff5cec1
1 changed files with 123 additions and 123 deletions

View File

@ -1,9 +1,9 @@
/* /*
* vim:ts=8:expandtab * vim:ts=4:sw=4:expandtab
* *
* i3 - an improved dynamic tiling window manager * i3 - an improved dynamic tiling window manager
* *
* © 2009 Michael Stapelberg and contributors * © 2009-2010 Michael Stapelberg and contributors
* *
* See file LICENSE for license information. * See file LICENSE for license information.
* *
@ -24,25 +24,25 @@
static iconv_t conversion_descriptor = 0; static iconv_t conversion_descriptor = 0;
int min(int a, int b) { int min(int a, int b) {
return (a < b ? a : b); return (a < b ? a : b);
} }
int max(int a, int b) { int max(int a, int b) {
return (a > b ? a : b); return (a > b ? a : b);
} }
bool rect_contains(Rect rect, uint32_t x, uint32_t y) { bool rect_contains(Rect rect, uint32_t x, uint32_t y) {
return (x >= rect.x && return (x >= rect.x &&
x <= (rect.x + rect.width) && x <= (rect.x + rect.width) &&
y >= rect.y && y >= rect.y &&
y <= (rect.y + rect.height)); y <= (rect.y + rect.height));
} }
Rect rect_add(Rect a, Rect b) { Rect rect_add(Rect a, Rect b) {
return (Rect){a.x + b.x, return (Rect){a.x + b.x,
a.y + b.y, a.y + b.y,
a.width + b.width, a.width + b.width,
a.height + b.height}; a.height + b.height};
} }
/* /*
@ -51,9 +51,9 @@ 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) {
uint32_t old_value = *destination; uint32_t old_value = *destination;
return ((*destination = new_value) != old_value); return ((*destination = new_value) != old_value);
} }
/* /*
@ -62,27 +62,27 @@ bool update_if_necessary(uint32_t *destination, const uint32_t new_value) {
* *
*/ */
void *smalloc(size_t size) { void *smalloc(size_t size) {
void *result = malloc(size); void *result = malloc(size);
exit_if_null(result, "Error: out of memory (malloc(%zd))\n", size); exit_if_null(result, "Error: out of memory (malloc(%zd))\n", size);
return result; return result;
} }
void *scalloc(size_t size) { void *scalloc(size_t size) {
void *result = calloc(size, 1); void *result = calloc(size, 1);
exit_if_null(result, "Error: out of memory (calloc(%zd))\n", size); exit_if_null(result, "Error: out of memory (calloc(%zd))\n", size);
return result; return result;
} }
void *srealloc(void *ptr, size_t size) { void *srealloc(void *ptr, size_t size) {
void *result = realloc(ptr, size); void *result = realloc(ptr, size);
exit_if_null(result, "Error: out memory (realloc(%zd))\n", size); exit_if_null(result, "Error: out memory (realloc(%zd))\n", size);
return result; return result;
} }
char *sstrdup(const char *str) { char *sstrdup(const char *str) {
char *result = strdup(str); char *result = strdup(str);
exit_if_null(result, "Error: out of memory (strdup())\n"); exit_if_null(result, "Error: out of memory (strdup())\n");
return result; return result;
} }
/* /*
@ -96,25 +96,25 @@ char *sstrdup(const char *str) {
* *
*/ */
void start_application(const char *command) { void start_application(const char *command) {
LOG("executing: %s\n", command); LOG("executing: %s\n", command);
if (fork() == 0) {
/* Child process */
setsid();
if (fork() == 0) { if (fork() == 0) {
/* Child process */ /* Stores the path of the shell */
setsid(); static const char *shell = NULL;
if (fork() == 0) {
/* Stores the path of the shell */
static const char *shell = NULL;
if (shell == NULL) if (shell == NULL)
if ((shell = getenv("SHELL")) == NULL) if ((shell = getenv("SHELL")) == NULL)
shell = "/bin/sh"; shell = "/bin/sh";
/* This is the child */ /* This is the child */
execl(shell, shell, "-c", command, (void*)NULL); execl(shell, shell, "-c", command, (void*)NULL);
/* not reached */ /* not reached */
}
exit(0);
} }
wait(0); exit(0);
}
wait(0);
} }
/* /*
@ -123,12 +123,12 @@ void start_application(const char *command) {
* *
*/ */
void check_error(xcb_connection_t *conn, xcb_void_cookie_t cookie, char *err_message) { void check_error(xcb_connection_t *conn, xcb_void_cookie_t cookie, char *err_message) {
xcb_generic_error_t *error = xcb_request_check(conn, cookie); xcb_generic_error_t *error = xcb_request_check(conn, cookie);
if (error != NULL) { if (error != NULL) {
fprintf(stderr, "ERROR: %s (X error %d)\n", err_message , error->error_code); fprintf(stderr, "ERROR: %s (X error %d)\n", err_message , error->error_code);
xcb_disconnect(conn); xcb_disconnect(conn);
exit(-1); exit(-1);
} }
} }
/* /*
@ -139,40 +139,40 @@ void check_error(xcb_connection_t *conn, xcb_void_cookie_t cookie, char *err_mes
* *
*/ */
char *convert_utf8_to_ucs2(char *input, int *real_strlen) { char *convert_utf8_to_ucs2(char *input, int *real_strlen) {
size_t input_size = strlen(input) + 1; size_t input_size = strlen(input) + 1;
/* UCS-2 consumes exactly two bytes for each glyph */ /* UCS-2 consumes exactly two bytes for each glyph */
int buffer_size = input_size * 2; int buffer_size = input_size * 2;
char *buffer = smalloc(buffer_size); char *buffer = smalloc(buffer_size);
size_t output_size = buffer_size; size_t output_size = buffer_size;
/* We need to use an additional pointer, because iconv() modifies it */ /* We need to use an additional pointer, because iconv() modifies it */
char *output = buffer; char *output = buffer;
/* We convert the input into UCS-2 big endian */ /* We convert the input into UCS-2 big endian */
if (conversion_descriptor == 0) {
conversion_descriptor = iconv_open("UCS-2BE", "UTF-8");
if (conversion_descriptor == 0) { if (conversion_descriptor == 0) {
conversion_descriptor = iconv_open("UCS-2BE", "UTF-8"); fprintf(stderr, "error opening the conversion context\n");
if (conversion_descriptor == 0) { exit(1);
fprintf(stderr, "error opening the conversion context\n");
exit(1);
}
} }
}
/* Get the conversion descriptor back to original state */ /* Get the conversion descriptor back to original state */
iconv(conversion_descriptor, NULL, NULL, NULL, NULL); iconv(conversion_descriptor, NULL, NULL, NULL, NULL);
/* Convert our text */
int rc = iconv(conversion_descriptor, (void*)&input, &input_size, &output, &output_size);
if (rc == (size_t)-1) {
perror("Converting to UCS-2 failed");
if (real_strlen != NULL)
*real_strlen = 0;
return NULL;
}
/* Convert our text */
int rc = iconv(conversion_descriptor, (void*)&input, &input_size, &output, &output_size);
if (rc == (size_t)-1) {
perror("Converting to UCS-2 failed");
if (real_strlen != NULL) if (real_strlen != NULL)
*real_strlen = ((buffer_size - output_size) / 2) - 1; *real_strlen = 0;
return NULL;
}
return buffer; if (real_strlen != NULL)
*real_strlen = ((buffer_size - output_size) / 2) - 1;
return buffer;
} }
#if 0 #if 0
@ -348,62 +348,62 @@ done:
* *
*/ */
static char **append_argument(char **original, char *argument) { static char **append_argument(char **original, char *argument) {
int num_args; int num_args;
for (num_args = 0; original[num_args] != NULL; num_args++) { for (num_args = 0; original[num_args] != NULL; num_args++) {
DLOG("original argument: \"%s\"\n", original[num_args]); DLOG("original argument: \"%s\"\n", original[num_args]);
/* If the argument is already present we return the original pointer */ /* If the argument is already present we return the original pointer */
if (strcmp(original[num_args], argument) == 0) if (strcmp(original[num_args], argument) == 0)
return original; return original;
} }
/* Copy the original array */ /* Copy the original array */
char **result = smalloc((num_args+2) * sizeof(char*)); char **result = smalloc((num_args+2) * sizeof(char*));
memcpy(result, original, num_args * sizeof(char*)); memcpy(result, original, num_args * sizeof(char*));
result[num_args] = argument; result[num_args] = argument;
result[num_args+1] = NULL; result[num_args+1] = NULL;
return result; return result;
} }
#define y(x, ...) yajl_gen_ ## x (gen, ##__VA_ARGS__) #define y(x, ...) yajl_gen_ ## x (gen, ##__VA_ARGS__)
#define ystr(str) yajl_gen_string(gen, (unsigned char*)str, strlen(str)) #define ystr(str) yajl_gen_string(gen, (unsigned char*)str, strlen(str))
void store_restart_layout() { void store_restart_layout() {
yajl_gen gen = yajl_gen_alloc(NULL, NULL); yajl_gen gen = yajl_gen_alloc(NULL, NULL);
dump_node(gen, croot, true); dump_node(gen, croot, true);
const unsigned char *payload; const unsigned char *payload;
unsigned int length; unsigned int length;
y(get_buf, &payload, &length); y(get_buf, &payload, &length);
char *globbed = resolve_tilde(config.restart_state_path); char *globbed = resolve_tilde(config.restart_state_path);
int fd = open(globbed, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); int fd = open(globbed, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
free(globbed); free(globbed);
if (fd == -1) { if (fd == -1) {
perror("open()"); perror("open()");
return; return;
}
int written = 0;
while (written < length) {
int n = write(fd, payload + written, length - written);
/* TODO: correct error-handling */
if (n == -1) {
perror("write()");
return;
} }
if (n == 0) {
int written = 0; printf("write == 0?\n");
while (written < length) { return;
int n = write(fd, payload + written, length - written);
/* TODO: correct error-handling */
if (n == -1) {
perror("write()");
return;
}
if (n == 0) {
printf("write == 0?\n");
return;
}
written += n;
printf("written: %d of %d\n", written, length);
} }
close(fd); written += n;
printf("written: %d of %d\n", written, length);
}
close(fd);
printf("layout: %.*s\n", length, payload); printf("layout: %.*s\n", length, payload);
y(free); y(free);
} }
/* /*
@ -412,17 +412,17 @@ void store_restart_layout() {
* *
*/ */
void i3_restart() { void i3_restart() {
store_restart_layout(); store_restart_layout();
restore_geometry(); restore_geometry();
ipc_shutdown(); ipc_shutdown();
LOG("restarting \"%s\"...\n", start_argv[0]); LOG("restarting \"%s\"...\n", start_argv[0]);
/* make sure -a is in the argument list or append it */ /* make sure -a is in the argument list or append it */
start_argv = append_argument(start_argv, "-a"); start_argv = append_argument(start_argv, "-a");
execvp(start_argv[0], start_argv); execvp(start_argv[0], start_argv);
/* not reached */ /* not reached */
} }
#if 0 #if 0