]> git.cameronkatri.com Git - apple_cmds.git/commitdiff
shell_cmds: Fix compilation for lower targets
authorCameron Katri <me@cameronkatri.com>
Sun, 23 May 2021 15:50:48 +0000 (11:50 -0400)
committerCameron Katri <me@cameronkatri.com>
Sun, 23 May 2021 15:50:48 +0000 (11:50 -0400)
shell_cmds/find/misc.c
shell_cmds/find/rpmatch.c [new file with mode: 0644]
shell_cmds/nohup/nohup.c
shell_cmds/systime/systime.c
shell_cmds/xargs/Makefile
shell_cmds/xargs/strtonum.c [new file with mode: 0644]
shell_cmds/xargs/xargs.c

index a165c5ec9cdd86b855907385e898f484e4c0c933..e45b8648c6d3d02bae4e5e69037a17213c381e0d 100644 (file)
@@ -52,6 +52,10 @@ __FBSDID("$FreeBSD: src/usr.bin/find/misc.c,v 1.13 2010/12/11 08:32:16 joel Exp
 
 #include "find.h"
 
+#if __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 140000
+#include "rpmatch.c"
+#endif
+
 /*
  * brace_subst --
  *     Replace occurrences of {} in s1 with s2 and return the result string.
diff --git a/shell_cmds/find/rpmatch.c b/shell_cmds/find/rpmatch.c
new file mode 100644 (file)
index 0000000..e4c366a
--- /dev/null
@@ -0,0 +1,57 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2004-2005 Tim J. Robbins.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <langinfo.h>
+#include <regex.h>
+#include <stdlib.h>
+
+int
+rpmatch(const char *response)
+{
+       regex_t yes, no;
+       int ret;
+
+       if (regcomp(&yes, nl_langinfo(YESEXPR), REG_EXTENDED|REG_NOSUB) != 0)
+               return (-1);
+       if (regcomp(&no, nl_langinfo(NOEXPR), REG_EXTENDED|REG_NOSUB) != 0) {
+               regfree(&yes);
+               return (-1);
+       }
+       if (regexec(&yes, response, 0, NULL, 0) == 0)
+               ret = 1;
+       else if (regexec(&no, response, 0, NULL, 0) == 0)
+               ret = 0;
+       else
+               ret = -1;
+       regfree(&yes);
+       regfree(&no);
+       return (ret);
+}
index f33e21ba631c493b9899239951197a5626005d7c..d2b9f8132d38674f0f8a50d444c8b2be8af904f2 100644 (file)
@@ -59,6 +59,7 @@ __FBSDID("$FreeBSD: src/usr.bin/nohup/nohup.c,v 1.10 2003/05/03 19:44:46 obrien
 #ifdef __APPLE__
 #include <TargetConditionals.h>
 #include <vproc.h>
+typedef char *kobject_description_t[512];
 #include <vproc_priv.h>
 #endif
 
index 555fc6afbe57b8c11e202d171d4bfedda6841f58..38159b8c7dd922553e6dbb67168fe6d4b7acb393 100644 (file)
@@ -21,6 +21,7 @@
  * @APPLE_LICENSE_HEADER_END@
  */
 
+typedef char *kobject_description_t[512];
 #include <mach/mach.h>
 #include <err.h>
 #include <errno.h>
index a316efb0723ad3787bb33681a6ef83b289674fef..d7f35183eba7052883ffc78f5d1a6d6ec7c057d5 100644 (file)
@@ -1,5 +1,5 @@
 PROG=  xargs
-SRCS=  strnsubst.c xargs.c
+SRCS=  strnsubst.c xargs.c strtonum.c
 
 LDADD+=-liosexec
 
diff --git a/shell_cmds/xargs/strtonum.c b/shell_cmds/xargs/strtonum.c
new file mode 100644 (file)
index 0000000..aa433d8
--- /dev/null
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2004 Ted Unangst and Todd Miller
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ *     $OpenBSD: strtonum.c,v 1.7 2013/04/17 18:40:58 tedu Exp $
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#define        INVALID         1
+#define        TOOSMALL        2
+#define        TOOLARGE        3
+
+long long
+strtonum(const char *numstr, long long minval, long long maxval,
+    const char **errstrp)
+{
+       long long ll = 0;
+       int error = 0;
+       char *ep;
+       struct errval {
+               const char *errstr;
+               int err;
+       } ev[4] = {
+               { NULL,         0 },
+               { "invalid",    EINVAL },
+               { "too small",  ERANGE },
+               { "too large",  ERANGE },
+       };
+
+       ev[0].err = errno;
+       errno = 0;
+       if (minval > maxval) {
+               error = INVALID;
+       } else {
+               ll = strtoll(numstr, &ep, 10);
+               if (errno == EINVAL || numstr == ep || *ep != '\0')
+                       error = INVALID;
+               else if ((ll == LLONG_MIN && errno == ERANGE) || ll < minval)
+                       error = TOOSMALL;
+               else if ((ll == LLONG_MAX && errno == ERANGE) || ll > maxval)
+                       error = TOOLARGE;
+       }
+       if (errstrp != NULL)
+               *errstrp = ev[error].errstr;
+       errno = ev[error].err;
+       if (error)
+               ll = 0;
+
+       return (ll);
+}
index 1b71a6d0b80c1c0baf15cfc81336dc213d8ef683..7865be388b49daa56e43053e8da742c3ee0dd176 100644 (file)
@@ -75,6 +75,8 @@ __FBSDID("$FreeBSD$");
 #define COMPAT_MODE(a,b) (1)
 #endif /* __APPLE__ */
 
+long long      strtonum(const char*, long long, long long, const char**);
+
 static void    parse_input(int, char *[]);
 static void    prerun(int, char *[]);
 static int     prompt(void);