On 23-May-2010 Dominique Pellé <[email protected]> wrote:
> James Vega wrote:
> 
> > Since Vim can now open “largefiles” on 32-bit systems, there are some
> > changes necessary to properly store/access the size of those files.
> > This is easy to see as when you open a largefile, the status message
> > showing the number of lines and characters in the file will have a
> > negative number of characters for largefiles since the 32-bit long was
> > overflowed.
> >
> > The attached patch (generated against 7d3cf4693a8f) changes the relevant
> > buffer size pieces of the code to use off_t instead of long.
> > Unfortunately, there isn't a standard way to format off_t for
> > printf-style functions, so that required some preprocessor checks for
> > what to use.  There may be a better way to do that, but it worked for
> > me.
> >
> > I've tested this on Windows with VS Express 2008 and Linux (both 32-bit
> > and 64-bit environments).
> 
> 
> Hi James
> 
> This chunk...
> 
> @@ -5062,7 +5062,7 @@
>         if (nchars == 1)
>             STRCPY(p, _("1 character"));
>         else
> -           sprintf((char *)p, _("%ld characters"), nchars);
> +           sprintf((char *)p, _(PRINTF_OFF_T" characters"), nchars);
>      }
>  }
> 
> Changes the translated string in src/po/??.po files from:
> 
>   #, c-format
>   msgid "%ld characters"
> 
> ... into:
> 
>   #, c-format
> 
> Notice that the %ld has disappeared in the po file. Isn't it an issue?
>   msgid " characters"

I don't think there is such a problem - «PRINTF_OFF_T" characters"»
becomes a single string before the call to _() takes place. This string
can either be:
- "%ld characters"
or
- "%lld characters"
This means, there are now two versions of the translated text possible
which should be taken into account.

The problem with this patch that I notice is a warning from gcc:

gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA     -g -O2 
-D_FORTIFY_SOURCE=1          -o objects/fileio.o fileio.c
fileio.c: In function ‘msg_add_lines’:
fileio.c:5054: warning: format ‘%ld’ expects type ‘long int’, but argument 4 
has type ‘off_t’
fileio.c:5065: warning: format ‘%ld’ expects type ‘long int’, but argument 3 
has type ‘off_t’

-- 
Cheers,
Lech

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui