summaryrefslogtreecommitdiff
path: root/portable
diff options
context:
space:
mode:
Diffstat (limited to 'portable')
-rw-r--r--portable/asprintf.c12
-rw-r--r--portable/dummy.c12
-rw-r--r--portable/krb5-extra.c12
-rw-r--r--portable/krb5.h20
-rw-r--r--portable/macros.h35
-rw-r--r--portable/mkstemp.c14
-rw-r--r--portable/setenv.c19
-rw-r--r--portable/snprintf.c3
-rw-r--r--portable/stdbool.h20
-rw-r--r--portable/strlcat.c12
-rw-r--r--portable/strlcpy.c12
-rw-r--r--portable/system.h75
-rw-r--r--portable/uio.h12
13 files changed, 212 insertions, 46 deletions
diff --git a/portable/asprintf.c b/portable/asprintf.c
index 4219a19..0093070 100644
--- a/portable/asprintf.c
+++ b/portable/asprintf.c
@@ -4,8 +4,18 @@
* Provides the same functionality as the standard GNU library routines
* asprintf and vasprintf for those platforms that don't have them.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#include <config.h>
diff --git a/portable/dummy.c b/portable/dummy.c
index 8a0d54d..50052ec 100644
--- a/portable/dummy.c
+++ b/portable/dummy.c
@@ -5,8 +5,18 @@
* supply, Automake builds an empty library and then calls ar with nonsensical
* arguments. Ensure that libportable always contains at least one symbol.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
/* Prototype to avoid gcc warnings. */
diff --git a/portable/krb5-extra.c b/portable/krb5-extra.c
index 89ccbde..849842c 100644
--- a/portable/krb5-extra.c
+++ b/portable/krb5-extra.c
@@ -6,8 +6,18 @@
* Everything in this file will be protected by #ifndef. If the native
* Kerberos libraries are fully capable, this file will be skipped.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#include <config.h>
diff --git a/portable/krb5.h b/portable/krb5.h
index 3b5700b..b418ae7 100644
--- a/portable/krb5.h
+++ b/portable/krb5.h
@@ -16,8 +16,18 @@
* prefers the generic krb5_xfree(). In this case, this header provides
* krb5_free_unparsed_name() for both APIs since it's the most specific call.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#ifndef PORTABLE_KRB5_H
@@ -32,7 +42,11 @@
#endif
#include <portable/macros.h>
-#include <krb5.h>
+#ifdef HAVE_KRB5_H
+# include <krb5.h>
+#else
+# include <krb5/krb5.h>
+#endif
#include <stdlib.h>
BEGIN_DECLS
@@ -75,7 +89,7 @@ krb5_error_code krb5_get_init_creds_opt_alloc(krb5_context,
/* Heimdal-specific. */
#ifndef HAVE_KRB5_GET_INIT_CREDS_OPT_SET_DEFAULT_FLAGS
-#define krb5_get_init_creds_opt_set_default_flags(c, p, r, o) /* empty */
+# define krb5_get_init_creds_opt_set_default_flags(c, p, r, o) /* empty */
#endif
/*
diff --git a/portable/macros.h b/portable/macros.h
index 8d5adbd..b33d064 100644
--- a/portable/macros.h
+++ b/portable/macros.h
@@ -1,8 +1,18 @@
/*
* Portability macros used in include files.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#ifndef PORTABLE_MACROS_H
@@ -20,6 +30,29 @@
#endif
/*
+ * We use __alloc_size__, but it was only available in fairly recent versions
+ * of GCC. Suppress warnings about the unknown attribute if GCC is too old.
+ * We know that we're GCC at this point, so we can use the GCC variadic macro
+ * extension, which will still work with versions of GCC too old to have C99
+ * variadic macro support.
+ */
+#if !defined(__attribute__) && !defined(__alloc_size__)
+# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
+# define __alloc_size__(spec, args...) /* empty */
+# endif
+#endif
+
+/*
+ * LLVM and Clang pretend to be GCC but don't support all of the __attribute__
+ * settings that GCC does. For them, suppress warnings about unknown
+ * attributes on declarations. This unfortunately will affect the entire
+ * compilation context, but there's no push and pop available.
+ */
+#if !defined(__attribute__) && (defined(__llvm__) || defined(__clang__))
+# pragma GCC diagnostic ignored "-Wattributes"
+#endif
+
+/*
* BEGIN_DECLS is used at the beginning of declarations so that C++
* compilers don't mangle their names. END_DECLS is used at the end.
*/
diff --git a/portable/mkstemp.c b/portable/mkstemp.c
index dd2a485..8668db1 100644
--- a/portable/mkstemp.c
+++ b/portable/mkstemp.c
@@ -4,8 +4,18 @@
* Provides the same functionality as the library function mkstemp for those
* systems that don't have it.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#include <config.h>
@@ -27,7 +37,7 @@ int test_mkstemp(char *);
#endif
/* Pick the longest available integer type. */
-#if HAVE_LONG_LONG
+#if HAVE_LONG_LONG_INT
typedef unsigned long long long_int_type;
#else
typedef unsigned long long_int_type;
diff --git a/portable/setenv.c b/portable/setenv.c
index d66ddcd..fd2b10c 100644
--- a/portable/setenv.c
+++ b/portable/setenv.c
@@ -4,8 +4,18 @@
* Provides the same functionality as the standard library routine setenv for
* those platforms that don't have it.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#include <config.h>
@@ -31,10 +41,9 @@ setenv(const char *name, const char *value, int overwrite)
/*
* Allocate memory for the environment string. We intentionally don't use
- * concat here, or the xmalloc family of allocation routines, since the
- * intention is to provide a replacement for the standard library function
- * which sets errno and returns in the event of a memory allocation
- * failure.
+ * the xmalloc family of allocation routines here, since the intention is
+ * to provide a replacement for the standard library function that sets
+ * errno and returns in the event of a memory allocation failure.
*/
size = strlen(name) + 1 + strlen(value) + 1;
envstring = malloc(size);
diff --git a/portable/snprintf.c b/portable/snprintf.c
index ab3121c..91c8491 100644
--- a/portable/snprintf.c
+++ b/portable/snprintf.c
@@ -8,6 +8,9 @@
* Please do not reformat or otherwise change this file more than necessary so
* that later merges with the original source are easy. Bug fixes and
* improvements should be sent back to the original author.
+ *
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
*/
/*
diff --git a/portable/stdbool.h b/portable/stdbool.h
index bfbf4c4..045436f 100644
--- a/portable/stdbool.h
+++ b/portable/stdbool.h
@@ -5,13 +5,31 @@
* following the C99 specification, on hosts that don't have stdbool.h. This
* logic is based heavily on the example in the Autoconf manual.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#ifndef PORTABLE_STDBOOL_H
#define PORTABLE_STDBOOL_H 1
+/*
+ * Allow inclusion of config.h to be skipped, since sometimes we have to use a
+ * stripped-down version of config.h with a different name.
+ */
+#ifndef CONFIG_H_INCLUDED
+# include <config.h>
+#endif
+
#if HAVE_STDBOOL_H
# include <stdbool.h>
#else
diff --git a/portable/strlcat.c b/portable/strlcat.c
index f696db3..3bee4ee 100644
--- a/portable/strlcat.c
+++ b/portable/strlcat.c
@@ -9,8 +9,18 @@
* space available in the destination buffer, not just the amount of space
* remaining.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#include <config.h>
diff --git a/portable/strlcpy.c b/portable/strlcpy.c
index 596e968..df75fd8 100644
--- a/portable/strlcpy.c
+++ b/portable/strlcpy.c
@@ -8,8 +8,18 @@
* total space required is returned. The destination string is not nul-filled
* like strncpy does, just nul-terminated.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#include <config.h>
diff --git a/portable/system.h b/portable/system.h
index 461601b..d1ccc94 100644
--- a/portable/system.h
+++ b/portable/system.h
@@ -13,13 +13,24 @@
* #include <stddef.h>
* #include <stdint.h>
* #include <string.h>
+ * #include <strings.h>
* #include <unistd.h>
*
* Missing functions are provided via #define or prototyped if available from
* the portable helper library. Also provides some standard #defines.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#ifndef PORTABLE_SYSTEM_H
@@ -38,6 +49,9 @@
#include <stdlib.h>
#include <sys/types.h>
#include <string.h>
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#endif
@@ -56,6 +70,38 @@
/* Get the bool type. */
#include <portable/stdbool.h>
+/* Windows provides snprintf under a different name. */
+#ifdef _WIN32
+# define snprintf _snprintf
+#endif
+
+/* Windows does not define ssize_t. */
+#ifndef HAVE_SSIZE_T
+typedef ptrdiff_t ssize_t;
+#endif
+
+/*
+ * POSIX requires that these be defined in <unistd.h>. If one of them has
+ * been defined, all the rest almost certainly have.
+ */
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+# define STDOUT_FILENO 1
+# define STDERR_FILENO 2
+#endif
+
+/*
+ * C99 requires va_copy. Older versions of GCC provide __va_copy. Per the
+ * Autoconf manual, memcpy is a generally portable fallback.
+ */
+#ifndef va_copy
+# ifdef __va_copy
+# define va_copy(d, s) __va_copy((d), (s))
+# else
+# define va_copy(d, s) memcpy(&(d), &(s), sizeof(va_list))
+# endif
+#endif
+
BEGIN_DECLS
/* Default to a hidden visibility for all portability functions. */
@@ -96,31 +142,4 @@ extern size_t strlcpy(char *, const char *, size_t);
END_DECLS
-/* Windows provides snprintf under a different name. */
-#ifdef _WIN32
-# define snprintf _snprintf
-#endif
-
-/*
- * POSIX requires that these be defined in <unistd.h>. If one of them has
- * been defined, all the rest almost certainly have.
- */
-#ifndef STDIN_FILENO
-# define STDIN_FILENO 0
-# define STDOUT_FILENO 1
-# define STDERR_FILENO 2
-#endif
-
-/*
- * C99 requires va_copy. Older versions of GCC provide __va_copy. Per the
- * Autoconf manual, memcpy is a generally portable fallback.
- */
-#ifndef va_copy
-# ifdef __va_copy
-# define va_copy(d, s) __va_copy((d), (s))
-# else
-# define va_copy(d, s) memcpy(&(d), &(s), sizeof(va_list))
-# endif
-#endif
-
#endif /* !PORTABLE_SYSTEM_H */
diff --git a/portable/uio.h b/portable/uio.h
index 3c9e840..3bd1f96 100644
--- a/portable/uio.h
+++ b/portable/uio.h
@@ -5,8 +5,18 @@
* (primarily Windows). Currently, the corresponding readv and writev
* functions are not provided or prototyped here.
*
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
* Written by Russ Allbery <rra@stanford.edu>
- * This work is hereby placed in the public domain by its author.
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
*/
#ifndef PORTABLE_UIO_H