git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Support generate poison .mo files for testing

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Aug 23, 2012, 11:00 UTC
Message-ID
<CACsJy8Ak0iR9WytPys1uy=M52TVh+0y4DWrv63Efvie4nsRORA@mail.gmail.com>
In-Reply-To
<7vtxvuand1.fsf@alter.siamese.dyndns.org>
On Wed, Aug 22, 2012 at 11:43 PM, Junio C Hamano <gitster@pobox.com> wrote:
> why are you special casing a run of non-blank letters that begin
> with a dollar sign (swapping two ints is done with "%2$d %1$d", a
> percent still at the beginning, so there must be something else I am
> missing)?

'$' is for shell variables. I should separate it from C messages. All these because now that we run the (fake) translation through gettext toolchain, it'll catch us if we don't preserve dynamic parts correctly.

> Also why do you stop at isspace()?  Isn't a " " (space) a flag that
> means "If the first character of a signed conversion is not a sign
> or if a signed conversion results in no characters, a <space> shall
> be prefixed to the result."
A hurry attempt to get past msgfmt. I should refine these code, either by...
Show 29 quoted lines
> As the flags, min-width, precision, and length do not share the same
> character as the conversion that has to come at the end, I think you
> only want to do something like
>
>         /*
>          * conversion specifier characters, taken from:
>          * http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html
>          */
>         static const char printf_conversion[] = "diouxXfFeEgGaAcspnCS%";
>
>         ...
>
>         while (msg < end) {
>                 if (*msg == '%') {
>                         strbuf_addch(buf, *msg++);
>                         while (msg < end) {
>                                 int ch = *msg++;
>                                 strbuf_addch(buf, ch);
>                                 if (strchr(printf_conversion, ch))
>                                         break;
>                         }
>                         /* copied the printf part literally */
>                         continue;
>                 }
>                 ... keep \n ...
>                 ... muck with string ...
>         }
>
> perhaps?
following this, or copying the matching logic from msgfmt source.
-- 
Duy
Previous: Junio C Hamano
Message 10 of 10 in “Build in gettext poison feature unconditionally”
  1. Build in gettext poison feature unconditionallyNguyễn Thái Ngọc Duy, Aug 21, 2012
  2. Jonathan NiederAug 21, 2012
  3. Junio C HamanoAug 21, 2012
  4. Support generate poison .mo files for testingNguyễn Thái Ngọc Duy, Aug 22, 2012
  5. Junio C HamanoAug 22, 2012
  6. Nguyen Thai Ngoc DuyAug 22, 2012
  7. Junio C HamanoAug 22, 2012
  8. Nguyen Thai Ngoc DuyAug 23, 2012
  9. Junio C HamanoAug 22, 2012
  10. Nguyen Thai Ngoc DuyAug 23, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.