]> git.sur5r.net Git - i3/i3status/blobdiff - src/general.c
fix ethernet speed display for 100 Gbit/s cards
[i3/i3status] / src / general.c
index 2ae90f135ed2dad3f6ff788e2905af0b345aa3f1..1b11bd84a7803466c64d5a90f131b1e5b0c48ad6 100644 (file)
@@ -1,4 +1,5 @@
-// vim:ts=8:expandtab
+// vim:ts=4:sw=4:expandtab
+#include <config.h>
 #include <sys/types.h>
 #include <string.h>
 #include <stdarg.h>
@@ -6,6 +7,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/fcntl.h>
+#include <sys/stat.h>
 
 #include "i3status.h"
 
  *
  */
 bool slurp(const char *filename, char *destination, int size) {
-        int fd;
+    int fd;
 
-        if ((fd = open(filename, O_RDONLY)) == -1)
-                return false;
+    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;
+    return true;
 }
 
 /*
@@ -31,15 +36,15 @@ bool slurp(const 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);
 }
 
 /*
@@ -47,12 +52,10 @@ 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);
-
-        fprintf(stderr, "%s", buffer);
-        exit(EXIT_FAILURE);
+    va_list ap;
+    va_start(ap, fmt);
+    (void)vfprintf(stderr, fmt, ap);
+    va_end(ap);
+
+    exit(EXIT_FAILURE);
 }