aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common.h7
-rw-r--r--libcontacts_parse_contact.c5
2 files changed, 12 insertions, 0 deletions
diff --git a/common.h b/common.h
index ab021cc..5bb22a1 100644
--- a/common.h
+++ b/common.h
@@ -14,6 +14,13 @@
#include <unistd.h>
+#if defined(__GNUC__) || defined(__clang__)
+# define ATTRIBUTE_PURE __attribute__((__pure__))
+#else
+# define ATTRIBUTE_PURE
+#endif
+
+
#define TIME_MAX ((time_t)((1ULL << (8 * sizeof(time_t) - 1)) - 1ULL))
diff --git a/libcontacts_parse_contact.c b/libcontacts_parse_contact.c
index f8de012..79dc579 100644
--- a/libcontacts_parse_contact.c
+++ b/libcontacts_parse_contact.c
@@ -2,6 +2,7 @@
#include "common.h"
+ATTRIBUTE_PURE
static time_t
gettime(const char *data)
{
@@ -18,6 +19,7 @@ gettime(const char *data)
return ret;
}
+ATTRIBUTE_PURE
static unsigned int
getposuint(const char *data)
{
@@ -34,6 +36,7 @@ getposuint(const char *data)
return ret;
}
+ATTRIBUTE_PURE
static unsigned char
getposuchar(const char *data)
{
@@ -50,6 +53,7 @@ getposuchar(const char *data)
return ret;
}
+ATTRIBUTE_PURE
static char *
getstr(char *data)
{
@@ -57,6 +61,7 @@ getstr(char *data)
return &strchr(data, ' ')[1];
}
+ATTRIBUTE_PURE
static char *
unindent(char *data)
{