From 1b9db02ccab214fa1aca5e638be6535354cf240a Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Sun, 12 Jan 2020 01:33:38 +0100 Subject: [PATCH] psmisc: Use sysinfo() for uptime (fixes #4783) --- packages/psmisc/build.sh | 1 + packages/psmisc/pstree.patch | 35 --------------- packages/psmisc/src-killall.c.patch | 39 ++++++++++++++++ packages/psmisc/src-pstree.c.patch | 69 +++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 35 deletions(-) delete mode 100644 packages/psmisc/pstree.patch create mode 100644 packages/psmisc/src-killall.c.patch create mode 100644 packages/psmisc/src-pstree.c.patch diff --git a/packages/psmisc/build.sh b/packages/psmisc/build.sh index 83d69a9a8..4f44e889a 100644 --- a/packages/psmisc/build.sh +++ b/packages/psmisc/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://gitlab.com/psmisc/psmisc TERMUX_PKG_DESCRIPTION="Some small useful utilities that use the proc filesystem" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=23.3 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://fossies.org/linux/misc/psmisc-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_SHA256=41750e1a5abf7ed2647b094f58127c73dbce6876f77ba4e0a7e0995ae5c7279a TERMUX_PKG_DEPENDS="ncurses" diff --git a/packages/psmisc/pstree.patch b/packages/psmisc/pstree.patch deleted file mode 100644 index 572fbffb4..000000000 --- a/packages/psmisc/pstree.patch +++ /dev/null @@ -1,35 +0,0 @@ -Default to UTF-8 - may be overridden by command line flags. - -diff -u -r ../psmisc-22.21/src/pstree.c ./src/pstree.c ---- ../psmisc-22.21/src/pstree.c 2014-02-02 06:59:07.000000000 +0100 -+++ ./src/pstree.c 2014-06-30 18:35:12.064021186 +0200 -@@ -36,7 +36,9 @@ - #include - #include - #include --#include -+#ifndef __ANDROID__ -+# include -+#endif - #include - #include - #include -@@ -1087,6 +1089,10 @@ - * command-line options, if given. - */ - -+#ifdef __ANDROID__ -+ /* Droids love unicode */ -+ sym = &sym_utf; -+#else - if (isatty(1) && !strcmp(nl_langinfo(CODESET), "UTF-8")) { - /* Use UTF-8 symbols if the locale's character set is UTF-8. */ - sym = &sym_utf; -@@ -1106,6 +1112,7 @@ - /* Otherwise, fall back to ASCII. */ - sym = &sym_ascii; - } -+#endif - - #ifdef WITH_SELINUX - while ((c = diff --git a/packages/psmisc/src-killall.c.patch b/packages/psmisc/src-killall.c.patch new file mode 100644 index 000000000..c1491ed73 --- /dev/null +++ b/packages/psmisc/src-killall.c.patch @@ -0,0 +1,39 @@ +diff -u -r ../psmisc-23.3/src/killall.c ./src/killall.c +--- ../psmisc-23.3/src/killall.c 2019-09-19 23:21:56.148427745 +0000 ++++ ./src/killall.c 2020-01-12 00:31:59.382124339 +0000 +@@ -44,6 +44,10 @@ + #include + #include + ++#ifdef __ANDROID__ ++#include ++#endif ++ + #ifdef WITH_SELINUX + #include + #endif /*WITH_SELINUX*/ +@@ -132,6 +136,16 @@ + static double + uptime() + { ++#ifdef __ANDROID__ ++ /* Android does not allow read access to /proc/uptime */ ++ struct sysinfo system_information; ++ if (sysinfo(&system_information) == 0) { ++ return (double) system_information.uptime; ++ } else { ++ fprintf(stderr, "pstree: error obtaining uptime from sysinfo\n"); ++ exit(1); ++ } ++#else + char * savelocale; + char buf[2048]; + FILE* file; +@@ -144,6 +158,7 @@ + fclose(file); + setlocale(LC_NUMERIC,savelocale); + return atof(buf); ++#endif + } + + /* process age from jiffies to seconds via uptime */ diff --git a/packages/psmisc/src-pstree.c.patch b/packages/psmisc/src-pstree.c.patch new file mode 100644 index 000000000..bc72de7e9 --- /dev/null +++ b/packages/psmisc/src-pstree.c.patch @@ -0,0 +1,69 @@ +diff -u -r ../psmisc-23.3/src/pstree.c ./src/pstree.c +--- ../psmisc-23.3/src/pstree.c 2019-10-23 10:40:19.516725375 +0000 ++++ ./src/pstree.c 2020-01-12 00:27:42.797645090 +0000 +@@ -36,7 +36,9 @@ + #include + #include + #include +-#include ++#ifndef __ANDROID__ ++# include ++#endif + #include + #include + #include +@@ -47,6 +49,10 @@ + #include "i18n.h" + #include "comm.h" + ++#ifdef __ANDROID__ ++#include ++#endif ++ + #ifdef WITH_SELINUX + #include + #else +@@ -904,6 +910,16 @@ + static double + uptime() + { ++#ifdef __ANDROID__ ++ /* Android does not allow read access to /proc/uptime */ ++ struct sysinfo system_information; ++ if (sysinfo(&system_information) == 0) { ++ return (double) system_information.uptime; ++ } else { ++ fprintf(stderr, "pstree: error obtaining uptime from sysinfo\n"); ++ exit(1); ++ } ++#else + char * savelocale; + char buf[2048]; + FILE* file; +@@ -916,6 +932,7 @@ + fclose(file); + setlocale(LC_NUMERIC,savelocale); + return atof(buf); ++#endif + } + + /* process age from jiffies to seconds via uptime */ +@@ -1292,6 +1309,10 @@ + * command-line options, if given. + */ + ++#ifdef __ANDROID__ ++ /* Droids love unicode */ ++ sym = &sym_utf; ++#else + if (isatty(1) && !strcmp(nl_langinfo(CODESET), "UTF-8")) { + /* Use UTF-8 symbols if the locale's character set is UTF-8. */ + sym = &sym_utf; +@@ -1311,6 +1332,7 @@ + /* Otherwise, fall back to ASCII. */ + sym = &sym_ascii; + } ++#endif + + #ifdef WITH_SELINUX + while ((c =