Browse Source

Updates on unified headers

android-5
Fredrik Fornwall 8 years ago
parent
commit
6e4505aa03
  1. 81
      ndk_patches_unified/bits-struct_file.h.patch
  2. 108
      ndk_patches_unified/langinfo.h.patch
  3. 29
      ndk_patches_unified/pwd.h.patch

81
ndk_patches_unified/bits-struct_file.h.patch

@ -0,0 +1,81 @@
diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/bits/struct_file.h ./usr/include/bits/struct_file.h
--- /home/fornwall/lib/android-ndk/sysroot/usr/include/bits/struct_file.h 2017-06-20 17:41:56.000000000 +0200
+++ ./usr/include/bits/struct_file.h 2017-06-26 13:35:19.040117023 +0200
@@ -33,13 +33,74 @@
__BEGIN_DECLS
+#if defined(__LP64__)
+struct __sbuf {
+ unsigned char* _base;
+ size_t _size;
+};
+#else
+struct __sbuf {
+ unsigned char *_base;
+ int _size;
+};
+#endif
+
struct __sFILE {
+ unsigned char *_p; /* current position in (some) buffer */
+ int _r; /* read space left for getc() */
+ int _w; /* write space left for putc() */
#if defined(__LP64__)
- char __private[152];
+ int _flags; /* flags, below; this FILE is free if 0 */
+ int _file; /* fileno, if Unix descriptor, else -1 */
#else
- char __private[84];
+ short _flags; /* flags, below; this FILE is free if 0 */
+ short _file; /* fileno, if Unix descriptor, else -1 */
#endif
-} __attribute__((aligned(sizeof(void*))));
+ struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */
+ int _lbfsize; /* 0 or -_bf._size, for inline putc */
+
+ /* operations */
+ void *_cookie; /* cookie passed to io functions */
+ int (*_close)(void *);
+ int (*_read)(void *, char *, int);
+ off_t (*_seek)(void *, off_t, int);
+ int (*_write)(void *, const char *, int);
+
+ /* extension data, to avoid further ABI breakage */
+ struct __sbuf _ext;
+ /* data for long sequences of ungetc() */
+ unsigned char *_up; /* saved _p when _p is doing ungetc data */
+ int _ur; /* saved _r when _r is counting ungetc data */
+
+ /* tricks to meet minimum requirements even when malloc() fails */
+ unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
+ unsigned char _nbuf[1]; /* guarantee a getc() buffer */
+
+ /* separate buffer for fgetln() when line crosses buffer boundary */
+ struct __sbuf _lb; /* buffer for fgetln() */
+
+ /* Unix stdio files get aligned to block boundaries on fseek() */
+ int _blksize; /* stat.st_blksize (may be != _bf._size) */
+ off_t _offset; /* current lseek offset */
+};
+
+#define __SLBF 0x0001 /* line buffered */
+#define __SNBF 0x0002 /* unbuffered */
+#define __SRD 0x0004 /* OK to read */
+#define __SWR 0x0008 /* OK to write */
+ /* RD and WR are never simultaneously asserted */
+#define __SRW 0x0010 /* open for reading & writing */
+#define __SEOF 0x0020 /* found EOF */
+#define __SERR 0x0040 /* found error */
+#define __SMBF 0x0080 /* _buf is from malloc */
+#define __SAPP 0x0100 /* fdopen()ed in append mode */
+#define __SSTR 0x0200 /* this is an sprintf/snprintf string */
+#define __SOPT 0x0400 /* do fseek() optimization */
+#define __SNPT 0x0800 /* do not do fseek() optimization */
+#define __SOFF 0x1000 /* set iff _offset is in fact correct */
+#define __SMOD 0x2000 /* true => fgetln modified _p text */
+#define __SALC 0x4000 /* allocate string space dynamically */
+#define __SIGN 0x8000 /* ignore this file in _fwalk */
__END_DECLS

108
ndk_patches_unified/langinfo.h.patch

@ -0,0 +1,108 @@
diff -N -a -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/langinfo.h ./usr/include/langinfo.h
--- /home/fornwall/lib/android-ndk/sysroot/usr/include/langinfo.h 2017-06-20 17:41:56.000000000 +0200
+++ ./usr/include/langinfo.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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 COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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.
- */
-
-#ifndef _LANGINFO_H_
-#define _LANGINFO_H_
-
-#include <sys/cdefs.h>
-
-#include <nl_types.h>
-#include <xlocale.h>
-
-__BEGIN_DECLS
-
-#define CODESET 1
-#define D_T_FMT 2
-#define D_FMT 3
-#define T_FMT 4
-#define T_FMT_AMPM 5
-#define AM_STR 6
-#define PM_STR 7
-#define DAY_1 8
-#define DAY_2 9
-#define DAY_3 10
-#define DAY_4 11
-#define DAY_5 12
-#define DAY_6 13
-#define DAY_7 14
-#define ABDAY_1 15
-#define ABDAY_2 16
-#define ABDAY_3 17
-#define ABDAY_4 18
-#define ABDAY_5 19
-#define ABDAY_6 20
-#define ABDAY_7 21
-#define MON_1 22
-#define MON_2 23
-#define MON_3 24
-#define MON_4 25
-#define MON_5 26
-#define MON_6 27
-#define MON_7 28
-#define MON_8 29
-#define MON_9 30
-#define MON_10 31
-#define MON_11 32
-#define MON_12 33
-#define ABMON_1 34
-#define ABMON_2 35
-#define ABMON_3 36
-#define ABMON_4 37
-#define ABMON_5 38
-#define ABMON_6 39
-#define ABMON_7 40
-#define ABMON_8 41
-#define ABMON_9 42
-#define ABMON_10 43
-#define ABMON_11 44
-#define ABMON_12 45
-#define ERA 46
-#define ERA_D_FMT 47
-#define ERA_D_T_FMT 48
-#define ERA_T_FMT 49
-#define ALT_DIGITS 50
-#define RADIXCHAR 51
-#define THOUSEP 52
-#define YESEXPR 53
-#define NOEXPR 54
-#define CRNCYSTR 55
-
-
-#if __ANDROID_API__ >= 26
-char* nl_langinfo(nl_item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item, locale_t) __INTRODUCED_IN(26);
-#endif /* __ANDROID_API__ >= 26 */
-
-
-__END_DECLS
-
-#endif

29
ndk_patches_unified/pwd.h.patch

@ -1,7 +1,16 @@
diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/pwd.h ./usr/include/pwd.h
--- /home/fornwall/lib/android-ndk/sysroot/usr/include/pwd.h 2017-06-07 01:07:52.000000000 +0200
+++ ./usr/include/pwd.h 2017-06-18 01:54:51.654897945 +0200
@@ -89,7 +89,6 @@
--- /home/fornwall/lib/android-ndk/sysroot/usr/include/pwd.h 2017-06-20 17:41:56.000000000 +0200
+++ ./usr/include/pwd.h 2017-06-26 11:45:26.036064547 +0200
@@ -63,6 +63,8 @@
#include <sys/cdefs.h>
#include <sys/types.h>
+#include <stdlib.h> /* For realpath() */
+
__BEGIN_DECLS
struct passwd {
@@ -89,7 +91,6 @@
struct passwd* getpwent(void) __INTRODUCED_IN(26);
void setpwent(void) __INTRODUCED_IN(26);
@ -9,21 +18,21 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/pwd.h ./usr/includ
#endif /* __ANDROID_API__ >= 26 */
@@ -99,6 +98,52 @@
@@ -99,6 +100,52 @@
int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**) __INTRODUCED_IN(12);
#endif /* __ANDROID_API__ >= 12 */
+static void android_setup_pwd(struct passwd* pw) {
+ static char realpath_buffer[4096/*PATH_MAX*/];
+ char* result = realpath("@TERMUX_HOME@/.termux/shell", realpath_buffer);
+ if (result == NULL || access(realpath_buffer, X_OK) == -1) {
+ char const* bash_path = "@TERMUX_PREFIX@/bin/bash";
+ if (access(bash_path, X_OK) != -1) pw->pw_shell = (char*) bash_path;
+ else pw->pw_shell = "@TERMUX_PREFIX@/bin/sh";
+ char* result = realpath("/data/data/com.termux/files/home/.termux/shell", realpath_buffer);
+ if (result == NULL || access(realpath_buffer, /*X_OK*/1) == -1) {
+ char const* bash_path = "/data/data/com.termux/files/usr/bin/bash";
+ if (access(bash_path, /*X_OK*/1) != -1) pw->pw_shell = (char*) bash_path;
+ else pw->pw_shell = "/data/data/com.termux/files/usr/bin/sh";
+ } else {
+ pw->pw_shell = realpath_buffer;
+ }
+ pw->pw_dir = "@TERMUX_HOME@";
+ pw->pw_dir = "/data/data/com.termux/files/home";
+ pw->pw_passwd = "*";
+#ifdef __LP64__
+ pw->pw_gecos = ""; /* Avoid NULL field. */

Loading…
Cancel
Save