Fixups for the android/bionic build probes patch.
authorRob Landley <rob@landley.net>
Wed, 19 Nov 2014 22:55:12 +0000 (16:55 -0600)
committerRob Landley <rob@landley.net>
Wed, 19 Nov 2014 22:55:12 +0000 (16:55 -0600)
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.

lib/portability.h
scripts/genconfig.sh
toys/other/uptime.c

index 5383efa..0dace96 100644 (file)
@@ -188,14 +188,16 @@ ssize_t getline(char **lineptr, size_t *n, FILE *stream);
 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
 
 
index e040aea..e59aa39 100755 (executable)
@@ -62,7 +62,7 @@ EOF
   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
 
index f584d9a..91887df 100644 (file)
@@ -10,6 +10,7 @@ USE_UPTIME(NEWTOY(uptime, NULL, TOYFLAG_USR|TOYFLAG_BIN))
 config UPTIME
   bool "uptime"
   default y
+  depends on TOYBOX_UTMPX
   help
     usage: uptime
 
@@ -25,8 +26,8 @@ void uptime_main(void)
   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 @@ void uptime_main(void)
   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 @@ void uptime_main(void)
   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);
 }