summaryrefslogtreecommitdiff
path: root/lib/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/system.h')
-rw-r--r--lib/system.h15
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;