<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/66e8c877626bb73082c65a9e5fb763cc8996654f">https://github.com/macports/macports-legacy-support/commit/66e8c877626bb73082c65a9e5fb763cc8996654f</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 66e8c87 lutimes: add for Tiger
</span>66e8c87 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 66e8c877626bb73082c65a9e5fb763cc8996654f
</span>Author: Ken Cunningham <kencu@macports.org>
AuthorDate: Sun Oct 25 11:47:10 2020 -0700
<span style='display:block; white-space:pre;color:#404040;'> lutimes: add for Tiger
</span>---
README.md | 5 +++
include/MacportsLegacySupport.h | 3 ++
include/sys/time.h | 37 +++++++++++++++++++++
src/lutimes.c | 73 +++++++++++++++++++++++++++++++++++++++++
4 files changed, 118 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 ddeb961..f1aa458 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;'>@@ -126,6 +126,11 @@ Wrapped headers and replaced functions are:
</span> <td>Adds <code>lchmod</code> function</td>
<td>OSX10.4</td>
</tr>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ <tr>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <td><code>sys/time.h</code></td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <td>Adds <code>lutimes</code> function</td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <td>OSX10.4</td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </tr>
</span> <tr>
<td rowspan="3"><code>sys/unistd.h</code></td>
<td>Adds <code>getattrlistat</code>, <code>readlinkat</code>, <code>faccessat</code>,
<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 bfd07e4..f60a62b 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;'>@@ -99,6 +99,9 @@
</span> /* lsmod does not exist on Tiger */
#define __MP_LEGACY_SUPPORT_LSMOD__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050)
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* lutimes does not exist on Tiger */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_LUTIMES__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> /* sysconf() is missing some functions on some systems */
#define __MP_LEGACY_SUPPORT_SYSCONF_WRAP__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101100)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/sys/time.h b/include/sys/time.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..3bc71d0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/sys/time.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,37 @@
</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) 2020 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_SYSTIME_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MACPORTS_SYSTIME_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;'>+/* Include the primary system time.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include_next <sys/time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_LUTIMES__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+__MP__BEGIN_DECLS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern int lutimes(const char *, const struct timeval *);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+__MP__END_DECLS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MP_LEGACY_SUPPORT_LUTIMES__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* _MACPORTS_SYSTIME_H_ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/lutimes.c b/src/lutimes.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..edfd116
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/lutimes.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,73 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * @APPLE_LICENSE_HEADER_START@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This file contains Original Code and/or Modifications of Original Code
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * as defined in and that are subject to the Apple Public Source License
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Version 2.0 (the 'License'). You may not use this file except in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * compliance with the License. Please obtain a copy of the License at
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * http://www.opensource.apple.com/apsl/ and read it before using this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The Original Code and all software distributed under the License are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Please see the License for the specific language governing rights and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * limitations under the License.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * @APPLE_LICENSE_HEADER_END@
</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;'>+ * NOTICE: This file was modified by Ken Cunningham in October 2020 to allow
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * for use as a supporting file for MacPorts legacy support library. This notice
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * is included in support of clause 2.2 (b) of the Apple Public License,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Version 2.0.
</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;'>+/* 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;'>+#if __MP_LEGACY_SUPPORT_LUTIMES__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/attr.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <strings.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;'>+lutimes(const char *path, const struct timeval *times)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct stat s;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct attrlist a;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct timespec mod;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct timespec access;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(lstat(path, &s) < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if((s.st_mode & S_IFMT) != S_IFLNK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return utimes(path, times);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bzero(&a, sizeof(a));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a.bitmapcount = ATTR_BIT_MAP_COUNT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a.commonattr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(times) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TIMEVAL_TO_TIMESPEC(×[0], &t.access);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TIMEVAL_TO_TIMESPEC(×[1], &t.mod);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct timeval now;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(gettimeofday(&now, NULL) < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TIMEVAL_TO_TIMESPEC(&now, &t.access);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TIMEVAL_TO_TIMESPEC(&now, &t.mod);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return setattrlist(path, &a, &t, sizeof(t), FSOPT_NOFOLLOW);
</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 /* __MP_LEGACY_SUPPORT_LUTIMES__ */
</span></pre><pre style='margin:0'>
</pre>