diff --git a/include/pcp/platform.h b/include/pcp/platform.h
index 681290c..2222816 100755
--- a/include/pcp/platform.h
+++ b/include/pcp/platform.h
@@ -1,7 +1,7 @@
/*
This file is part of Pretty Curved Privacy (pcp1).
- Copyright (C) 2013 T.Linden.
+ Copyright (C) 2013-2014 T.v.Dein.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
- You can contact me by mail: .
+ You can contact me by mail: .
*/
@@ -68,16 +68,12 @@
#ifndef HAVE_ARC4RANDOM
#include
-static inline u_int32_t arc4random() {
- return randombytes_random();
-}
+u_int32_t arc4random();
#endif
#ifndef HAVE_ARC4RANDOM_BUF
#include
-static inline void arc4random_buf(void *buf, size_t nbytes) {
- randombytes((unsigned char*)buf, nbytes);
-}
+void arc4random_buf(void *buf, size_t nbytes);
#endif
@@ -88,17 +84,7 @@ static inline void arc4random_buf(void *buf, size_t nbytes) {
#include
#include
-static inline void err(int eval, const char *fmt, ...) {
- va_list ap;
- va_start(ap, fmt);
- fprintf(stderr, "pcp1");
- if (fmt != NULL) {
- fprintf(stderr, ": ");
- vfprintf(stderr, fmt, ap);
- }
- fprintf(stderr, ": %s\n", strerror(errno));
- va_end(ap);
-}
+void err(int eval, const char *fmt, ...);
#else
@@ -112,28 +98,7 @@ static inline void err(int eval, const char *fmt, ...) {
#ifndef HAVE_VASPRINTF
#include
-static inline
-int vasprintf(char **ret, const char *format, va_list args) {
- va_list copy;
- va_copy(copy, args);
-
- *ret = 0;
-
- int count = vsnprintf(NULL, 0, format, args);
- if (count >= 0) {
- char* buffer = (char *)malloc(count + 1);
- if (buffer != NULL) {
- count = vsnprintf(buffer, count + 1, format, copy);
- if (count < 0)
- free(buffer);
- else
- *ret = buffer;
- }
- }
- va_end(copy); /* Each va_start() or va_copy() needs a va_end() */
-
- return count;
-}
+int vasprintf(char **ret, const char *format, va_list args);
#endif
@@ -144,43 +109,16 @@ int vasprintf(char **ret, const char *format, va_list args) {
#ifndef HAVE_STRNLEN
-static inline size_t
-strnlen(const char *msg, size_t maxlen)
-{
- size_t i;
-
- for (i=0; i
-static inline char *
-strnstr(const char *s, const char *find, size_t slen)
-{
- char c, sc;
- size_t len;
-
- if ((c = *find++) != '\0') {
- len = strlen(find);
- do {
- do {
- if (slen-- < 1 || (sc = *s++) == '\0')
- return (NULL);
- } while (sc != c);
- if (len > slen)
- return (NULL);
- } while (strncmp(s, find, len) != 0);
- s--;
- }
- return ((char *)s);
-}
+char *
+strnstr(const char *s, const char *find, size_t slen);
#endif
/* size_t format string */
diff --git a/libpcp/Makefile.am b/libpcp/Makefile.am
index 525ecb7..f9493d2 100644
--- a/libpcp/Makefile.am
+++ b/libpcp/Makefile.am
@@ -25,7 +25,7 @@ lib_LTLIBRARIES = libpcp1.la
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libpcp1.pc
-libpcp1_la_SOURCES = mac.c mem.c pad.c version.c \
+libpcp1_la_SOURCES = platform.c mac.c mem.c pad.c version.c \
z85.c zmq_z85.c key.c randomart.c \
vault.c fatal.c jenhash.c digital_crc32.c \
crypto.c ed.c keyhash.c scrypt.c \
diff --git a/libpcp/platform.c b/libpcp/platform.c
new file mode 100644
index 0000000..e3cb065
--- /dev/null
+++ b/libpcp/platform.c
@@ -0,0 +1,112 @@
+/*
+ This file is part of Pretty Curved Privacy (pcp1).
+
+ Copyright (C) 2013-2014 T.v.Dein.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+ You can contact me by mail: .
+*/
+
+#include "platform.h"
+
+#ifndef HAVE_ARC4RANDOM
+u_int32_t arc4random() {
+ return randombytes_random();
+}
+#endif
+
+#ifndef HAVE_ARC4RANDOM_BUF
+#include
+void arc4random_buf(void *buf, size_t nbytes) {
+ randombytes((unsigned char*)buf, nbytes);
+}
+#endif
+
+#ifndef HAVE_ERR_H
+void err(int eval, const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "pcp1");
+ if (fmt != NULL) {
+ fprintf(stderr, ": ");
+ vfprintf(stderr, fmt, ap);
+ }
+ fprintf(stderr, ": %s\n", strerror(errno));
+ va_end(ap);
+}
+#endif
+
+#ifndef HAVE_VASPRINTF
+int vasprintf(char **ret, const char *format, va_list args) {
+ va_list copy;
+ va_copy(copy, args);
+
+ *ret = 0;
+
+ int count = vsnprintf(NULL, 0, format, args);
+ if (count >= 0) {
+ char* buffer = (char *)malloc(count + 1);
+ if (buffer != NULL) {
+ count = vsnprintf(buffer, count + 1, format, copy);
+ if (count < 0)
+ free(buffer);
+ else
+ *ret = buffer;
+ }
+ }
+ va_end(copy); /* Each va_start() or va_copy() needs a va_end() */
+
+ return count;
+}
+#endif
+
+#ifndef HAVE_STRNLEN
+size_t
+strnlen(const char *msg, size_t maxlen)
+{
+ size_t i;
+
+ for (i=0; i slen)
+ return (NULL);
+ } while (strncmp(s, find, len) != 0);
+ s--;
+ }
+ return ((char *)s);
+}
+#endif