aboutsummaryrefslogtreecommitdiff
path: root/src/backend/postmaster/postmaster.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/postmaster/postmaster.c')
-rw-r--r--src/backend/postmaster/postmaster.c125
1 files changed, 13 insertions, 112 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index bad51715b28..b578bc038f7 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.145 2000/06/02 15:57:22 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.146 2000/06/04 01:44:31 petere Exp $
*
* NOTES
*
@@ -33,6 +33,8 @@
*
*-------------------------------------------------------------------------
*/
+#include "postgres.h"
+
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
@@ -46,16 +48,11 @@
#include <time.h>
#include <sys/param.h>
-#include "postgres.h"
/* moved here to prevent double define */
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 256
-#endif
-
#ifdef HAVE_LIMITS_H
#include <limits.h>
#else
@@ -72,10 +69,6 @@
#include "getopt.h"
#endif
-#ifndef HAVE_GETHOSTNAME
-#include "port-protos.h"
-#endif
-
#include "commands/async.h"
#include "lib/dllist.h"
#include "libpq/auth.h"
@@ -191,8 +184,6 @@ static volatile bool got_SIGHUP = false;
/*
* Default Values
*/
-static char Execfile[MAXPGPATH];
-
static int ServerSock_INET = INVALID_SOCK; /* stream socket server */
#if !defined(__CYGWIN32__) && !defined(__QNX__)
@@ -278,7 +269,7 @@ static void SignalChildren(SIGNAL_ARGS);
static int CountChildren(void);
static int
SetOptsFile(char *progname, int port, char *datadir,
- int assert, int nbuf, char *execfile,
+ int assert, int nbuf,
int debuglvl, int netserver,
#ifdef USE_SSL
int securenetserver,
@@ -368,62 +359,18 @@ int
PostmasterMain(int argc, char *argv[])
{
int opt;
- char *hostName;
int status;
int silentflag = 0;
bool DataDirOK; /* We have a usable PGDATA value */
- char hostbuf[MAXHOSTNAMELEN];
- int nonblank_argc;
char original_extraoptions[MAXPGPATH];
*original_extraoptions = '\0';
-#ifndef HAVE_SETPROCTITLE
- /*
- * We need four params so we can display status. If we don't get
- * them from the user, let's make them ourselves.
- */
- if (argc < 5)
- {
- int i;
- char *new_argv[6];
-
- for (i = 0; i < argc; i++)
- new_argv[i] = argv[i];
- for (; i < 5; i++)
- new_argv[i] = "";
- new_argv[5] = NULL;
-
- if (!Execfile[0] && FindExec(Execfile, argv[0], "postmaster") < 0)
- {
- fprintf(stderr, "%s: could not find postmaster to execute...\n",
- argv[0]);
- exit(1);
- }
- new_argv[0] = Execfile;
-
- execv(new_argv[0], new_argv);
-
- /* How did we get here? Error! */
- perror(new_argv[0]);
- fprintf(stderr, "PostmasterMain execv failed on %s\n", argv[0]);
- exit(1);
- }
-#endif
-
progname = argv[0];
real_argv = argv;
real_argc = argc;
/*
- * don't process any dummy args we placed at the end for status
- * display
- */
- for (nonblank_argc = argc; nonblank_argc > 0; nonblank_argc--)
- if (argv[nonblank_argc - 1] != NULL && argv[nonblank_argc - 1][0] != '\0')
- break;
-
- /*
* for security, no dir or file created can be group or other
* accessible
*/
@@ -431,13 +378,6 @@ PostmasterMain(int argc, char *argv[])
ResetAllOptions();
- if (!(hostName = getenv("PGHOST")))
- {
- if (gethostname(hostbuf, MAXHOSTNAMELEN) < 0)
- strcpy(hostbuf, "localhost");
- hostName = hostbuf;
- }
-
MyProcPid = getpid();
DataDir = getenv("PGDATA"); /* default value */
@@ -455,7 +395,7 @@ PostmasterMain(int argc, char *argv[])
* will occur.
*/
opterr = 1;
- while ((opt = getopt(nonblank_argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
+ while ((opt = getopt(argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
{
if (opt == 'D')
DataDir = optarg;
@@ -472,7 +412,7 @@ PostmasterMain(int argc, char *argv[])
ProcessConfigFile(PGC_POSTMASTER);
IgnoreSystemIndexes(false);
- while ((opt = getopt(nonblank_argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
+ while ((opt = getopt(argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
{
switch (opt)
{
@@ -496,15 +436,7 @@ PostmasterMain(int argc, char *argv[])
NBuffers = atoi(optarg);
break;
case 'b':
- /* Set the backend executable file to use. */
- if (!ValidateBinary(optarg))
- StrNCpy(Execfile, optarg, MAXPGPATH);
- else
- {
- fprintf(stderr, "%s: invalid backend \"%s\"\n",
- progname, optarg);
- exit(2);
- }
+ /* Can no longer set the backend executable file to use. */
break;
case 'D':
/* already done above */
@@ -630,13 +562,6 @@ PostmasterMain(int argc, char *argv[])
exit(1);
}
- if (!Execfile[0] && FindExec(Execfile, argv[0], "postgres") < 0)
- {
- fprintf(stderr, "%s: could not find backend to execute...\n",
- argv[0]);
- exit(1);
- }
-
#ifdef USE_SSL
if (!NetServer && SecureNetServer)
{
@@ -649,7 +574,7 @@ PostmasterMain(int argc, char *argv[])
if (NetServer)
{
- status = StreamServerPort(hostName, (unsigned short)PostPortName, &ServerSock_INET);
+ status = StreamServerPort(AF_INET, (unsigned short)PostPortName, &ServerSock_INET);
if (status != STATUS_OK)
{
fprintf(stderr, "%s: cannot create INET stream port\n",
@@ -659,7 +584,7 @@ PostmasterMain(int argc, char *argv[])
}
#if !defined(__CYGWIN32__) && !defined(__QNX__)
- status = StreamServerPort(NULL, (unsigned short)PostPortName, &ServerSock_UNIX);
+ status = StreamServerPort(AF_UNIX, (unsigned short)PostPortName, &ServerSock_UNIX);
if (status != STATUS_OK)
{
fprintf(stderr, "%s: cannot create UNIX stream port\n",
@@ -696,7 +621,6 @@ PostmasterMain(int argc, char *argv[])
assert_enabled, /* whether -A is specified
* or not */
NBuffers, /* -B: number of shared buffers */
- Execfile, /* -b: postgres executable file */
DebugLvl, /* -d: debug level */
NetServer, /* -i: accept connection from INET */
#ifdef USE_SSL
@@ -785,7 +709,6 @@ pmdaemonize(char *extraoptions)
assert_enabled, /* whether -A is specified
* or not */
NBuffers, /* -B: number of shared buffers */
- Execfile, /* -b: postgres executable file */
DebugLvl, /* -d: debug level */
NetServer, /* -i: accept connection from INET */
#ifdef USE_SSL
@@ -1905,7 +1828,6 @@ DoBackend(Port *port)
{
char *av[ARGV_SIZE * 2];
int ac = 0;
- char execbuf[MAXPGPATH];
char debugbuf[ARGV_SIZE];
char protobuf[ARGV_SIZE];
char dbbuf[ARGV_SIZE];
@@ -1958,26 +1880,7 @@ DoBackend(Port *port)
* ----------------
*/
- StrNCpy(execbuf, Execfile, MAXPGPATH);
- av[ac++] = execbuf;
-
- /*
- * We need to set our argv[0] to an absolute path name because some
- * OS's use this for dynamic loading, like BSDI. Without it, when we
- * change directories to the database dir, the dynamic loader can't
- * find the base executable and fails. Another advantage is that this
- * changes the 'ps' displayed process name on some platforms. It does
- * on BSDI. That's a big win.
- */
-
-#ifndef linux
-
- /*
- * This doesn't work on linux and overwrites the only valid pointer to
- * the argv buffer. See PS_INIT_STATUS macro.
- */
- real_argv[0] = Execfile;
-#endif
+ av[ac++] = "postgres";
/*
* Pass the requested debugging level along to the backend. Level one
@@ -2229,7 +2132,6 @@ SSDataBase(bool startup)
{
char *av[ARGV_SIZE * 2];
int ac = 0;
- char execbuf[MAXPGPATH];
char nbbuf[ARGV_SIZE];
char dbbuf[ARGV_SIZE];
@@ -2244,8 +2146,7 @@ SSDataBase(bool startup)
ServerSock_UNIX = INVALID_SOCK;
#endif
- StrNCpy(execbuf, Execfile, MAXPGPATH);
- av[ac++] = execbuf;
+ av[ac++] = "postgres";
av[ac++] = "-d";
@@ -2294,7 +2195,7 @@ SSDataBase(bool startup)
*/
static int
SetOptsFile(char *progname, int port, char *datadir,
- int assert, int nbuf, char *execfile,
+ int assert, int nbuf,
int debuglvl, int netserver,
#ifdef USE_SSL
int securenetserver,
@@ -2324,7 +2225,7 @@ SetOptsFile(char *progname, int port, char *datadir,
strcat(opts, buf);
}
- snprintf(buf, sizeof(buf), "-B %d\n-b %s\n", nbuf, execfile);
+ snprintf(buf, sizeof(buf), "-B %d\n", nbuf);
strcat(opts, buf);
if (debuglvl)