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

Go to the source code of this file.

Functions

ConfigDataget_configdata (const char *my_exec_path, size_t *configdata_len)
 

Function Documentation

◆ get_configdata()

ConfigData * get_configdata ( const char *  my_exec_path,
size_t *  configdata_len 
)

Definition at line 33 of file config_info.c.

34{
35 ConfigData *configdata;
36 char path[MAXPGPATH];
37 char *lastsep;
38 int i = 0;
39
40 /* Adjust this to match the number of items filled below */
41 *configdata_len = 23;
42 configdata = palloc_array(ConfigData, *configdata_len);
43
44 configdata[i].name = pstrdup("BINDIR");
45 strlcpy(path, my_exec_path, sizeof(path));
46 lastsep = strrchr(path, '/');
47 if (lastsep)
48 *lastsep = '\0';
49 cleanup_path(path);
50 configdata[i].setting = pstrdup(path);
51 i++;
52
53 configdata[i].name = pstrdup("DOCDIR");
55 cleanup_path(path);
56 configdata[i].setting = pstrdup(path);
57 i++;
58
59 configdata[i].name = pstrdup("HTMLDIR");
61 cleanup_path(path);
62 configdata[i].setting = pstrdup(path);
63 i++;
64
65 configdata[i].name = pstrdup("INCLUDEDIR");
67 cleanup_path(path);
68 configdata[i].setting = pstrdup(path);
69 i++;
70
71 configdata[i].name = pstrdup("PKGINCLUDEDIR");
73 cleanup_path(path);
74 configdata[i].setting = pstrdup(path);
75 i++;
76
77 configdata[i].name = pstrdup("INCLUDEDIR-SERVER");
79 cleanup_path(path);
80 configdata[i].setting = pstrdup(path);
81 i++;
82
83 configdata[i].name = pstrdup("LIBDIR");
85 cleanup_path(path);
86 configdata[i].setting = pstrdup(path);
87 i++;
88
89 configdata[i].name = pstrdup("PKGLIBDIR");
91 cleanup_path(path);
92 configdata[i].setting = pstrdup(path);
93 i++;
94
95 configdata[i].name = pstrdup("LOCALEDIR");
97 cleanup_path(path);
98 configdata[i].setting = pstrdup(path);
99 i++;
100
101 configdata[i].name = pstrdup("MANDIR");
103 cleanup_path(path);
104 configdata[i].setting = pstrdup(path);
105 i++;
106
107 configdata[i].name = pstrdup("SHAREDIR");
109 cleanup_path(path);
110 configdata[i].setting = pstrdup(path);
111 i++;
112
113 configdata[i].name = pstrdup("SYSCONFDIR");
115 cleanup_path(path);
116 configdata[i].setting = pstrdup(path);
117 i++;
118
119 configdata[i].name = pstrdup("PGXS");
121 strlcat(path, "/pgxs/src/makefiles/pgxs.mk", sizeof(path));
122 cleanup_path(path);
123 configdata[i].setting = pstrdup(path);
124 i++;
125
126 configdata[i].name = pstrdup("CONFIGURE");
127 configdata[i].setting = pstrdup(CONFIGURE_ARGS);
128 i++;
129
130 configdata[i].name = pstrdup("CC");
131#ifdef VAL_CC
132 configdata[i].setting = pstrdup(VAL_CC);
133#else
134 configdata[i].setting = pstrdup(_("not recorded"));
135#endif
136 i++;
137
138 configdata[i].name = pstrdup("CPPFLAGS");
139#ifdef VAL_CPPFLAGS
140 configdata[i].setting = pstrdup(VAL_CPPFLAGS);
141#else
142 configdata[i].setting = pstrdup(_("not recorded"));
143#endif
144 i++;
145
146 configdata[i].name = pstrdup("CFLAGS");
147#ifdef VAL_CFLAGS
148 configdata[i].setting = pstrdup(VAL_CFLAGS);
149#else
150 configdata[i].setting = pstrdup(_("not recorded"));
151#endif
152 i++;
153
154 configdata[i].name = pstrdup("CFLAGS_SL");
155#ifdef VAL_CFLAGS_SL
156 configdata[i].setting = pstrdup(VAL_CFLAGS_SL);
157#else
158 configdata[i].setting = pstrdup(_("not recorded"));
159#endif
160 i++;
161
162 configdata[i].name = pstrdup("LDFLAGS");
163#ifdef VAL_LDFLAGS
164 configdata[i].setting = pstrdup(VAL_LDFLAGS);
165#else
166 configdata[i].setting = pstrdup(_("not recorded"));
167#endif
168 i++;
169
170 configdata[i].name = pstrdup("LDFLAGS_EX");
171#ifdef VAL_LDFLAGS_EX
172 configdata[i].setting = pstrdup(VAL_LDFLAGS_EX);
173#else
174 configdata[i].setting = pstrdup(_("not recorded"));
175#endif
176 i++;
177
178 configdata[i].name = pstrdup("LDFLAGS_SL");
179#ifdef VAL_LDFLAGS_SL
180 configdata[i].setting = pstrdup(VAL_LDFLAGS_SL);
181#else
182 configdata[i].setting = pstrdup(_("not recorded"));
183#endif
184 i++;
185
186 configdata[i].name = pstrdup("LIBS");
187#ifdef VAL_LIBS
188 configdata[i].setting = pstrdup(VAL_LIBS);
189#else
190 configdata[i].setting = pstrdup(_("not recorded"));
191#endif
192 i++;
193
194 configdata[i].name = pstrdup("VERSION");
195 configdata[i].setting = pstrdup("PostgreSQL " PG_VERSION);
196 i++;
197
198 Assert(i == *configdata_len);
199
200 return configdata;
201}
#define Assert(condition)
Definition: c.h:812
#define _(x)
Definition: elog.c:90
#define palloc_array(type, count)
Definition: fe_memutils.h:76
char my_exec_path[MAXPGPATH]
Definition: globals.c:80
int i
Definition: isn.c:72
char * pstrdup(const char *in)
Definition: mcxt.c:1696
#define MAXPGPATH
void cleanup_path(char *path)
Definition: path.c:187
void get_share_path(const char *my_exec_path, char *ret_path)
Definition: path.c:825
void get_pkglib_path(const char *my_exec_path, char *ret_path)
Definition: path.c:879
void get_locale_path(const char *my_exec_path, char *ret_path)
Definition: path.c:888
void get_man_path(const char *my_exec_path, char *ret_path)
Definition: path.c:915
void get_include_path(const char *my_exec_path, char *ret_path)
Definition: path.c:843
void get_lib_path(const char *my_exec_path, char *ret_path)
Definition: path.c:870
void get_etc_path(const char *my_exec_path, char *ret_path)
Definition: path.c:834
void get_doc_path(const char *my_exec_path, char *ret_path)
Definition: path.c:897
void get_html_path(const char *my_exec_path, char *ret_path)
Definition: path.c:906
void get_pkginclude_path(const char *my_exec_path, char *ret_path)
Definition: path.c:852
size_t strlcat(char *dst, const char *src, size_t siz)
Definition: strlcat.c:33
size_t strlcpy(char *dst, const char *src, size_t siz)
Definition: strlcpy.c:45
void get_includeserver_path(const char *my_exec_path, char *ret_path)
Definition: path.c:861
char * name
Definition: config_info.h:14
char * setting
Definition: config_info.h:15

References _, Assert, cleanup_path(), get_doc_path(), get_etc_path(), get_html_path(), get_include_path(), get_includeserver_path(), get_lib_path(), get_locale_path(), get_man_path(), get_pkginclude_path(), get_pkglib_path(), get_share_path(), i, MAXPGPATH, my_exec_path, ConfigData::name, palloc_array, pstrdup(), ConfigData::setting, strlcat(), and strlcpy().

Referenced by main(), and pg_config().