changeset 1565:a3500bd8b322 draft

Fixups for the android/bionic build probes patch. The CFG_* symbols are always defined so if() can use them as compile-time constants, so don't if defined() them. Doing USE_BLAH() around variable definitions opens up the same potential for config-dependent build breaks as #ifdefs do, just make the whole command depend on the symbol for now, factor out the utmpx infrastructure later. The PTY probe was always failing because it used NULL without #including the header that defines it. Substitute 0 instead.
author Rob Landley <rob@landley.net>
date Wed, 19 Nov 2014 16:55:12 -0600
parents 685a0da6ca59
children 62a7d617e1ce
files lib/portability.h scripts/genconfig.sh toys/other/uptime.c
diffstat 3 files changed, 13 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lib/portability.h	Wed Nov 19 16:38:46 2014 -0600
+++ b/lib/portability.h	Wed Nov 19 16:55:12 2014 -0600
@@ -188,14 +188,16 @@
 int sethostname(const char *name, size_t len);
 #endif
 // "generated/config.h" is included first
-#if defined(CFG_TOYBOX_SHADOW) && CFG_TOYBOX_SHADOW
+#if CFG_TOYBOX_SHADOW
 #include <shadow.h>
 #endif
-#if defined(CFG_TOYBOX_UTMPX) && CFG_TOYBOX_UTMPX
+#if CFG_TOYBOX_UTMPX
 #include <utmpx.h>
 #endif
-#if defined(CFG_TOYBOX_PTY) && CFG_TOYBOX_PTY
+#if CFG_TOYBOX_PTY
 #include <pty.h>
+#else
+pid_t forkpty(int *amaster, char *name, void *termp, void *winp);
 #endif
 
 
--- a/scripts/genconfig.sh	Wed Nov 19 16:38:46 2014 -0600
+++ b/scripts/genconfig.sh	Wed Nov 19 16:55:12 2014 -0600
@@ -62,7 +62,7 @@
   probesymbol TOYBOX_PTY -c << EOF
     #include <pty.h>
     int main(int argc, char *argv[]) {
-      int master; return forkpty(&master, NULL, NULL, NULL);
+      int master; return forkpty(&master, 0, 0, 0);
     }
 EOF
 
--- a/toys/other/uptime.c	Wed Nov 19 16:38:46 2014 -0600
+++ b/toys/other/uptime.c	Wed Nov 19 16:55:12 2014 -0600
@@ -10,6 +10,7 @@
 config UPTIME
   bool "uptime"
   default y
+  depends on TOYBOX_UTMPX
   help
     usage: uptime
 
@@ -25,8 +26,8 @@
   time_t tmptime;
   struct tm * now;
   unsigned int days, hours, minutes;
-  USE_TOYBOX_UTMPX(struct utmpx *entry;)
-  USE_TOYBOX_UTMPX(int users = 0;)
+  struct utmpx *entry;
+  int users = 0;
 
   // Obtain the data we need.
   sysinfo(&info);
@@ -34,9 +35,9 @@
   now = localtime(&tmptime);
 
   // Obtain info about logged on users
-  USE_TOYBOX_UTMPX(setutxent();)
-  USE_TOYBOX_UTMPX(while ((entry = getutxent())) if (entry->ut_type == USER_PROCESS) users++;)
-  USE_TOYBOX_UTMPX(endutxent();)
+  setutxent();
+  while ((entry = getutxent())) if (entry->ut_type == USER_PROCESS) users++;
+  endutxent();
 
   // Time
   xprintf(" %02d:%02d:%02d up ", now->tm_hour, now->tm_min, now->tm_sec);
@@ -49,7 +50,7 @@
   if (days) xprintf("%d day%s, ", days, (days!=1)?"s":"");
   if (hours) xprintf("%2d:%02d, ", hours, minutes);
   else printf("%d min, ", minutes);
-  USE_TOYBOX_UTMPX(printf(" %d user%s, ", users, (users!=1) ? "s" : "");)
+  printf(" %d user%s, ", users, (users!=1) ? "s" : "");
   printf(" load average: %.02f, %.02f, %.02f\n", info.loads[0]/65536.0,
     info.loads[1]/65536.0, info.loads[2]/65536.0);
 }