diff options
Diffstat (limited to 'lib/system.h')
-rw-r--r-- | lib/system.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/system.h b/lib/system.h index 1c478e1c..cdf18ed7 100644 --- a/lib/system.h +++ b/lib/system.h @@ -37,6 +37,7 @@ #include <endian.h> #include <byteswap.h> #include <unistd.h> +#include <string.h> #if __BYTE_ORDER == __LITTLE_ENDIAN # define LE32(n) (n) @@ -69,6 +70,14 @@ ((void *) ((char *) memcpy (dest, src, n) + (size_t) n)) #endif +/* Return TRUE if the start of STR matches PREFIX, FALSE otherwise. */ + +static inline int +startswith (const char *str, const char *prefix) +{ + return strncmp (str, prefix, strlen (prefix)) == 0; +} + /* A special gettext function we use if the strings are too short. */ #define sgettext(Str) \ ({ const char *__res = strrchr (_(Str), '|'); \ @@ -104,7 +113,7 @@ pwrite_retry (int fd, const void *buf, size_t len, off_t off) do { - ssize_t ret = TEMP_FAILURE_RETRY (pwrite (fd, buf + recvd, len - recvd, + ssize_t ret = TEMP_FAILURE_RETRY (pwrite (fd, ((char *)buf) + recvd, len - recvd, off + recvd)); if (ret <= 0) return ret < 0 ? ret : recvd; @@ -123,7 +132,7 @@ write_retry (int fd, const void *buf, size_t len) do { - ssize_t ret = TEMP_FAILURE_RETRY (write (fd, buf + recvd, len - recvd)); + ssize_t ret = TEMP_FAILURE_RETRY (write (fd, ((char *)buf) + recvd, len - recvd)); if (ret <= 0) return ret < 0 ? ret : recvd; @@ -141,7 +150,7 @@ pread_retry (int fd, void *buf, size_t len, off_t off) do { - ssize_t ret = TEMP_FAILURE_RETRY (pread (fd, buf + recvd, len - recvd, + ssize_t ret = TEMP_FAILURE_RETRY (pread (fd, ((char *)buf) + recvd, len - recvd, off + recvd)); if (ret <= 0) return ret < 0 ? ret : recvd; |