This is the mail archive of the cygwin-developers@sourceware.cygnus.com mailing list for the Cygwin project. See the Cygwin home page for more information.
Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: (fixed patch) "%E" formatting for the humans


Corinna Vinschen <corinna.vinschen@cityweb.de> writes:
> Mumit Khan wrote:
> > [...]
> > +                * NOTE: Currently there is no policy for how long the
> > +                * the buffers are, and looks like 256 is a smallest one
> > +                * (dlfcn.cc). Other than error 1395 (length 213) and
> > +                * error 1015 (length 249), the rest are all under 188
> > +                * characters, and so I'll use 189 as the buffer length.
> > +                * For those longer error messages, FormatMessage will
> > +                * return FALSE, and we'll get the old behaviour such as
> > +                * ``Win32 error 1395'' etc.
> > +                */
> > +               const int bufferlen = 189;
> > [...]
> > Regards,
> > Mumit
> 
> Consider other native language versions of the system. E.g. german
> expressions are longer than english one's in the most cases.
> 

The reason I limited the buffer size here is that I don't much about how
the various char buffers are scattered throughout winsup, and didn't want
to introduce a subtle bug due to overruns. My scheme is very safe in that
it will get the proper error messages as long as it fits within the
supplied buffer, and if it doesn't, fall back on the old-style message.

Someone with more experience with/time on winsup should be able to track 
all the various buffer sizes and then just adjust this limit accordingly.

Regards,
Mumit