1111 *
1212 *
1313 * IDENTIFICATION
14- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.154 2000/07/09 13:14:05 petere Exp $
14+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.155 2000/07/12 17:38:42 petere Exp $
1515 *
1616 * NOTES
1717 *
@@ -280,11 +280,6 @@ void GetCharSetByHost(char *, int, char *);
280280
281281#endif
282282
283- #ifdef USE_ASSERT_CHECKING
284-
285- int assert_enabled = 1 ;
286-
287- #endif
288283
289284static void
290285checkDataDir (const char * DataDir )
@@ -387,13 +382,46 @@ PostmasterMain(int argc, char *argv[])
387382 * will occur.
388383 */
389384 opterr = 1 ;
390- while ((opt = getopt (argc , argv , "A:a:B:b:D:d:Film:MN:no:p:Ss-:" )) != EOF )
385+ while ((opt = getopt (argc , argv , "A:a:B:b:D:d:Film:MN:no:p:Ss-:? " )) != EOF )
391386 {
392- if (opt == 'D' )
387+ switch (opt )
393388 {
394- if (DataDir )
395- free (DataDir );
396- DataDir = strdup (optarg );
389+ case 'D' :
390+ if (DataDir )
391+ free (DataDir );
392+ DataDir = strdup (optarg );
393+ break ;
394+
395+ case '-' :
396+ {
397+ char * name , * value ;
398+
399+ ParseLongOption (optarg , & name , & value );
400+ if (strcmp (name , "help" )== 0 )
401+ {
402+ usage (progname );
403+ exit (0 );
404+ }
405+ else if (strcmp (name , "version" )== 0 )
406+ {
407+ puts ("postmaster (PostgreSQL) " PG_VERSION );
408+ exit (0 );
409+ }
410+ break ;
411+ }
412+
413+ case '?' :
414+ if (strcmp (argv [optind - 1 ], "-?" ) == 0 )
415+ {
416+ usage (progname );
417+ exit (0 );
418+ }
419+ else
420+ {
421+ fprintf (stderr , "Try -? for help.\n" );
422+ exit (1 );
423+ }
424+ break ;
397425 }
398426 }
399427
@@ -403,21 +431,15 @@ PostmasterMain(int argc, char *argv[])
403431 ProcessConfigFile (PGC_POSTMASTER );
404432
405433 IgnoreSystemIndexes (false);
406- while ((opt = getopt (argc , argv , "A:a:B:b:D:d:Film:MN:no:p:Ss-:" )) != EOF )
434+ while ((opt = getopt (argc , argv , "A:a:B:b:D:d:Film:MN:no:p:Ss-:? " )) != EOF )
407435 {
408436 switch (opt )
409437 {
410438 case 'A' :
411439#ifndef USE_ASSERT_CHECKING
412- fprintf (stderr , "Assert checking is not enabled \n" );
440+ fprintf (stderr , "Assert checking is not compiled in \n" );
413441#else
414-
415- /*
416- * Pass this option also to each backend.
417- */
418442 assert_enabled = atoi (optarg );
419- strcat (ExtraOptions , " -A " );
420- strcat (ExtraOptions , optarg );
421443#endif
422444 break ;
423445 case 'a' :
@@ -525,13 +547,23 @@ PostmasterMain(int argc, char *argv[])
525547 free (value );
526548 break ;
527549 }
550+
528551 default :
529- /* usage() never returns */
530- usage ( progname );
531- break ;
552+ /* shouldn't get here */
553+ fprintf ( stderr , "Try -? for help.\n" );
554+ exit ( 1 ) ;
532555 }
533556 }
534557
558+ /*
559+ * Non-option switch arguments don't exist.
560+ */
561+ if (optind < argc )
562+ {
563+ fprintf (stderr , "%s: invalid argument -- %s\n" , progname , argv [optind ]);
564+ exit (1 );
565+ }
566+
535567 /*
536568 * Check for invalid combinations of switches
537569 */
@@ -543,7 +575,7 @@ PostmasterMain(int argc, char *argv[])
543575 * for lack of buffers. The specific choices here are somewhat
544576 * arbitrary.
545577 */
546- fprintf (stderr , "%s: -B must be at least twice -N and at least 16.\n" ,
578+ fprintf (stderr , "%s: The number of buffers (-B) must be at least twice the number of allowed connections (-N) and at least 16.\n" ,
547579 progname );
548580 exit (1 );
549581 }
@@ -717,30 +749,43 @@ pmdaemonize(int argc, char *argv[])
717749 on_proc_exit (UnlinkPidFile , NULL );
718750}
719751
752+
753+
754+ /*
755+ * Print out help message
756+ */
720757static void
721758usage (const char * progname )
722759{
723- fprintf (stderr , "usage: %s [options]\n" , progname );
760+ printf ("%s is the PostgreSQL server.\n\n" , progname );
761+ printf ("Usage:\n %s [options]\n\n" , progname );
762+ printf ("Options:\n" );
724763#ifdef USE_ASSERT_CHECKING
725- fprintf ( stderr , "\t -A [ 1|0]\tenable /disable runtime assert checking\n" );
764+ printf ( " -A 1|0 enable /disable runtime assert checking\n" );
726765#endif
727- fprintf (stderr , "\t-B nbufs\tset number of shared buffers\n" );
728- fprintf (stderr , "\t-D datadir\tset data directory\n" );
729- fprintf (stderr , "\t-S \t\tsilent mode (disassociate from tty)\n" );
730- fprintf (stderr , "\t-a system\tuse this authentication system\n" );
731- fprintf (stderr , "\t-b backend\tuse a specific backend server executable\n" );
732- fprintf (stderr , "\t-d [1-5]\tset debugging level\n" );
733- fprintf (stderr , "\t-i \t\tlisten on TCP/IP sockets as well as Unix domain socket\n" );
766+ printf (" -B <buffers> number of shared buffers\n" );
767+ printf (" -d 1-5 debugging level\n" );
768+ printf (" -D <directory> database directory\n" );
769+ printf (" -F turn fsync off\n" );
770+ printf (" -i listen on TCP/IP sockets\n" );
734771#ifdef USE_SSL
735- fprintf ( stderr , " \t -l \t\tfor TCP/IP sockets, listen only on SSL connections\n" );
772+ printf ( " -l listen only on SSL connections (EXPERIMENTAL) \n" );
736773#endif
737- fprintf ( stderr , "\t -N nprocs\tset max number of backends (1..%d, default %d)\n" ,
774+ printf ( " -N <number> maximum number of allowed connections (1..%d, default %d)\n" ,
738775 MAXBACKENDS , DEF_MAXBACKENDS );
739- fprintf (stderr , "\t-n \t\tdon't reinitialize shared memory after abnormal exit\n" );
740- fprintf (stderr , "\t-o option\tpass 'option' to each backend servers\n" );
741- fprintf (stderr , "\t-p port\tspecify port for postmaster to listen on\n" );
742- fprintf (stderr , "\t-s \t\tsend SIGSTOP to all backend servers if one dies\n" );
743- exit (1 );
776+ printf (" -o <option> pass `option' to each backend server\n" );
777+ printf (" -p <port> port number to listen on\n" );
778+ printf (" -S silent mode (dissociate from tty)\n" );
779+
780+ printf ("\nDeveloper options:\n" );
781+ printf (" -n don't reinitialize shared memory after abnormal exit\n" );
782+ printf (" -s send SIGSTOP to all backend servers if one dies\n" );
783+
784+ printf ("\nPlease read the documentation for the complete list of runtime\n"
785+ "configuration settings and how to set them on the command line or in\n"
786+ "the configuration file.\n\n" );
787+
788+ printf ("Report bugs to <pgsql-bugs@postgresql.org>.\n" );
744789}
745790
746791static int
@@ -1231,7 +1276,7 @@ reset_shared(int port)
12311276
12321277
12331278/*
1234- * set flag is SIGHUP was detected so config file can be reread in
1279+ * Set flag if SIGHUP was detected so config file can be reread in
12351280 * main loop
12361281 */
12371282static void
0 commit comments