aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2011-11-29 22:04:59 +0200
committerPeter Eisentraut <peter_e@gmx.net>2011-11-29 23:51:28 +0200
commit75b61836940aaa81f3073c7e77f8c295d99093ae (patch)
tree53e4b3c33a4b9b8604433006aebff2fac3eee8b5
parentd16ebde58275d848968e758ec643efc8ce64c8fa (diff)
downloadpostgresql-75b61836940aaa81f3073c7e77f8c295d99093ae.tar.gz
postgresql-75b61836940aaa81f3073c7e77f8c295d99093ae.zip
Strip file names reported in error messages in vpath builds
In vpath builds, the __FILE__ macro that is used in verbose error reports contains the full absolute file name, which makes the error messages excessively verbose. So keep only the base name, thus matching the behavior of non-vpath builds.
-rw-r--r--src/backend/utils/error/elog.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 71aed1e0f1d..49ce20112ff 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -335,7 +335,14 @@ errstart(int elevel, const char *filename, int lineno,
edata->elevel = elevel;
edata->output_to_server = output_to_server;
edata->output_to_client = output_to_client;
- edata->filename = filename;
+ if (filename)
+ {
+ const char *slash;
+
+ /* keep only base name, useful especially for vpath builds */
+ slash = strrchr(filename, '/');
+ edata->filename = slash ? slash + 1 : filename;
+ }
edata->lineno = lineno;
edata->funcname = funcname;
/* the default text domain is the backend's */
@@ -1103,7 +1110,14 @@ elog_start(const char *filename, int lineno, const char *funcname)
}
edata = &errordata[errordata_stack_depth];
- edata->filename = filename;
+ if (filename)
+ {
+ const char *slash;
+
+ /* keep only base name, useful especially for vpath builds */
+ slash = strrchr(filename, '/');
+ edata->filename = slash ? slash + 1 : filename;
+ }
edata->lineno = lineno;
edata->funcname = funcname;
/* errno is saved now so that error parameter eval can't change it */