Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7a161ac

Browse files
committed
Clean up comments, organize code snippets added at different times into
a slightly less random order.
1 parent249fe81 commit7a161ac

File tree

1 file changed

+79
-48
lines changed

1 file changed

+79
-48
lines changed

‎src/backend/main/main.c

Lines changed: 79 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
11
/*-------------------------------------------------------------------------
22
*
33
* main.c
4-
* Stub main() routine for the postgres backend.
4+
* Stub main() routine for the postgres executable.
5+
*
6+
* This does some essential startup tasks for any incarnation of postgres
7+
* (postmaster, standalone backend, or standalone bootstrap mode) and then
8+
* dispatches to the proper FooMain() routine for the incarnation.
9+
*
510
*
611
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
712
* Portions Copyright (c) 1994, Regents of the University of California
813
*
914
*
1015
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.34 2000/11/16 05:51:00 momjian Exp $
16+
* $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.35 2000/11/25 03:45:47 tgl Exp $
1217
*
1318
*-------------------------------------------------------------------------
1419
*/
1520
#include"postgres.h"
1621

1722
#include<pwd.h>
1823
#include<unistd.h>
24+
#ifdefUSE_LOCALE
25+
#include<locale.h>
26+
#endif
1927

2028
#if defined(__alpha)&& !defined(linux)&& !defined(__FreeBSD__)
2129
#include<sys/sysinfo.h>
@@ -25,23 +33,35 @@
2533
#undef ASSEMBLER
2634
#endif
2735

28-
#ifdefUSE_LOCALE
29-
#include<locale.h>
30-
#endif
3136
#include"miscadmin.h"
3237
#include"bootstrap/bootstrap.h"
3338
#include"tcop/tcopprot.h"
3439

40+
3541
#defineNOROOTEXEC "\
36-
\n\"root\" execution of the PostgreSQLbackend is not permitted.\n\n\
37-
Thebackend must be started underits own userid to prevent\n\
42+
\n\"root\" execution of the PostgreSQLserver is not permitted.\n\n\
43+
Theserver must be started underan unprivileged userid to prevent\n\
3844
a possible system security compromise. See the INSTALL file for\n\
39-
more information on how to properly start the postmaster.\n\n"
45+
more information on how to properly start the server.\n\n"
46+
4047

4148
int
4249
main(intargc,char*argv[])
4350
{
4451
intlen;
52+
structpasswd*pw;
53+
54+
/*
55+
* Place platform-specific startup hacks here. This is the right
56+
* place to put code that must be executed early in launch of either
57+
* a postmaster, a standalone backend, or a standalone bootstrap run.
58+
* Note that this code will NOT be executed when a backend or
59+
* sub-bootstrap run is forked by the postmaster.
60+
*
61+
* XXX The need for code here is proof that the platform in question
62+
* is too brain-dead to provide a standard C execution environment
63+
* without help. Avoid adding more here, if you can.
64+
*/
4565

4666
#if defined(__alpha)
4767
#ifdefNOFIXADE
@@ -52,78 +72,89 @@ main(int argc, char *argv[])
5272
intbuffer[]= {SSIN_UACPROC,UAC_NOPRINT};
5373

5474
#endif/* NOPRINTADE */
55-
#endif
75+
#endif/* __alpha */
5676

57-
#ifdefUSE_LOCALE
58-
setlocale(LC_CTYPE,"");/* take locale information from an
59-
* environment */
60-
setlocale(LC_COLLATE,"");
61-
setlocale(LC_MONETARY,"");
62-
#endif
6377
#if defined(NOFIXADE)|| defined(NOPRINTADE)
6478

65-
/*
66-
* Must be first so that the bootstrap code calls it, too. (Only
67-
* needed on some RISC architectures.)
68-
*/
69-
7079
#if defined(ultrix4)
7180
syscall(SYS_sysmips,MIPS_FIXADE,0,NULL,NULL,NULL);
7281
#endif
7382

7483
#if defined(__alpha)
7584
if (setsysinfo(SSI_NVPAIRS,buffer,1, (caddr_t)NULL,
7685
(unsigned long)NULL)<0)
77-
elog(NOTICE,"setsysinfo failed: %d\n",errno);
86+
fprintf(stderr,"setsysinfo failed: %d\n",errno);
7887
#endif
7988

8089
#endif/* NOFIXADE || NOPRINTADE */
8190

91+
#ifdef__BEOS__
92+
/* BeOS-specific actions on startup */
93+
beos_startup(argc,argv);
94+
#endif
95+
8296
/*
83-
*use one executable for both postgres and postmaster, invoke one or
84-
*the other depending on the name of the executable
97+
*Not-quite-so-platform-specific startup environment checks.
98+
*Still best to minimize these.
8599
*/
86-
len=strlen(argv[0]);
87100

88-
/* OK this is going to seem weird, but BeOS is presently basically
89-
* a single user system. There is work going on, but at present it'll
90-
* say that every user is uid 0, i.e. root. We'll inhibit this check
91-
* until Be get the system working with multiple users!!
92-
*/
101+
/*
102+
* Make sure we are not running as root.
103+
*
104+
* BeOS currently runs everything as root :-(, so this check must
105+
* be temporarily disabled there...
106+
*/
93107
#ifndef__BEOS__
94-
if (!geteuid())
108+
if (geteuid()==0)
95109
{
96110
fprintf(stderr,"%s",NOROOTEXEC);
97111
exit(1);
98112
}
99113
#endif/* __BEOS__ */
100114

101-
#ifdef__BEOS__
102-
/* Specific beos actions on startup */
103-
beos_startup(argc,argv);
115+
/*
116+
* Set up locale information from environment, in only the categories
117+
* needed by Postgres; leave other categories set to default "C".
118+
* (Note that CTYPE and COLLATE will be overridden later from pg_control
119+
* if we are in an already-initialized database. We set them here so
120+
* that they will be available to fill pg_control during initdb.)
121+
*/
122+
#ifdefUSE_LOCALE
123+
setlocale(LC_CTYPE,"");
124+
setlocale(LC_COLLATE,"");
125+
setlocale(LC_MONETARY,"");
104126
#endif
105127

128+
/*
129+
* Now dispatch to one of PostmasterMain, PostgresMain, or BootstrapMain
130+
* depending on the program name (and possibly first argument) we
131+
* were called with. The lack of consistency here is historical.
132+
*/
133+
len=strlen(argv[0]);
106134

107-
if (len >=10&& !strcmp(argv[0]+len-10,"postmaster"))
135+
if (len >=10&&strcmp(argv[0]+len-10,"postmaster")==0)
136+
{
137+
/* Called as "postmaster" */
108138
exit(PostmasterMain(argc,argv));
139+
}
109140

110141
/*
111-
*if the first argument is "-boot", then invokethe backend in
112-
*bootstrap mode
142+
*If the first argument is "-boot", then invokebootstrap mode.
143+
*Note we remove "-boot" from the arguments passed on to BootstrapMain.
113144
*/
114145
if (argc>1&&strcmp(argv[1],"-boot")==0)
115-
exit(BootstrapMain(argc-1,argv+1));/* remove the -boot arg
116-
* from the command line */
117-
else
146+
exit(BootstrapMain(argc-1,argv+1));
147+
148+
/*
149+
* Otherwise we're a standalone backend. Invoke PostgresMain,
150+
* specifying current userid as the "authenticated" Postgres user name.
151+
*/
152+
pw=getpwuid(geteuid());
153+
if (pw==NULL)
118154
{
119-
structpasswd*pw;
120-
121-
pw=getpwuid(geteuid());
122-
if (!pw)
123-
{
124-
fprintf(stderr,"%s: invalid current euid",argv[0]);
125-
exit(1);
126-
}
127-
exit(PostgresMain(argc,argv,argc,argv,pw->pw_name));
155+
fprintf(stderr,"%s: invalid current euid",argv[0]);
156+
exit(1);
128157
}
158+
159+
exit(PostgresMain(argc,argv,argc,argv,pw->pw_name));
129160
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp