Re: BUG #6066: [PATCH] Mark more strings as c-format - Mailing list pgsql-bugs
From | Christoph Berg |
---|---|
Subject | Re: BUG #6066: [PATCH] Mark more strings as c-format |
Date | |
Msg-id | 20110617111033.GD4130@msgid.df7cb.de Whole thread Raw |
In response to | Re: BUG #6066: Bad string in German translation causes segfault (user-triggerable) (Christoph Berg <cb@df7cb.de>) |
Responses |
Re: BUG #6066: [PATCH] Mark more strings as c-format
Re: BUG #6066: [PATCH] Mark more strings as c-format |
List | pgsql-bugs |
Re: To pgsql-bugs@postgresql.org 2011-06-17 <20110617091114.GC4130@msgid.df= 7cb.de> > Unfortunately that doesn't help in this case, as the bad string isn't > tagged as "#, c-format", but still gets used as such. This seems to be > the case for many errhint() strings. Maybe xgettext should be taught > to treat all errhint() et al arguments as c-strings. Here's a patch to implement that, with backend/nls.mk updated. msgfmt -c is already available in the "maintainer-check-po" target. I'd assume this was called at least once during the release process. diff --git a/src/backend/nls.mk b/src/backend/nls.mk index 1894569..3c3f8ed 100644 *** a/src/backend/nls.mk --- b/src/backend/nls.mk *************** GETTEXT_TRIGGERS:=3D _ errmsg errmsg_plura *** 6,11 **** --- 6,15 ---- errdetail_plural:1,2 errhint errcontext \ GUC_check_errmsg GUC_check_errdetail GUC_check_errhint \ write_stderr yyerror parser_yyerror + GETTEXT_FLAGS :=3D errmsg:1:c-format errmsg_plural:1:c-format \ + errmsg_plural:2:c-format errhint:1:c-format errcontext:1:c-format \ + GUC_check_errmsg:1:c-format GUC_check_errdetail:1:c-format \ + GUC_check_errhint:1:c-format write_stderr:1:c-format =20=20 gettext-files: distprep find $(srcdir)/ $(srcdir)/../port/ -name '*.c' -print >$@ diff --git a/src/nls-global.mk b/src/nls-global.mk index 32b3c0f..3aa598f 100644 *** a/src/nls-global.mk --- b/src/nls-global.mk *************** *** 12,17 **** --- 12,20 ---- # GETTEXT_FILES -- list of source files that contain message strings # GETTEXT_TRIGGERS -- (optional) list of functions that contain # translatable strings + # GETTEXT_FLAGS -- (optional) list of gettext --flag arguments to mark + # function arguments that contain C format strin= gs + # (functions must be listed in TRIGGERS and FLAG= S) # # That's all, the rest is done here, if --enable-nls was specified. # *************** all-po: $(MO_FILES) *** 48,54 **** ifeq ($(word 1,$(GETTEXT_FILES)),+) po/$(CATALOG_NAME).pot: $(word 2, $(GETTEXT_FILES)) $(MAKEFILE_LIST) ifdef XGETTEXT ! $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) -f $< else @echo "You don't have 'xgettext'."; exit 1 endif --- 51,57 ---- ifeq ($(word 1,$(GETTEXT_FILES)),+) po/$(CATALOG_NAME).pot: $(word 2, $(GETTEXT_FILES)) $(MAKEFILE_LIST) ifdef XGETTEXT ! $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(addpr= efix --flag=3D, $(GETTEXT_FLAGS)) -f $< else @echo "You don't have 'xgettext'."; exit 1 endif *************** po/$(CATALOG_NAME).pot: $(GETTEXT_FILES) *** 57,63 **** # Change to srcdir explicitly, don't rely on $^. That way we get # consistent #: file references in the po files. ifdef XGETTEXT ! $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(GETTE= XT_FILES) else @echo "You don't have 'xgettext'."; exit 1 endif --- 60,66 ---- # Change to srcdir explicitly, don't rely on $^. That way we get # consistent #: file references in the po files. ifdef XGETTEXT ! $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(addpr= efix --flag=3D, $(GETTEXT_FLAGS)) $(GETTEXT_FILES) else @echo "You don't have 'xgettext'."; exit 1 endif Christoph --=20 cb@df7cb.de | http://www.df7cb.de/
pgsql-bugs by date: