<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-legacy-support.
</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/f06ba7b6e4790bcb8366d3ecb96946fb010f0d3e">https://github.com/macports/macports-legacy-support/commit/f06ba7b6e4790bcb8366d3ecb96946fb010f0d3e</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new f06ba7b Tiger: add PTHREAD_RWLOCK_INITIALIZER
</span>f06ba7b is described below
<span style='display:block; white-space:pre;color:#808000;'>commit f06ba7b6e4790bcb8366d3ecb96946fb010f0d3e
</span>Author: Ken Cunningham <ken.cunningham.webuse@gmail.com>
AuthorDate: Tue Feb 19 22:42:40 2019 -0800
<span style='display:block; white-space:pre;color:#404040;'> Tiger: add PTHREAD_RWLOCK_INITIALIZER
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> this commonly used macro is missing from Tiger
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> this is an unususal #define, with a strange magic number
</span><span style='display:block; white-space:pre;color:#404040;'> it is copied from subsequent macOS versions, where it persists
</span><span style='display:block; white-space:pre;color:#404040;'> in this form up to at least 10.14
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> tested using the basic test here, and also using
</span><span style='display:block; white-space:pre;color:#404040;'> the more detailed tests from Richard Stevens' Unix Network Programming Vol 2 Second Ed
</span><span style='display:block; white-space:pre;color:#404040;'> Source here: https://www.kohala.com/start/unpv22e/unpv22e.html
</span><span style='display:block; white-space:pre;color:#404040;'> in my_rwlock/test1.c
</span>---
README.md | 1 +
include/MacportsLegacySupport.h | 4 ++++
include/pthread.h | 38 ++++++++++++++++++++++++++++++++++++++
include/pthread_impl.h | 38 ++++++++++++++++++++++++++++++++++++++
test/test_pthread_rwlock_basic.c | 39 +++++++++++++++++++++++++++++++++++++++
5 files changed, 120 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/README.md b/README.md
</span><span style='display:block; white-space:pre;color:#808080;'>index d78be1d..7516611 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/README.md
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/README.md
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -15,6 +15,7 @@ via the legacysupport PortGroup.
</span> Wrapped headers are:
- cmath : Adds declaration of various `long long` methods missing in OSX10.6 and older.
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ - pthread.h : Adds PTHREAD_RWLOCK_INITIALIZER for OSX10.4
</span> - stdio.h : Adds `getline` and `getdelim` functions missing in OSX10.6 and older.
- stdlib.h : Adds `posix_memalign` functional replacement,
and wraps `realpath` to accept a NULL buffer argument,
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/MacportsLegacySupport.h b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 2eaa2e6..0f8d937 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -78,4 +78,8 @@
</span> /* arc4random */
#define __MP_LEGACY_SUPPORT_ARC4RANDOM__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* pthread_rwlock_initializer */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_PTHREAD_RWLOCK__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #endif /* _MACPORTS_LEGACYSUPPORTDEFS_H_ */
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/pthread.h b/include/pthread.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..54f6f0d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/pthread.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,38 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2018 Ken Cunningham <kencu@macports.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission to use, copy, modify, and distribute this software for any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * purpose with or without fee is hereby granted, provided that the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copyright notice and this permission notice appear in all copies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef _MACPORTS_PTHREAD_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MACPORTS_PTHREAD_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Include the primary system pthread.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include_next <pthread.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* MP support header */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "MacportsLegacySupport.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_PTHREAD_RWLOCK__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* PTHREAD_RWLOCK_INITIALIZER is not defined on Tiger */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef PTHREAD_RWLOCK_INITIALIZER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWLOCK_SIG_init, {0}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MP_LEGACY_SUPPORT_PTHREAD_RWLOCK__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* _MACPORTS_PTHREAD_H_ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/pthread_impl.h b/include/pthread_impl.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..8da9f1c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/pthread_impl.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,38 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2018 Ken Cunningham <kencu@macports.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission to use, copy, modify, and distribute this software for any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * purpose with or without fee is hereby granted, provided that the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copyright notice and this permission notice appear in all copies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef _MACPORTS_PTHREAD_IMPL_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MACPORTS_PTHREAD_IMPL_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Include the primary system pthread_impl.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include_next <pthread_impl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* MP support header */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "MacportsLegacySupport.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_PTHREAD_RWLOCK__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* PTHREAD_RWLOCK_INITIALIZER is not defined on Tiger */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef _PTHREAD_RWLOCK_SIG_init
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _PTHREAD_RWLOCK_SIG_init 0x2DA8B3B4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MP_LEGACY_SUPPORT_PTHREAD_RWLOCK__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* _MACPORTS_PTHREAD_IMPL_H_ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_pthread_rwlock_basic.c b/test/test_pthread_rwlock_basic.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..3707459
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_pthread_rwlock_basic.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,39 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2019 Ken Cunningham <kencu@macports.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission to use, copy, modify, and distribute this software for any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * purpose with or without fee is hereby granted, provided that the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copyright notice and this permission notice appear in all copies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <pthread.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+main (void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("\nTesting PTHREAD_RWLOCK_INITIALIZER\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_t aLock = PTHREAD_RWLOCK_INITIALIZER;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_rdlock(&aLock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_unlock(&aLock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_destroy(&aLock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("Success testing PTHREAD_RWLOCK_INITIALIZER\n\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("Testing pthread_rwlock_init\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_t myLock;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_init(&myLock, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_rdlock(&myLock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_unlock(&myLock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pthread_rwlock_destroy(&myLock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("Success testing pthread_rwlock_init\n\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>
</pre>