PostgreSQL Source Code  git master
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");
102  get_man_path(my_exec_path, path);
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");
114  get_etc_path(my_exec_path, path);
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 _(x)
Definition: elog.c:90
#define palloc_array(type, count)
Definition: fe_memutils.h:64
char my_exec_path[MAXPGPATH]
Definition: globals.c:78
int i
Definition: isn.c:73
Assert(fmt[strlen(fmt) - 1] !='\n')
char * pstrdup(const char *in)
Definition: mcxt.c:1683
#define MAXPGPATH
void cleanup_path(char *path)
Definition: path.c:186
void get_share_path(const char *my_exec_path, char *ret_path)
Definition: path.c:824
void get_pkglib_path(const char *my_exec_path, char *ret_path)
Definition: path.c:878
void get_locale_path(const char *my_exec_path, char *ret_path)
Definition: path.c:887
void get_man_path(const char *my_exec_path, char *ret_path)
Definition: path.c:914
void get_include_path(const char *my_exec_path, char *ret_path)
Definition: path.c:842
void get_lib_path(const char *my_exec_path, char *ret_path)
Definition: path.c:869
void get_etc_path(const char *my_exec_path, char *ret_path)
Definition: path.c:833
void get_doc_path(const char *my_exec_path, char *ret_path)
Definition: path.c:896
void get_html_path(const char *my_exec_path, char *ret_path)
Definition: path.c:905
void get_pkginclude_path(const char *my_exec_path, char *ret_path)
Definition: path.c:851
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:860
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().