PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
pg_config.c File Reference
#include "postgres_fe.h"
#include "port.h"
#include "common/config_info.h"
Include dependency graph for pg_config.c:

Go to the source code of this file.

Data Structures

struct  InfoItem
 

Functions

static void help (void)
 
static void advice (void)
 
static void show_item (const char *configname, ConfigData *configdata, size_t configdata_len)
 
int main (int argc, char **argv)
 

Variables

static const char * progname
 
static const InfoItem info_items []
 

Function Documentation

static void advice ( void  )
static

Definition at line 109 of file pg_config.c.

References _, and progname.

Referenced by main().

110 {
111  fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
112 }
static const char * progname
Definition: pg_config.c:30
#define _(x)
Definition: elog.c:84
static void help ( void  )
static

Definition at line 72 of file pg_config.c.

References _, and progname.

Referenced by main().

73 {
74  printf(_("\n%s provides information about the installed version of PostgreSQL.\n\n"), progname);
75  printf(_("Usage:\n"));
76  printf(_(" %s [OPTION]...\n\n"), progname);
77  printf(_("Options:\n"));
78  printf(_(" --bindir show location of user executables\n"));
79  printf(_(" --docdir show location of documentation files\n"));
80  printf(_(" --htmldir show location of HTML documentation files\n"));
81  printf(_(" --includedir show location of C header files of the client\n"
82  " interfaces\n"));
83  printf(_(" --pkgincludedir show location of other C header files\n"));
84  printf(_(" --includedir-server show location of C header files for the server\n"));
85  printf(_(" --libdir show location of object code libraries\n"));
86  printf(_(" --pkglibdir show location of dynamically loadable modules\n"));
87  printf(_(" --localedir show location of locale support files\n"));
88  printf(_(" --mandir show location of manual pages\n"));
89  printf(_(" --sharedir show location of architecture-independent support files\n"));
90  printf(_(" --sysconfdir show location of system-wide configuration files\n"));
91  printf(_(" --pgxs show location of extension makefile\n"));
92  printf(_(" --configure show options given to \"configure\" script when\n"
93  " PostgreSQL was built\n"));
94  printf(_(" --cc show CC value used when PostgreSQL was built\n"));
95  printf(_(" --cppflags show CPPFLAGS value used when PostgreSQL was built\n"));
96  printf(_(" --cflags show CFLAGS value used when PostgreSQL was built\n"));
97  printf(_(" --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n"));
98  printf(_(" --ldflags show LDFLAGS value used when PostgreSQL was built\n"));
99  printf(_(" --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was built\n"));
100  printf(_(" --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was built\n"));
101  printf(_(" --libs show LIBS value used when PostgreSQL was built\n"));
102  printf(_(" --version show the PostgreSQL version\n"));
103  printf(_(" -?, --help show this help, then exit\n"));
104  printf(_("\nWith no arguments, all known items are shown.\n\n"));
105  printf(_("Report bugs to <pgsql-bugs@postgresql.org>.\n"));
106 }
static const char * progname
Definition: pg_config.c:30
#define _(x)
Definition: elog.c:84
int main ( int  argc,
char **  argv 
)

Definition at line 129 of file pg_config.c.

References _, advice(), find_my_exec(), get_configdata(), get_progname(), help(), i, MAXPGPATH, my_exec_path, name, NULL, PG_TEXTDOMAIN, progname, set_pglocale_pgservice(), show_item(), and InfoItem::switchname.

130 {
131  ConfigData *configdata;
132  size_t configdata_len;
133  char my_exec_path[MAXPGPATH];
134  int i;
135  int j;
136 
137  set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_config"));
138 
139  progname = get_progname(argv[0]);
140 
141  /* check for --help */
142  for (i = 1; i < argc; i++)
143  {
144  if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-?") == 0)
145  {
146  help();
147  exit(0);
148  }
149  }
150 
151  if (find_my_exec(argv[0], my_exec_path) < 0)
152  {
153  fprintf(stderr, _("%s: could not find own program executable\n"), progname);
154  exit(1);
155  }
156 
157  configdata = get_configdata(my_exec_path, &configdata_len);
158  /* no arguments -> print everything */
159  if (argc < 2)
160  {
161  for (i = 0; i < configdata_len; i++)
162  printf("%s = %s\n", configdata[i].name, configdata[i].setting);
163  exit(0);
164  }
165 
166  /* otherwise print requested items */
167  for (i = 1; i < argc; i++)
168  {
169  for (j = 0; info_items[j].switchname != NULL; j++)
170  {
171  if (strcmp(argv[i], info_items[j].switchname) == 0)
172  {
173  show_item(info_items[j].configname,
174  configdata, configdata_len);
175  break;
176  }
177  }
178  if (info_items[j].switchname == NULL)
179  {
180  fprintf(stderr, _("%s: invalid argument: %s\n"),
181  progname, argv[i]);
182  advice();
183  exit(1);
184  }
185  }
186 
187  return 0;
188 }
const char * get_progname(const char *argv0)
Definition: path.c:453
static const char * progname
Definition: pg_config.c:30
static void advice(void)
Definition: pg_config.c:109
static void show_item(const char *configname, ConfigData *configdata, size_t configdata_len)
Definition: pg_config.c:115
#define MAXPGPATH
int find_my_exec(const char *argv0, char *retpath)
Definition: exec.c:119
char my_exec_path[MAXPGPATH]
Definition: globals.c:63
#define PG_TEXTDOMAIN(domain)
Definition: c.h:1011
static const InfoItem info_items[]
Definition: pg_config.c:43
#define NULL
Definition: c.h:226
ConfigData * get_configdata(const char *my_exec_path, size_t *configdata_len)
Definition: config_info.c:34
const char * switchname
Definition: pg_config.c:39
const char * name
Definition: encode.c:521
void set_pglocale_pgservice(const char *argv0, const char *app)
Definition: exec.c:550
static void help(void)
Definition: pg_config.c:72
int i
#define _(x)
Definition: elog.c:84
static void show_item ( const char *  configname,
ConfigData configdata,
size_t  configdata_len 
)
static

Definition at line 115 of file pg_config.c.

References i, and name.

Referenced by main().

118 {
119  int i;
120 
121  for (i = 0; i < configdata_len; i++)
122  {
123  if (strcmp(configname, configdata[i].name) == 0)
124  printf("%s\n", configdata[i].setting);
125  }
126 }
const char * name
Definition: encode.c:521
int i

Variable Documentation

const InfoItem info_items[]
static
Initial value:
= {
{"--bindir", "BINDIR"},
{"--docdir", "DOCDIR"},
{"--htmldir", "HTMLDIR"},
{"--includedir", "INCLUDEDIR"},
{"--pkgincludedir", "PKGINCLUDEDIR"},
{"--includedir-server", "INCLUDEDIR-SERVER"},
{"--libdir", "LIBDIR"},
{"--pkglibdir", "PKGLIBDIR"},
{"--localedir", "LOCALEDIR"},
{"--mandir", "MANDIR"},
{"--sharedir", "SHAREDIR"},
{"--sysconfdir", "SYSCONFDIR"},
{"--pgxs", "PGXS"},
{"--configure", "CONFIGURE"},
{"--cc", "CC"},
{"--cppflags", "CPPFLAGS"},
{"--cflags", "CFLAGS"},
{"--cflags_sl", "CFLAGS_SL"},
{"--ldflags", "LDFLAGS"},
{"--ldflags_ex", "LDFLAGS_EX"},
{"--ldflags_sl", "LDFLAGS_SL"},
{"--libs", "LIBS"},
{"--version", "VERSION"},
}
#define NULL
Definition: c.h:226

Definition at line 43 of file pg_config.c.

const char* progname
static

Definition at line 30 of file pg_config.c.

Referenced by advice(), help(), and main().