]> git.sur5r.net Git - i3/i3/blobdiff - libi3/safewrappers.c
Merge pull request #1816 from tcreech/tcreech-for-illumos
[i3/i3] / libi3 / safewrappers.c
index 6acf3109c553876e1fb7782bb011b0b435ace49a..0a233a1271f996272a50751c964e5ecf94b17015 100644 (file)
@@ -2,7 +2,7 @@
  * vim:ts=4:sw=4:expandtab
  *
  * i3 - an improved dynamic tiling window manager
- * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE)
+ * © 2009 Michael Stapelberg and contributors (see also: LICENSE)
  *
  */
 #include <string.h>
@@ -27,10 +27,10 @@ void *smalloc(size_t size) {
     return result;
 }
 
-void *scalloc(size_t size) {
-    void *result = calloc(size, 1);
+void *scalloc(size_t num, size_t size) {
+    void *result = calloc(num, size);
     if (result == NULL)
-        err(EXIT_FAILURE, "calloc(%zd)", size);
+        err(EXIT_FAILURE, "calloc(%zd, %zd)", num, size);
     return result;
 }
 
@@ -48,6 +48,13 @@ char *sstrdup(const char *str) {
     return result;
 }
 
+char *sstrndup(const char *str, size_t size) {
+    char *result = strndup(str, size);
+    if (result == NULL)
+        err(EXIT_FAILURE, "strndup()");
+    return result;
+}
+
 int sasprintf(char **strp, const char *fmt, ...) {
     va_list args;
     int result;
@@ -60,7 +67,7 @@ int sasprintf(char **strp, const char *fmt, ...) {
 }
 
 ssize_t writeall(int fd, const void *buf, size_t count) {
-    int written = 0;
+    size_t written = 0;
     ssize_t n = 0;
 
     while (written < count) {
@@ -70,7 +77,7 @@ ssize_t writeall(int fd, const void *buf, size_t count) {
                 continue;
             return n;
         }
-        written += n;
+        written += (size_t)n;
     }
 
     return written;