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