#include "postgres_fe.h"
#endif
-#include "miscadmin.h"
#include "common/config_info.h"
+#include "miscadmin.h"
-static size_t configdata_names_len(void);
-
-static const char *const configdata_names[] =
-{
- "BINDIR",
- "DOCDIR",
- "HTMLDIR",
- "INCLUDEDIR",
- "PKGINCLUDEDIR",
- "INCLUDEDIR-SERVER",
- "LIBDIR",
- "PKGLIBDIR",
- "LOCALEDIR",
- "MANDIR",
- "SHAREDIR",
- "SYSCONFDIR",
- "PGXS",
- "CONFIGURE",
- "CC",
- "CPPFLAGS",
- "CFLAGS",
- "CFLAGS_SL",
- "LDFLAGS",
- "LDFLAGS_EX",
- "LDFLAGS_SL",
- "LIBS",
- "VERSION",
- NULL
-};
-
-static size_t
-configdata_names_len(void)
-{
- size_t i = 0;
-
- while (configdata_names[i])
- i++;
-
- return i;
-}
/*
- * get_configdata(char *my_exec_path, size_t *configdata_len)
+ * get_configdata(const char *my_exec_path, size_t *configdata_len)
*
* Get configure-time constants. The caller is responsible
* for pfreeing the result.
*/
ConfigData *
-get_configdata(char *my_exec_path, size_t *configdata_len)
+get_configdata(const char *my_exec_path, size_t *configdata_len)
{
ConfigData *configdata;
char path[MAXPGPATH];
char *lastsep;
- int i;
+ int i = 0;
- *configdata_len = configdata_names_len();
- configdata = palloc(*configdata_len * sizeof(ConfigData));
+ /* Adjust this to match the number of items filled below */
+ *configdata_len = 23;
+ configdata = (ConfigData *) palloc(*configdata_len * sizeof(ConfigData));
- /*
- * initialize configdata names
- *
- * These better be in sync with the settings manually
- * defined below.
- */
- for (i = 0; i < *configdata_len; i++)
- configdata[i].name = pstrdup(configdata_names[i]);
-
- strcpy(path, my_exec_path);
+ configdata[i].name = pstrdup("BINDIR");
+ strlcpy(path, my_exec_path, sizeof(path));
lastsep = strrchr(path, '/');
if (lastsep)
*lastsep = '\0';
cleanup_path(path);
- configdata[0].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("DOCDIR");
get_doc_path(my_exec_path, path);
cleanup_path(path);
- configdata[1].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("HTMLDIR");
get_html_path(my_exec_path, path);
cleanup_path(path);
- configdata[2].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("INCLUDEDIR");
get_include_path(my_exec_path, path);
cleanup_path(path);
- configdata[3].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("PKGINCLUDEDIR");
get_pkginclude_path(my_exec_path, path);
cleanup_path(path);
- configdata[4].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("INCLUDEDIR-SERVER");
get_includeserver_path(my_exec_path, path);
cleanup_path(path);
- configdata[5].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("LIBDIR");
get_lib_path(my_exec_path, path);
cleanup_path(path);
- configdata[6].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("PKGLIBDIR");
get_pkglib_path(my_exec_path, path);
cleanup_path(path);
- configdata[7].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("LOCALEDIR");
get_locale_path(my_exec_path, path);
cleanup_path(path);
- configdata[8].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("MANDIR");
get_man_path(my_exec_path, path);
cleanup_path(path);
- configdata[9].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("SHAREDIR");
get_share_path(my_exec_path, path);
cleanup_path(path);
- configdata[10].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("SYSCONFDIR");
get_etc_path(my_exec_path, path);
cleanup_path(path);
- configdata[11].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("PGXS");
get_pkglib_path(my_exec_path, path);
strlcat(path, "/pgxs/src/makefiles/pgxs.mk", sizeof(path));
cleanup_path(path);
- configdata[12].setting = pstrdup(path);
+ configdata[i].setting = pstrdup(path);
+ i++;
+ configdata[i].name = pstrdup("CONFIGURE");
#ifdef VAL_CONFIGURE
- configdata[13].setting = pstrdup(VAL_CONFIGURE);
+ configdata[i].setting = pstrdup(VAL_CONFIGURE);
#else
- configdata[13].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+ configdata[i].name = pstrdup("CC");
#ifdef VAL_CC
- configdata[14].setting = pstrdup(VAL_CC);
+ configdata[i].setting = pstrdup(VAL_CC);
#else
- configdata[14].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+ configdata[i].name = pstrdup("CPPFLAGS");
#ifdef VAL_CPPFLAGS
- configdata[15].setting = pstrdup(VAL_CPPFLAGS);
+ configdata[i].setting = pstrdup(VAL_CPPFLAGS);
#else
- configdata[15].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+ configdata[i].name = pstrdup("CFLAGS");
#ifdef VAL_CFLAGS
- configdata[16].setting = pstrdup(VAL_CFLAGS);
+ configdata[i].setting = pstrdup(VAL_CFLAGS);
#else
- configdata[16].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+ configdata[i].name = pstrdup("CFLAGS_SL");
#ifdef VAL_CFLAGS_SL
- configdata[17].setting = pstrdup(VAL_CFLAGS_SL);
+ configdata[i].setting = pstrdup(VAL_CFLAGS_SL);
#else
- configdata[17].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+ configdata[i].name = pstrdup("LDFLAGS");
#ifdef VAL_LDFLAGS
- configdata[18].setting = pstrdup(VAL_LDFLAGS);
+ configdata[i].setting = pstrdup(VAL_LDFLAGS);
#else
- configdata[18].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+ configdata[i].name = pstrdup("LDFLAGS_EX");
#ifdef VAL_LDFLAGS_EX
- configdata[19].setting = pstrdup(VAL_LDFLAGS_EX);
+ configdata[i].setting = pstrdup(VAL_LDFLAGS_EX);
#else
- configdata[19].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+ configdata[i].name = pstrdup("LDFLAGS_SL");
#ifdef VAL_LDFLAGS_SL
- configdata[20].setting = pstrdup(VAL_LDFLAGS_SL);
+ configdata[i].setting = pstrdup(VAL_LDFLAGS_SL);
#else
- configdata[20].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+ configdata[i].name = pstrdup("LIBS");
#ifdef VAL_LIBS
- configdata[21].setting = pstrdup(VAL_LIBS);
+ configdata[i].setting = pstrdup(VAL_LIBS);
#else
- configdata[21].setting = pstrdup(_("not recorded"));
+ configdata[i].setting = pstrdup(_("not recorded"));
#endif
+ i++;
+
+ configdata[i].name = pstrdup("VERSION");
+ configdata[i].setting = pstrdup("PostgreSQL " PG_VERSION);
+ i++;
- configdata[22].setting = pstrdup("PostgreSQL " PG_VERSION);
+ Assert(i == *configdata_len);
return configdata;
}