diff -uNr psmisc/src/pstree.c psmisc.mod/src/pstree.c --- psmisc/src/pstree.c 2022-03-18 06:06:43.006913676 +0800 +++ psmisc.mod/src/pstree.c 2022-08-04 00:04:01.363949569 +0800 @@ -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 #include @@ -961,6 +967,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; @@ -973,6 +989,7 @@ fclose(file); setlocale(LC_NUMERIC,savelocale); return atof(buf); +#endif } /* process age from jiffies to seconds via uptime */ @@ -1327,6 +1344,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; @@ -1346,6 +1367,7 @@ /* Otherwise, fall back to ASCII. */ sym = &sym_ascii; } +#endif while ((c = getopt_long(argc, argv, "aAcC:GhH:nN:pglsStTuUVZ", options,