]> git.sur5r.net Git - i3/i3status/blobdiff - src/general.c
clang-format-3.5 -i **/*.[ch], update modeline
[i3/i3status] / src / general.c
index 4c110e47831be54872795d468e3bf025cde94366..f299a2b807ea8e0772a88bf016c8c06c15eaaf70 100644 (file)
@@ -1,3 +1,4 @@
+// vim:ts=4:sw=4:expandtab
 #include <sys/types.h>
 #include <string.h>
 #include <stdarg.h>
@@ -5,6 +6,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/fcntl.h>
+#include <sys/stat.h>
 
 #include "i3status.h"
 
  * Reads size bytes into the destination buffer from filename.
  *
  */
-void slurp(char *filename, char *destination, int size) {
-       int fd;
+bool slurp(const char *filename, char *destination, int size) {
+    int fd;
 
-       if ((fd = open(filename, O_RDONLY)) == -1)
-               die("Could not open \"%s\"\n", filename);
+    if ((fd = open(filename, O_RDONLY)) == -1)
+        return false;
 
-       (void)read(fd, destination, size);
-       (void)close(fd);
+    /* We need one byte for the trailing 0 byte */
+    int n = read(fd, destination, size - 1);
+    if (n != -1)
+        destination[n] = '\0';
+    (void)close(fd);
+
+    return true;
 }
 
 /*
@@ -28,15 +35,15 @@ void slurp(char *filename, char *destination, int size) {
  *
  */
 char *skip_character(char *input, char character, int amount) {
-        char *walk;
-        size_t len = strlen(input);
-        int blanks = 0;
+    char *walk;
+    size_t len = strlen(input);
+    int blanks = 0;
 
-        for (walk = input; ((size_t)(walk - input) < len) && (blanks < amount); walk++)
-                if (*walk == character)
-                        blanks++;
+    for (walk = input; ((size_t)(walk - input) < len) && (blanks < amount); walk++)
+        if (*walk == character)
+            blanks++;
 
-        return (walk == input ? walk : walk-1);
+    return (walk == input ? walk : walk - 1);
 }
 
 /*
@@ -44,27 +51,12 @@ char *skip_character(char *input, char character, int amount) {
  *
  */
 void die(const char *fmt, ...) {
-        char buffer[512];
-        va_list ap;
-        va_start(ap, fmt);
-        (void)vsnprintf(buffer, sizeof(buffer), fmt, ap);
-        va_end(ap);
-
-        if (wmii_path != NULL)
-                write_error_to_statusbar(buffer);
-        else
-                fprintf(stderr, "%s", buffer);
-        exit(EXIT_FAILURE);
-}
-
-/*
- * This function just concats two strings in place, it should only be used
- * for concatting order to the name of a file or concatting color codes.
- * Otherwise, the buffer size would have to be increased.
- *
- */
-char *order_to_str(int number, char *name) {
-        static char buf[32];
-        (void)snprintf(buf, sizeof(buf), "%d%s", number, name);
-        return buf;
+    char buffer[512];
+    va_list ap;
+    va_start(ap, fmt);
+    (void)vsnprintf(buffer, sizeof(buffer), fmt, ap);
+    va_end(ap);
+
+    fprintf(stderr, "%s", buffer);
+    exit(EXIT_FAILURE);
 }