|
20 | 20 | #include"postgres_fe.h" |
21 | 21 | #endif |
22 | 22 |
|
23 | | -#include"miscadmin.h" |
24 | 23 | #include"common/config_info.h" |
| 24 | +#include"miscadmin.h" |
25 | 25 |
|
26 | | -staticsize_tconfigdata_names_len(void); |
27 | | - |
28 | | -staticconstchar*constconfigdata_names[]= |
29 | | -{ |
30 | | -"BINDIR", |
31 | | -"DOCDIR", |
32 | | -"HTMLDIR", |
33 | | -"INCLUDEDIR", |
34 | | -"PKGINCLUDEDIR", |
35 | | -"INCLUDEDIR-SERVER", |
36 | | -"LIBDIR", |
37 | | -"PKGLIBDIR", |
38 | | -"LOCALEDIR", |
39 | | -"MANDIR", |
40 | | -"SHAREDIR", |
41 | | -"SYSCONFDIR", |
42 | | -"PGXS", |
43 | | -"CONFIGURE", |
44 | | -"CC", |
45 | | -"CPPFLAGS", |
46 | | -"CFLAGS", |
47 | | -"CFLAGS_SL", |
48 | | -"LDFLAGS", |
49 | | -"LDFLAGS_EX", |
50 | | -"LDFLAGS_SL", |
51 | | -"LIBS", |
52 | | -"VERSION", |
53 | | -NULL |
54 | | -}; |
55 | | - |
56 | | -staticsize_t |
57 | | -configdata_names_len(void) |
58 | | -{ |
59 | | -size_ti=0; |
60 | | - |
61 | | -while (configdata_names[i]) |
62 | | -i++; |
63 | | - |
64 | | -returni; |
65 | | -} |
66 | 26 |
|
67 | 27 | /* |
68 | | - * get_configdata(char *my_exec_path, size_t *configdata_len) |
| 28 | + * get_configdata(constchar *my_exec_path, size_t *configdata_len) |
69 | 29 | * |
70 | 30 | * Get configure-time constants. The caller is responsible |
71 | 31 | * for pfreeing the result. |
72 | 32 | */ |
73 | 33 | ConfigData* |
74 | | -get_configdata(char*my_exec_path,size_t*configdata_len) |
| 34 | +get_configdata(constchar*my_exec_path,size_t*configdata_len) |
75 | 35 | { |
76 | 36 | ConfigData*configdata; |
77 | 37 | charpath[MAXPGPATH]; |
78 | 38 | char*lastsep; |
79 | | -inti; |
| 39 | +inti=0; |
80 | 40 |
|
81 | | -*configdata_len=configdata_names_len(); |
82 | | -configdata=palloc(*configdata_len*sizeof(ConfigData)); |
| 41 | +/* Adjust this to match the number of items filled below */ |
| 42 | +*configdata_len=23; |
| 43 | +configdata= (ConfigData*)palloc(*configdata_len*sizeof(ConfigData)); |
83 | 44 |
|
84 | | -/* |
85 | | - * initialize configdata names |
86 | | - * |
87 | | - * These better be in sync with the settings manually |
88 | | - * defined below. |
89 | | - */ |
90 | | -for (i=0;i<*configdata_len;i++) |
91 | | -configdata[i].name=pstrdup(configdata_names[i]); |
92 | | - |
93 | | -strcpy(path,my_exec_path); |
| 45 | +configdata[i].name=pstrdup("BINDIR"); |
| 46 | +strlcpy(path,my_exec_path,sizeof(path)); |
94 | 47 | lastsep=strrchr(path,'/'); |
95 | 48 | if (lastsep) |
96 | 49 | *lastsep='\0'; |
97 | 50 | cleanup_path(path); |
98 | | -configdata[0].setting=pstrdup(path); |
| 51 | +configdata[i].setting=pstrdup(path); |
| 52 | +i++; |
99 | 53 |
|
| 54 | +configdata[i].name=pstrdup("DOCDIR"); |
100 | 55 | get_doc_path(my_exec_path,path); |
101 | 56 | cleanup_path(path); |
102 | | -configdata[1].setting=pstrdup(path); |
| 57 | +configdata[i].setting=pstrdup(path); |
| 58 | +i++; |
103 | 59 |
|
| 60 | +configdata[i].name=pstrdup("HTMLDIR"); |
104 | 61 | get_html_path(my_exec_path,path); |
105 | 62 | cleanup_path(path); |
106 | | -configdata[2].setting=pstrdup(path); |
| 63 | +configdata[i].setting=pstrdup(path); |
| 64 | +i++; |
107 | 65 |
|
| 66 | +configdata[i].name=pstrdup("INCLUDEDIR"); |
108 | 67 | get_include_path(my_exec_path,path); |
109 | 68 | cleanup_path(path); |
110 | | -configdata[3].setting=pstrdup(path); |
| 69 | +configdata[i].setting=pstrdup(path); |
| 70 | +i++; |
111 | 71 |
|
| 72 | +configdata[i].name=pstrdup("PKGINCLUDEDIR"); |
112 | 73 | get_pkginclude_path(my_exec_path,path); |
113 | 74 | cleanup_path(path); |
114 | | -configdata[4].setting=pstrdup(path); |
| 75 | +configdata[i].setting=pstrdup(path); |
| 76 | +i++; |
115 | 77 |
|
| 78 | +configdata[i].name=pstrdup("INCLUDEDIR-SERVER"); |
116 | 79 | get_includeserver_path(my_exec_path,path); |
117 | 80 | cleanup_path(path); |
118 | | -configdata[5].setting=pstrdup(path); |
| 81 | +configdata[i].setting=pstrdup(path); |
| 82 | +i++; |
119 | 83 |
|
| 84 | +configdata[i].name=pstrdup("LIBDIR"); |
120 | 85 | get_lib_path(my_exec_path,path); |
121 | 86 | cleanup_path(path); |
122 | | -configdata[6].setting=pstrdup(path); |
| 87 | +configdata[i].setting=pstrdup(path); |
| 88 | +i++; |
123 | 89 |
|
| 90 | +configdata[i].name=pstrdup("PKGLIBDIR"); |
124 | 91 | get_pkglib_path(my_exec_path,path); |
125 | 92 | cleanup_path(path); |
126 | | -configdata[7].setting=pstrdup(path); |
| 93 | +configdata[i].setting=pstrdup(path); |
| 94 | +i++; |
127 | 95 |
|
| 96 | +configdata[i].name=pstrdup("LOCALEDIR"); |
128 | 97 | get_locale_path(my_exec_path,path); |
129 | 98 | cleanup_path(path); |
130 | | -configdata[8].setting=pstrdup(path); |
| 99 | +configdata[i].setting=pstrdup(path); |
| 100 | +i++; |
131 | 101 |
|
| 102 | +configdata[i].name=pstrdup("MANDIR"); |
132 | 103 | get_man_path(my_exec_path,path); |
133 | 104 | cleanup_path(path); |
134 | | -configdata[9].setting=pstrdup(path); |
| 105 | +configdata[i].setting=pstrdup(path); |
| 106 | +i++; |
135 | 107 |
|
| 108 | +configdata[i].name=pstrdup("SHAREDIR"); |
136 | 109 | get_share_path(my_exec_path,path); |
137 | 110 | cleanup_path(path); |
138 | | -configdata[10].setting=pstrdup(path); |
| 111 | +configdata[i].setting=pstrdup(path); |
| 112 | +i++; |
139 | 113 |
|
| 114 | +configdata[i].name=pstrdup("SYSCONFDIR"); |
140 | 115 | get_etc_path(my_exec_path,path); |
141 | 116 | cleanup_path(path); |
142 | | -configdata[11].setting=pstrdup(path); |
| 117 | +configdata[i].setting=pstrdup(path); |
| 118 | +i++; |
143 | 119 |
|
| 120 | +configdata[i].name=pstrdup("PGXS"); |
144 | 121 | get_pkglib_path(my_exec_path,path); |
145 | 122 | strlcat(path,"/pgxs/src/makefiles/pgxs.mk",sizeof(path)); |
146 | 123 | cleanup_path(path); |
147 | | -configdata[12].setting=pstrdup(path); |
| 124 | +configdata[i].setting=pstrdup(path); |
| 125 | +i++; |
148 | 126 |
|
| 127 | +configdata[i].name=pstrdup("CONFIGURE"); |
149 | 128 | #ifdefVAL_CONFIGURE |
150 | | -configdata[13].setting=pstrdup(VAL_CONFIGURE); |
| 129 | +configdata[i].setting=pstrdup(VAL_CONFIGURE); |
151 | 130 | #else |
152 | | -configdata[13].setting=pstrdup(_("not recorded")); |
| 131 | +configdata[i].setting=pstrdup(_("not recorded")); |
153 | 132 | #endif |
| 133 | +i++; |
154 | 134 |
|
| 135 | +configdata[i].name=pstrdup("CC"); |
155 | 136 | #ifdefVAL_CC |
156 | | -configdata[14].setting=pstrdup(VAL_CC); |
| 137 | +configdata[i].setting=pstrdup(VAL_CC); |
157 | 138 | #else |
158 | | -configdata[14].setting=pstrdup(_("not recorded")); |
| 139 | +configdata[i].setting=pstrdup(_("not recorded")); |
159 | 140 | #endif |
| 141 | +i++; |
160 | 142 |
|
| 143 | +configdata[i].name=pstrdup("CPPFLAGS"); |
161 | 144 | #ifdefVAL_CPPFLAGS |
162 | | -configdata[15].setting=pstrdup(VAL_CPPFLAGS); |
| 145 | +configdata[i].setting=pstrdup(VAL_CPPFLAGS); |
163 | 146 | #else |
164 | | -configdata[15].setting=pstrdup(_("not recorded")); |
| 147 | +configdata[i].setting=pstrdup(_("not recorded")); |
165 | 148 | #endif |
| 149 | +i++; |
166 | 150 |
|
| 151 | +configdata[i].name=pstrdup("CFLAGS"); |
167 | 152 | #ifdefVAL_CFLAGS |
168 | | -configdata[16].setting=pstrdup(VAL_CFLAGS); |
| 153 | +configdata[i].setting=pstrdup(VAL_CFLAGS); |
169 | 154 | #else |
170 | | -configdata[16].setting=pstrdup(_("not recorded")); |
| 155 | +configdata[i].setting=pstrdup(_("not recorded")); |
171 | 156 | #endif |
| 157 | +i++; |
172 | 158 |
|
| 159 | +configdata[i].name=pstrdup("CFLAGS_SL"); |
173 | 160 | #ifdefVAL_CFLAGS_SL |
174 | | -configdata[17].setting=pstrdup(VAL_CFLAGS_SL); |
| 161 | +configdata[i].setting=pstrdup(VAL_CFLAGS_SL); |
175 | 162 | #else |
176 | | -configdata[17].setting=pstrdup(_("not recorded")); |
| 163 | +configdata[i].setting=pstrdup(_("not recorded")); |
177 | 164 | #endif |
| 165 | +i++; |
178 | 166 |
|
| 167 | +configdata[i].name=pstrdup("LDFLAGS"); |
179 | 168 | #ifdefVAL_LDFLAGS |
180 | | -configdata[18].setting=pstrdup(VAL_LDFLAGS); |
| 169 | +configdata[i].setting=pstrdup(VAL_LDFLAGS); |
181 | 170 | #else |
182 | | -configdata[18].setting=pstrdup(_("not recorded")); |
| 171 | +configdata[i].setting=pstrdup(_("not recorded")); |
183 | 172 | #endif |
| 173 | +i++; |
184 | 174 |
|
| 175 | +configdata[i].name=pstrdup("LDFLAGS_EX"); |
185 | 176 | #ifdefVAL_LDFLAGS_EX |
186 | | -configdata[19].setting=pstrdup(VAL_LDFLAGS_EX); |
| 177 | +configdata[i].setting=pstrdup(VAL_LDFLAGS_EX); |
187 | 178 | #else |
188 | | -configdata[19].setting=pstrdup(_("not recorded")); |
| 179 | +configdata[i].setting=pstrdup(_("not recorded")); |
189 | 180 | #endif |
| 181 | +i++; |
190 | 182 |
|
| 183 | +configdata[i].name=pstrdup("LDFLAGS_SL"); |
191 | 184 | #ifdefVAL_LDFLAGS_SL |
192 | | -configdata[20].setting=pstrdup(VAL_LDFLAGS_SL); |
| 185 | +configdata[i].setting=pstrdup(VAL_LDFLAGS_SL); |
193 | 186 | #else |
194 | | -configdata[20].setting=pstrdup(_("not recorded")); |
| 187 | +configdata[i].setting=pstrdup(_("not recorded")); |
195 | 188 | #endif |
| 189 | +i++; |
196 | 190 |
|
| 191 | +configdata[i].name=pstrdup("LIBS"); |
197 | 192 | #ifdefVAL_LIBS |
198 | | -configdata[21].setting=pstrdup(VAL_LIBS); |
| 193 | +configdata[i].setting=pstrdup(VAL_LIBS); |
199 | 194 | #else |
200 | | -configdata[21].setting=pstrdup(_("not recorded")); |
| 195 | +configdata[i].setting=pstrdup(_("not recorded")); |
201 | 196 | #endif |
| 197 | +i++; |
| 198 | + |
| 199 | +configdata[i].name=pstrdup("VERSION"); |
| 200 | +configdata[i].setting=pstrdup("PostgreSQL "PG_VERSION); |
| 201 | +i++; |
202 | 202 |
|
203 | | -configdata[22].setting=pstrdup("PostgreSQL "PG_VERSION); |
| 203 | +Assert(i==*configdata_len); |
204 | 204 |
|
205 | 205 | returnconfigdata; |
206 | 206 | } |