/src/common/config_info.c
C | 201 lines | 149 code | 30 blank | 22 comment | 2 complexity | 7d0e0427329b58dd9ba5d29a6fded8dc MD5 | raw file
Possible License(s): AGPL-3.0
- /*-------------------------------------------------------------------------
- *
- * config_info.c
- * Common code for pg_config output
- *
- *
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- * src/common/config_info.c
- *
- *-------------------------------------------------------------------------
- */
- #ifndef FRONTEND
- #include "postgres.h"
- #else
- #include "postgres_fe.h"
- #endif
- #include "common/config_info.h"
- /*
- * 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(const char *my_exec_path, size_t *configdata_len)
- {
- ConfigData *configdata;
- char path[MAXPGPATH];
- char *lastsep;
- int i = 0;
- /* Adjust this to match the number of items filled below */
- *configdata_len = 23;
- configdata = (ConfigData *) palloc(*configdata_len * sizeof(ConfigData));
- configdata[i].name = pstrdup("BINDIR");
- strlcpy(path, my_exec_path, sizeof(path));
- lastsep = strrchr(path, '/');
- if (lastsep)
- *lastsep = '\0';
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("DOCDIR");
- get_doc_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("HTMLDIR");
- get_html_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("INCLUDEDIR");
- get_include_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("PKGINCLUDEDIR");
- get_pkginclude_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("INCLUDEDIR-SERVER");
- get_includeserver_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("LIBDIR");
- get_lib_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("PKGLIBDIR");
- get_pkglib_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("LOCALEDIR");
- get_locale_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("MANDIR");
- get_man_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("SHAREDIR");
- get_share_path(my_exec_path, path);
- cleanup_path(path);
- configdata[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("SYSCONFDIR");
- get_etc_path(my_exec_path, path);
- cleanup_path(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[i].setting = pstrdup(path);
- i++;
- configdata[i].name = pstrdup("CONFIGURE");
- configdata[i].setting = pstrdup(CONFIGURE_ARGS);
- i++;
- configdata[i].name = pstrdup("CC");
- #ifdef VAL_CC
- configdata[i].setting = pstrdup(VAL_CC);
- #else
- configdata[i].setting = pstrdup(_("not recorded"));
- #endif
- i++;
- configdata[i].name = pstrdup("CPPFLAGS");
- #ifdef VAL_CPPFLAGS
- configdata[i].setting = pstrdup(VAL_CPPFLAGS);
- #else
- configdata[i].setting = pstrdup(_("not recorded"));
- #endif
- i++;
- configdata[i].name = pstrdup("CFLAGS");
- #ifdef VAL_CFLAGS
- configdata[i].setting = pstrdup(VAL_CFLAGS);
- #else
- configdata[i].setting = pstrdup(_("not recorded"));
- #endif
- i++;
- configdata[i].name = pstrdup("CFLAGS_SL");
- #ifdef VAL_CFLAGS_SL
- configdata[i].setting = pstrdup(VAL_CFLAGS_SL);
- #else
- configdata[i].setting = pstrdup(_("not recorded"));
- #endif
- i++;
- configdata[i].name = pstrdup("LDFLAGS");
- #ifdef VAL_LDFLAGS
- configdata[i].setting = pstrdup(VAL_LDFLAGS);
- #else
- configdata[i].setting = pstrdup(_("not recorded"));
- #endif
- i++;
- configdata[i].name = pstrdup("LDFLAGS_EX");
- #ifdef VAL_LDFLAGS_EX
- configdata[i].setting = pstrdup(VAL_LDFLAGS_EX);
- #else
- configdata[i].setting = pstrdup(_("not recorded"));
- #endif
- i++;
- configdata[i].name = pstrdup("LDFLAGS_SL");
- #ifdef VAL_LDFLAGS_SL
- configdata[i].setting = pstrdup(VAL_LDFLAGS_SL);
- #else
- configdata[i].setting = pstrdup(_("not recorded"));
- #endif
- i++;
- configdata[i].name = pstrdup("LIBS");
- #ifdef VAL_LIBS
- configdata[i].setting = pstrdup(VAL_LIBS);
- #else
- configdata[i].setting = pstrdup(_("not recorded"));
- #endif
- i++;
- configdata[i].name = pstrdup("VERSION");
- configdata[i].setting = pstrdup("PostgreSQL " PG_VERSION);
- i++;
- Assert(i == *configdata_len);
- return configdata;
- }