]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix getopt-vs-init_ps_display problem by copying original argv[] info,
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 21 Oct 2001 03:25:36 +0000 (03:25 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 21 Oct 2001 03:25:36 +0000 (03:25 +0000)
per suggestion from Peter.  Simplify several APIs by transmitting the
original argv location directly from main.c to ps_status.c, instead of
passing it down through several levels of subroutines.

src/backend/main/main.c
src/backend/postmaster/pgstat.c
src/backend/postmaster/postmaster.c
src/backend/tcop/postgres.c
src/backend/utils/init/globals.c
src/backend/utils/misc/ps_status.c
src/include/miscadmin.h
src/include/pgstat.h
src/include/tcop/tcopprot.h
src/include/utils/ps_status.h

index 9f64d6a346307edf24b7cc04dc3d3b3e756bd1ac..5c4b2accd818b389246ced4e1001a00bdda39399 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.45 2001/06/03 14:53:56 petere Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.46 2001/10/21 03:25:35 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "miscadmin.h"
 #include "bootstrap/bootstrap.h"
 #include "tcop/tcopprot.h"
+#include "utils/ps_status.h"
 
 
 
 int
 main(int argc, char *argv[])
 {
+       char      **new_argv;
+       int                     i;
        int                     len;
        struct passwd *pw;
        char       *pw_name_persist;
@@ -91,6 +94,12 @@ main(int argc, char *argv[])
        beos_startup(argc, argv);
 #endif
 
+       /*
+        * Not-quite-so-platform-specific startup environment checks. Still
+        * best to minimize these.
+        */
+
+       /* Initialize NLS settings so we can give localized error messages */
 #ifdef ENABLE_NLS
 #ifdef LC_MESSAGES
        setlocale(LC_MESSAGES, "");
@@ -99,11 +108,6 @@ main(int argc, char *argv[])
        textdomain("postgres");
 #endif
 
-       /*
-        * Not-quite-so-platform-specific startup environment checks. Still
-        * best to minimize these.
-        */
-
        /*
         * Skip permission checks if we're just trying to do --help or --version;
         * otherwise root will get unhelpful failure messages from initdb.
@@ -164,26 +168,47 @@ main(int argc, char *argv[])
        setlocale(LC_MONETARY, "");
 #endif
 
+       /*
+        * Remember the physical location of the initially given argv[] array,
+        * since on some platforms that storage must be overwritten in order
+        * to set the process title for ps.  Then make a copy of the argv[]
+        * array for subsequent use, so that argument parsing doesn't get
+        * affected if init_ps_display overwrites the original argv[].
+        *
+        * (NB: do NOT think to remove this copying, even though postmaster.c
+        * finishes looking at argv[] long before we ever consider changing
+        * the ps display.  On some platforms, getopt(3) keeps pointers into
+        * the argv array, and will get horribly confused when it is re-called
+        * to analyze a subprocess' argument string if the argv storage has
+        * been clobbered meanwhile.)
+        */
+       save_ps_display_args(argc, argv);
+
+       new_argv = (char **) malloc((argc + 1) * sizeof(char *));
+       for (i = 0; i < argc; i++)
+               new_argv[i] = strdup(argv[i]);
+       new_argv[argc] = NULL;
+
        /*
         * Now dispatch to one of PostmasterMain, PostgresMain, or
         * BootstrapMain depending on the program name (and possibly first
         * argument) we were called with.  The lack of consistency here is
         * historical.
         */
-       len = strlen(argv[0]);
+       len = strlen(new_argv[0]);
 
-       if (len >= 10 && strcmp(argv[0] + len - 10, "postmaster") == 0)
+       if (len >= 10 && strcmp(new_argv[0] + len - 10, "postmaster") == 0)
        {
                /* Called as "postmaster" */
-               exit(PostmasterMain(argc, argv));
+               exit(PostmasterMain(argc, new_argv));
        }
 
        /*
         * If the first argument is "-boot", then invoke bootstrap mode. Note
         * we remove "-boot" from the arguments passed on to BootstrapMain.
         */
-       if (argc > 1 && strcmp(argv[1], "-boot") == 0)
-               exit(BootstrapMain(argc - 1, argv + 1));
+       if (argc > 1 && strcmp(new_argv[1], "-boot") == 0)
+               exit(BootstrapMain(argc - 1, new_argv + 1));
 
        /*
         * Otherwise we're a standalone backend.  Invoke PostgresMain,
@@ -194,11 +219,11 @@ main(int argc, char *argv[])
        if (pw == NULL)
        {
                fprintf(stderr, gettext("%s: invalid current euid %d\n"),
-                               argv[0], (int) geteuid());
+                               new_argv[0], (int) geteuid());
                exit(1);
        }
        /* Allocate new memory because later getpwuid() calls can overwrite it */
        pw_name_persist = strdup(pw->pw_name);
 
-       exit(PostgresMain(argc, argv, argc, argv, pw_name_persist));
+       exit(PostgresMain(argc, new_argv, pw_name_persist));
 }
index c7e83fe9da4f3a67a8040c82029fbb25ae383438..44ce0b750f6f48d4d817d21353131bfe8cffb927 100644 (file)
@@ -16,7 +16,7 @@
  *
  *     Copyright (c) 2001, PostgreSQL Global Development Group
  *
- *     $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.11 2001/10/16 22:35:27 tgl Exp $
+ *     $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.12 2001/10/21 03:25:35 tgl Exp $
  * ----------
  */
 #include "postgres.h"
@@ -95,8 +95,8 @@ static char                                   pgStat_fname[MAXPGPATH];
  * Local function forward declarations
  * ----------
  */
-static void            pgstat_main(int real_argc, char *real_argv[]);
-static void            pgstat_recvbuffer(int real_argc, char *real_argv[]);
+static void            pgstat_main(void);
+static void            pgstat_recvbuffer(void);
 static void            pgstat_die(SIGNAL_ARGS);
 
 static int             pgstat_add_backend(PgStat_MsgHdr *msg);
@@ -246,13 +246,10 @@ pgstat_init(void)
  *
  *     Called from postmaster at startup or after an existing collector
  *     died.  Fire up a fresh statistics collector.
- *
- *     The process' original argc and argv are passed, because they are
- *     needed by init_ps_display() on some platforms.
  * ----------
  */
 int
-pgstat_start(int real_argc, char *real_argv[])
+pgstat_start(void)
 {
        /*
         * Do nothing if no collector needed
@@ -316,7 +313,7 @@ pgstat_start(int real_argc, char *real_argv[])
        /* Close the postmaster's sockets, except for pgstat link */
        ClosePostmasterPorts(false);
 
-       pgstat_main(real_argc, real_argv);
+       pgstat_main();
 
        exit(0);
 }
@@ -1104,7 +1101,7 @@ pgstat_send(void *msg, int len)
  * ----------
  */
 static void
-pgstat_main(int real_argc, char *real_argv[])
+pgstat_main(void)
 {
        PgStat_Msg      msg;
        fd_set                  rfds;
@@ -1176,7 +1173,7 @@ pgstat_main(int real_argc, char *real_argv[])
                default:
                        /* parent becomes buffer process */
                        close(pgStatPipe[0]);
-                       pgstat_recvbuffer(real_argc, real_argv);
+                       pgstat_recvbuffer();
                        exit(0);
        }
 
@@ -1192,7 +1189,7 @@ pgstat_main(int real_argc, char *real_argv[])
         * WARNING: On some platforms the environment will be moved around to
         * make room for the ps display string.
         */
-       init_ps_display(real_argc, real_argv, "stats collector process", "", "");
+       init_ps_display("stats collector process", "", "");
        set_ps_display("");
 
        /*
@@ -1451,7 +1448,7 @@ pgstat_main(int real_argc, char *real_argv[])
  * ----------
  */
 static void
-pgstat_recvbuffer(int real_argc, char *real_argv[])
+pgstat_recvbuffer(void)
 {
        fd_set                          rfds;
        fd_set                          wfds;
@@ -1477,7 +1474,7 @@ pgstat_recvbuffer(int real_argc, char *real_argv[])
         * WARNING: On some platforms the environment will be moved around to
         * make room for the ps display string.
         */
-       init_ps_display(real_argc, real_argv, "stats buffer process", "", "");
+       init_ps_display("stats buffer process", "", "");
        set_ps_display("");
 
        /*
index c8f703880de9d2d615ed5706dde6c9392828929c..5009185952dd594819261ac1de418a316ca294f7 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.249 2001/10/19 20:47:09 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.250 2001/10/21 03:25:35 tgl Exp $
  *
  * NOTES
  *
@@ -153,8 +153,6 @@ int                 MaxBackends = DEF_MAXBACKENDS;
 
 
 static char *progname = (char *) NULL;
-static char **real_argv;
-static int     real_argc;
 
 /* flag to indicate that SIGHUP arrived during server loop */
 static volatile bool got_SIGHUP = false;
@@ -228,9 +226,6 @@ extern int  optind,
 #ifdef HAVE_INT_OPTRESET
 extern int     optreset;
 #endif
-#ifdef HAVE_INT___GETOPT_INITIALIZED
-extern int     __getopt_initialized;
-#endif
 
 /*
  * postmaster.c - function prototypes
@@ -337,8 +332,6 @@ PostmasterMain(int argc, char *argv[])
        *original_extraoptions = '\0';
 
        progname = argv[0];
-       real_argv = argv;
-       real_argc = argc;
 
        /*
         * Catch standard options before doing much else.  This even works on
@@ -444,10 +437,7 @@ PostmasterMain(int argc, char *argv[])
        /* reset getopt(3) to rescan arguments */
        optind = 1;
 #ifdef HAVE_INT_OPTRESET
-       optreset = 1;                           /* some systems need this */
-#endif
-#ifdef HAVE_INT___GETOPT_INITIALIZED
-       __getopt_initialized = 0;       /* glibc needs this */
+       optreset = 1;                           /* some systems need this too */
 #endif
 
        while ((opt = getopt(argc, argv, "A:a:B:b:c:D:d:Fh:ik:lm:MN:no:p:Ss-:")) != EOF)
@@ -599,10 +589,7 @@ PostmasterMain(int argc, char *argv[])
         */
        optind = 1;
 #ifdef HAVE_INT_OPTRESET
-       optreset = 1;                           /* some systems need this */
-#endif
-#ifdef HAVE_INT___GETOPT_INITIALIZED
-       __getopt_initialized = 0;       /* glibc needs this */
+       optreset = 1;                           /* some systems need this too */
 #endif
 
        /* For debugging: display postmaster environment */
@@ -619,6 +606,13 @@ PostmasterMain(int argc, char *argv[])
                fprintf(stderr, "-----------------------------------------\n");
        }
 
+       /*
+        * On some systems our dynloader code needs the executable's pathname.
+        */
+       if (FindExec(pg_pathname, progname, "postgres") < 0)
+               elog(FATAL, "%s: could not locate executable, bailing out...",
+                        progname);
+
        /*
         * Initialize SSL library, if specified.
         */
@@ -742,7 +736,7 @@ PostmasterMain(int argc, char *argv[])
         */
        if (pgstat_init() < 0)
                ExitPostmaster(1);
-       if (pgstat_start(real_argc, real_argv) < 0)
+       if (pgstat_start() < 0)
                ExitPostmaster(1);
 
        /*
@@ -1570,7 +1564,7 @@ reaper(SIGNAL_ARGS)
                        else if (WIFSIGNALED(exitstatus))
                                elog(DEBUG, "statistics collector was terminated by signal %d",
                                         WTERMSIG(exitstatus));
-                       pgstat_start(real_argc, real_argv);
+                       pgstat_start();
                        continue;
                }
 
@@ -1848,6 +1842,17 @@ BackendStartup(Port *port)
         */
        MyCancelKey = PostmasterRandom();
 
+       /*
+        * Make room for backend data structure.  Better before the fork()
+        * so we can handle failure cleanly.
+        */
+       bn = (Backend *) malloc(sizeof(Backend));
+       if (!bn)
+       {
+               elog(DEBUG, "out of memory; connection startup aborted");
+               return STATUS_ERROR;
+       }
+
        /*
         * Flush stdio channels just before fork, to avoid double-output
         * problems. Ideally we'd use fflush(NULL) here, but there are still a
@@ -1864,17 +1869,6 @@ BackendStartup(Port *port)
        beos_before_backend_startup();
 #endif
 
-       /*
-        * Make room for backend data structure.  Better before the fork()
-        * so we can handle failure cleanly.
-        */
-       bn = (Backend *) malloc(sizeof(Backend));
-       if (!bn)
-       {
-               elog(DEBUG, "out of memory; connection startup aborted");
-               return STATUS_ERROR;
-       }
-
        pid = fork();
 
        if (pid == 0)                           /* child */
@@ -1912,8 +1906,8 @@ BackendStartup(Port *port)
 
        /* in parent, normal */
        if (DebugLvl >= 1)
-               elog(DEBUG, "BackendStartup: pid=%d user=%s db=%s socket=%d\n",
-                        pid, port->user, port->database, port->sock);
+               elog(DEBUG, "BackendStartup: forked pid=%d socket=%d",
+                        pid, port->sock);
 
        /*
         * Everything's been successful, it's safe to add this backend to our
@@ -2103,8 +2097,7 @@ DoBackend(Port *port)
         * optarg or getenv() from above will be invalid after this call.
         * Better use strdup or something similar.
         */
-       init_ps_display(real_argc, real_argv, port->user, port->database,
-                                       remote_host);
+       init_ps_display(port->user, port->database, remote_host);
        set_ps_display("authentication");
 
        /*
@@ -2223,7 +2216,7 @@ DoBackend(Port *port)
                fprintf(stderr, ")\n");
        }
 
-       return (PostgresMain(ac, av, real_argc, real_argv, port->user));
+       return (PostgresMain(ac, av, port->user));
 }
 
 /*
@@ -2469,7 +2462,7 @@ SSDataBase(int xlop)
                                statmsg = "??? subprocess";
                                break;
                }
-               init_ps_display(real_argc, real_argv, statmsg, "", "");
+               init_ps_display(statmsg, "", "");
                set_ps_display("");
 
                /* Set up command-line arguments for subprocess */
@@ -2568,7 +2561,7 @@ CreateOptsFile(int argc, char *argv[])
        FILE       *fp;
        unsigned        i;
 
-       if (FindExec(fullprogname, argv[0], "postmaster") == -1)
+       if (FindExec(fullprogname, argv[0], "postmaster") < 0)
                return false;
 
        filename = palloc(strlen(DataDir) + 20);
index e2f8662933551f5281a734619a39992d21201eb5..ce7ccb2af5c88f5fd7328dcf927e1d0b2e131a0f 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.237 2001/10/19 18:19:41 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.238 2001/10/21 03:25:35 tgl Exp $
  *
  * NOTES
  *       this is the "main" module of the postgres backend and
@@ -86,7 +86,6 @@ bool          Warn_restart_ready = false;
 bool           InError = false;
 
 static bool EchoQuery = false; /* default don't echo */
-char           pg_pathname[MAXPGPATH];
 FILE      *StatFp = NULL;
 
 /* ----------------
@@ -1097,17 +1096,14 @@ usage(char *progname)
  * PostgresMain
  *        postgres main loop -- all backends, interactive or otherwise start here
  *
- * argc/argv are the command line arguments to be used.  When being forked
- * by the postmaster, these are not the original argv array of the process.
- * real_argc/real_argv point to the original argv array, which is needed by
- * `ps' display on some platforms. username is the (possibly authenticated)
- * PostgreSQL user name to be used for the session.
+ * argc/argv are the command line arguments to be used.  (When being forked
+ * by the postmaster, these are not the original argv array of the process.)
+ * username is the (possibly authenticated) PostgreSQL user name to be used
+ * for the session.
  * ----------------------------------------------------------------
  */
 int
-PostgresMain(int argc, char *argv[],
-                        int real_argc, char *real_argv[],
-                        const char *username)
+PostgresMain(int argc, char *argv[], const char *username)
 {
        int                     flag;
 
@@ -1581,6 +1577,14 @@ PostgresMain(int argc, char *argv[],
                        proc_exit(1);
                }
 
+               /*
+                * On some systems our dynloader code needs the executable's
+                * pathname.  (If under postmaster, this was done already.)
+                */
+               if (FindExec(pg_pathname, argv[0], "postgres") < 0)
+                       elog(FATAL, "%s: could not locate executable, bailing out...",
+                                argv[0]);
+
                /*
                 * Validate we have been given a reasonable-looking DataDir
                 * (if under postmaster, assume postmaster did this already).
@@ -1612,11 +1616,6 @@ PostgresMain(int argc, char *argv[],
        SetCharSet();
 #endif
 
-       /* On some systems our dynloader code needs the executable's pathname */
-       if (FindExec(pg_pathname, real_argv[0], "postgres") < 0)
-               elog(FATAL, "%s: could not locate executable, bailing out...",
-                        real_argv[0]);
-
        /*
         * General initialization.
         *
@@ -1649,7 +1648,7 @@ PostgresMain(int argc, char *argv[],
        if (!IsUnderPostmaster)
        {
                puts("\nPOSTGRES backend interactive interface ");
-               puts("$Revision: 1.237 $ $Date: 2001/10/19 18:19:41 $\n");
+               puts("$Revision: 1.238 $ $Date: 2001/10/21 03:25:35 $\n");
        }
 
        /*
index 3a5ddee7bbf480a829d1ce671fca888995853a8b..c6dafb9e2f064ce03855b4290c40ff9e16b99677 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.60 2001/09/21 03:32:35 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.61 2001/10/21 03:25:35 tgl Exp $
  *
  * NOTES
  *       Globals used all over the place should be declared here and not
@@ -55,7 +55,9 @@ char     *DataDir = NULL;
 
 Relation       reldesc;                        /* current relation descriptor */
 
-char           OutputFileName[MAXPGPATH] = "";
+char           OutputFileName[MAXPGPATH];
+
+char           pg_pathname[MAXPGPATH]; /* full path to postgres executable */
 
 BackendId      MyBackendId;
 
index adde64632705cdfa7e433117135e8ef8f281adf1..98fff4db5b4191312a7e95912affcdee8b11f066 100644 (file)
@@ -2,10 +2,10 @@
  * ps_status.c
  *
  * Routines to support changing the ps display of PostgreSQL backends
- * to contain some useful information. Differs wildly across
+ * to contain some useful information. Mechanism differs wildly across
  * platforms.
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/misc/ps_status.c,v 1.5 2001/10/05 15:47:48 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/misc/ps_status.c,v 1.6 2001/10/21 03:25:35 tgl Exp $
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  * various details abducted from various places
@@ -15,8 +15,6 @@
 #include "postgres.h"
 
 #include <unistd.h>
-
-
 #ifdef HAVE_SYS_PSTAT_H
 #include <sys/pstat.h>                 /* for HP-UX */
 #endif
@@ -26,7 +24,6 @@
 #endif
 
 #include "miscadmin.h"
-
 #include "utils/ps_status.h"
 
 extern char **environ;
@@ -91,14 +88,29 @@ static size_t ps_buffer_size;       /* space determined at run time */
 
 static size_t ps_buffer_fixed_size;            /* size of the constant prefix */
 
+/* save the original argv[] location here */
+static int     save_argc;
+static char **save_argv;
 
 
 /*
- * Call this once at backend start.
+ * Call this early in startup to save the original argc/argv values.
+ * argv[] will not be overwritten by this routine, but may be overwritten
+ * during init_ps_display.
  */
 void
-init_ps_display(int argc, char *argv[],
-                               const char *username, const char *dbname,
+save_ps_display_args(int argc, char *argv[])
+{
+       save_argc = argc;
+       save_argv = argv;
+}
+
+/*
+ * Call this once during subprocess startup to set the identification
+ * values.  At this point, the original argv[] array may be overwritten.
+ */
+void
+init_ps_display(const char *username, const char *dbname,
                                const char *host_info)
 {
 #ifndef PS_USE_NONE
@@ -109,9 +121,13 @@ init_ps_display(int argc, char *argv[],
        if (!IsUnderPostmaster)
                return;
 
+       /* no ps display if you didn't call save_ps_display_args() */
+       if (!save_argv)
+               return;
+
 #ifdef PS_USE_CHANGE_ARGV
-       argv[0] = ps_buffer;
-       argv[1] = NULL;
+       save_argv[0] = ps_buffer;
+       save_argv[1] = NULL;
 #endif  /* PS_USE_CHANGE_ARGV */
 
 #ifdef PS_USE_CLOBBER_ARGV
@@ -127,9 +143,9 @@ init_ps_display(int argc, char *argv[],
                /*
                 * check for contiguous argv strings
                 */
-               for (i = 0; i < argc; i++)
-                       if (i == 0 || end_of_area + 1 == argv[i])
-                               end_of_area = argv[i] + strlen(argv[i]);
+               for (i = 0; i < save_argc; i++)
+                       if (i == 0 || end_of_area + 1 == save_argv[i])
+                               end_of_area = save_argv[i] + strlen(save_argv[i]);
 
                /*
                 * check for contiguous environ strings following argv
@@ -142,13 +158,14 @@ init_ps_display(int argc, char *argv[],
                {
                        ps_buffer = NULL;
                        ps_buffer_size = 0;
+                       return;
                }
                else
                {
-                       ps_buffer = argv[0];
-                       ps_buffer_size = end_of_area - argv[0] - 1;
+                       ps_buffer = save_argv[0];
+                       ps_buffer_size = end_of_area - save_argv[0] - 1;
                }
-               argv[1] = NULL;
+               save_argv[1] = NULL;
 
                /*
                 * move the environment out of the way
@@ -192,7 +209,7 @@ init_ps_display(int argc, char *argv[],
  * indication of what you're currently doing passed in the argument.
  */
 void
-set_ps_display(const char *value)
+set_ps_display(const char *activity)
 {
 #ifndef PS_USE_NONE
        /* no ps display for stand-alone backend */
@@ -205,8 +222,8 @@ set_ps_display(const char *value)
                return;
 #endif
 
-       /* Update ps_buffer to contain both fixed part and value */
-       StrNCpy(ps_buffer + ps_buffer_fixed_size, value,
+       /* Update ps_buffer to contain both fixed part and activity */
+       StrNCpy(ps_buffer + ps_buffer_fixed_size, activity,
                        ps_buffer_size - ps_buffer_fixed_size);
 
        /* Transmit new setting to kernel, if necessary */
@@ -247,7 +264,7 @@ set_ps_display(const char *value)
 
 /*
  * Returns what's currently in the ps display, in case someone needs
- * it. Note that only the variable part is returned.
+ * it. Note that only the activity part is returned.
  */
 const char *
 get_ps_display(void)
index 1257faf0059b88f9e910ab74ffc3daa19a490215..70d19f8192939d92402d60820f0b4010177b7c9e 100644 (file)
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: miscadmin.h,v 1.93 2001/09/29 04:02:26 tgl Exp $
+ * $Id: miscadmin.h,v 1.94 2001/10/21 03:25:35 tgl Exp $
  *
  * NOTES
  *       some of the information in this file should be moved to
@@ -121,6 +121,7 @@ extern struct Port *MyProcPort;
 extern long MyCancelKey;
 
 extern char OutputFileName[];
+extern char pg_pathname[];
 
 /*
  * done in storage/backendid.h for now.
index 0a566e8582e80857f45c7dc9ae1f551147322483..5295d08ae052a6c1646e170b2edaecc787cd401c 100644 (file)
@@ -5,7 +5,7 @@
  *
  *     Copyright (c) 2001, PostgreSQL Global Development Group
  *
- *  $Id: pgstat.h,v 1.7 2001/09/03 12:00:00 petere Exp $
+ *  $Id: pgstat.h,v 1.8 2001/10/21 03:25:36 tgl Exp $
  * ----------
  */
 #ifndef PGSTAT_H
@@ -333,7 +333,7 @@ extern bool         pgstat_collect_blocklevel;
  * ----------
  */
 extern int             pgstat_init(void);
-extern int             pgstat_start(int real_argc, char *real_argv[]);
+extern int             pgstat_start(void);
 extern int             pgstat_ispgstat(int pid);
 extern void            pgstat_close_sockets(void);
 extern void            pgstat_beterm(int pid);
index dccea51fe253edc572948bcd95d78390ec076d57..ff1bfadf5809c21cdb8a3d73a099762f95f45ee5 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: tcopprot.h,v 1.42 2001/09/07 16:12:49 wieck Exp $
+ * $Id: tcopprot.h,v 1.43 2001/10/21 03:25:36 tgl Exp $
  *
  * OLD COMMENTS
  *       This file was created so that other c files could get the two
@@ -45,8 +45,7 @@ extern void pg_exec_query_string(char *query_string,
 extern void die(SIGNAL_ARGS);
 extern void quickdie(SIGNAL_ARGS);
 extern void authdie(SIGNAL_ARGS);
-extern int PostgresMain(int argc, char *argv[],
-                        int real_argc, char *real_argv[], const char *username);
+extern int PostgresMain(int argc, char *argv[], const char *username);
 extern void ResetUsage(void);
 extern void ShowUsage(void);
 extern FILE *StatFp;
index 9690a156ae1421047a02be7bca9141aed3b9d927..fb4a52dce4124162bfdd7958900da743b6971b24 100644 (file)
@@ -4,20 +4,21 @@
  *
  * Declarations for backend/utils/misc/ps_status.c
  *
+ * $Id: ps_status.h,v 1.20 2001/10/21 03:25:36 tgl Exp $
+ *
  *-------------------------------------------------------------------------
  */
 
 #ifndef PS_STATUS_H
 #define PS_STATUS_H
 
-void init_ps_display(int argc, char *argv[],
-                               const char *username, const char *dbname,
-                               const char *host_info);
+extern void save_ps_display_args(int argc, char *argv[]);
+
+extern void init_ps_display(const char *username, const char *dbname,
+                                                       const char *host_info);
 
-void
-                       set_ps_display(const char *value);
+extern void set_ps_display(const char *activity);
 
-const char *
-                       get_ps_display(void);
+extern const char *get_ps_display(void);
 
 #endif  /* PS_STATUS_H */