[AC] zwalony grep

Jakub Bogusz qboosh w pld-linux.org
Czw, 11 Mar 2004, 21:41:43 CET


On Thu, Mar 11, 2004 at 08:57:16PM +0100, Paweł Sakowski wrote:
> U mnie zależnie od locale są krzaki lub
> 
> grep: plik_ktorego_nie_ma:
> 
> Podejrzewam pliki tłumaczeń lub wywołanie gettext-a.

Nie... to jest bardziej zakręcone.

Funkcja strerror_r() z glibc nie trzyma się standardu[1] i zwraca wskaźnik
zamiast inta, natomiast nie wypełnia bufora(!).

A druga rzecz to to, że wykrywanie - test dla wersji glibcowej był
zaszyty w makrze o takiej samej nazwie co standardowe makro autoconfa
bez tego testu - przez co po regeneracji ac była wykonywana wersja
standardowa i grep próbował używać funkcji strerror_r() jako zgodnej
z POSIX / SUSv3.


[1] komentarz w man 3 strerror_r, opis wg POSIX w man 3p strerror_r

testcase:

#v+
#include <string.h>
#include <errno.h>

int main()
{
  char buf[1024] = "non-standard";
  long x;
  x = strerror_r(ENOENT, buf, sizeof(buf));
  printf("%08x %s\n", (int)x, buf);
  if((x < -200) || (x > 0))
    printf("returned string: %s\n", (char*)x);
}
#v-


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl