diff --git a/src/bin/pg_config/pg_config.c b/src/bin/pg_config/pg_config.c new file mode 100644 index 0000000000..e830fc271a --- /dev/null +++ b/src/bin/pg_config/pg_config.c @@ -0,0 +1,154 @@ +/*------------------------------------------------------------------------- + * + * pg_config.c + * + * This program reports various pieces of information about the + * installed version of PostgreSQL. Packages that interface to + * PostgreSQL can use it to configure their build. + * + * This is a C implementation of the previous shell script written by + * Peter Eisentraut , with adjustments made to + * accomodate the possibility that the installation has been relocated from + * the place originally configured. + * + * author of C translation: Andrew Dunstan mailto:andrew@dunslane.net + * + * This code is released under the terms of the PostgreSQL License. + * + * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group + * + * $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.1 2004/08/01 13:54:05 momjian Exp $ + * + *------------------------------------------------------------------------- + */ + +#include "postgres.h" +#include "port.h" +#include + +#define _(x) gettext((x)) + +char * progname; + +static void +help() +{ + printf(_("\n%s provides information about the installed version of PostgreSQL.\n\n"),progname); + printf(_("Usage:\n")); + printf(_(" %s OPTION...\n\n"),progname); + printf(_("Options:\n")); + printf(_(" --bindir show location of user executables\n")); + printf(_(" --includedir show location of C header files of the client\n")); + printf(_(" interfaces\n")); + printf(_(" --includedir-server show location of C header files for the server\n")); + printf(_(" --libdir show location of object code libraries\n")); + printf(_(" --pkglibdir show location of dynamically loadable modules\n")); + printf(_(" --configure show options given to 'configure' script when\n")); + printf(_(" PostgreSQL was built\n")); + printf(_(" --version show the PostgreSQL version, then exit\n")); + printf(_(" --help show this help, then exit\n\n")); + printf(_("Report bugs to .\n")); +} + +static void +advice() +{ + fprintf(stderr,_("\nTry \"%s --help\" for more information\n"),progname); +} + + +int +main (int argc, char ** argv) +{ + int i; + int ret; + char mypath[MAXPGPATH]; + char otherpath[MAXPGPATH]; + + progname = (char *)get_progname(argv[0]); + + + + if (argc < 2) + { + fprintf(stderr,_("%s: argument required\n"),progname); + advice(); + exit(1); + } + + for (i=1; i < argc; i++) + { + if (strcmp(argv[i],"--bindir") == 0 || + strcmp(argv[i],"--includedir") == 0 || + strcmp(argv[i],"--includedir-server") == 0 || + strcmp(argv[i],"--libdir") == 0 || + strcmp(argv[i],"--pkglibdir") == 0 || + strcmp(argv[i],"--configure") == 0 + ) + { + /* come back to these later */ + + continue; + } + + if (strcmp(argv[i],"--version") == 0) + { + printf("PostgreSQL " PG_VERSION "\n"); + exit(0); + } + if (strcmp(argv[i],"--help") == 0 || strcmp(argv[i],"-?") == 0) + { + help(); + exit(0); + } + fprintf(stderr,_("%s: invalid argument: %s\n"),progname,argv[i]); + advice(); + exit(1); + } + + ret = find_my_exec(argv[0],mypath); + + if (ret) + { + fprintf(stderr,"%s: could not locate my own executable\n",progname); + exit(1); + } + + + + for (i=1; i < argc; i++) + { + if (strcmp(argv[i],"--configure") == 0) + { + /* the VAL_CONFIGURE macro must be defined by the Makefile */ + + printf("%s\n",VAL_CONFIGURE); + continue; + } + + if (strcmp(argv[i],"--bindir") == 0) + { + /* assume we are located in the bindir */ + + char * lastsep; + strcpy(otherpath,mypath); + lastsep = strrchr(otherpath,'/'); + if (lastsep) + *lastsep = '\0'; + } + else if (strcmp(argv[i],"--includedir") == 0) + get_include_path(mypath,otherpath); + else if (strcmp(argv[i],"--includedir-server") ==0) + get_includeserver_path(mypath,otherpath); + else if (strcmp(argv[i],"--libdir") == 0) + get_lib_path(mypath,otherpath); + else if (strcmp(argv[i],"--pkglibdir") == 0) + get_pkglib_path(mypath,otherpath); + + printf("%s\n",otherpath); + + + } + + return 0; +}