]> granicus.if.org Git - postgresql/commitdiff
Fix process-status handling for OS X 10.3.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 8 Nov 2003 19:07:24 +0000 (19:07 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 8 Nov 2003 19:07:24 +0000 (19:07 +0000)
src/backend/utils/misc/ps_status.c

index a357260362199bf54bb5f265a6129c907619e6c4..d727dfe9fb6bae84973ca6135e609c01ebf40f4a 100644 (file)
@@ -5,7 +5,7 @@
  * to contain some useful information. Mechanism differs wildly across
  * platforms.
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/misc/ps_status.c,v 1.14 2003/08/04 23:59:39 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/misc/ps_status.c,v 1.15 2003/11/08 19:07:24 tgl Exp $
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  * various details abducted from various places
@@ -57,7 +57,7 @@ extern char **environ;
 #define PS_USE_PSTAT
 #elif defined(HAVE_PS_STRINGS)
 #define PS_USE_PS_STRINGS
-#elif defined(BSD) || defined(__bsdi__) || defined(__hurd__)
+#elif (defined(BSD) || defined(__bsdi__) || defined(__hurd__)) && !defined(__darwin__)
 #define PS_USE_CHANGE_ARGV
 #elif defined(__linux__) || defined(_AIX) || defined(__sgi) || (defined(sun) && !defined(BSD)) || defined(ultrix) || defined(__ksr__) || defined(__osf__) || defined(__QNX__) || defined(__svr4__) || defined(__svr5__) || defined(__darwin__)
 #define PS_USE_CLOBBER_ARGV
@@ -143,7 +143,7 @@ save_ps_display_args(int argc, char *argv[])
                }
 
                ps_buffer = argv[0];
-               ps_buffer_size = end_of_area - argv[0] - 1;
+               ps_buffer_size = end_of_area - argv[0];
 
                /*
                 * move the environment out of the way
@@ -193,7 +193,13 @@ init_ps_display(const char *username, const char *dbname,
 #endif   /* PS_USE_CHANGE_ARGV */
 
 #ifdef PS_USE_CLOBBER_ARGV
-       save_argv[1] = NULL;
+       {
+               int             i;
+
+               /* make extra argv slots point at end_of_area (a NUL) */
+               for (i = 1; i < save_argc; i++)
+                       save_argv[i] = ps_buffer + ps_buffer_size;
+       }
 #endif   /* PS_USE_CLOBBER_ARGV */
 
        /*