SKŁADNIA
#include <unistd.h>
size_t confstr(int name, char *buf, size_t len);
Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):
confstr(): _POSIX_C_SOURCE >= 2 || _XOPEN_SOURCE
OPIS
Funkcja confstr() pobiera wartość zależnych od konfiguracji zmiennych systemowych.Argument name wyznacza pobieraną zmienną systemową. Dostępne są zmienne:
- _CS_GNU_LIBC_VERSION (tylko biblioteka GNU C; od glibc 2.3.2)
- Łańcuch znaków identyfikujący wersję biblioteki GNU C w systemie (np. "glibc 2.3.4").
- _CS_GNU_LIBPTHREAD_VERSION (tylko biblioteka GNU C; od glibc 2.3.2)
- Łańcuch znaków identyfikujący wersję POSIX-owej implementacji wątków dostarczaną przez bibliotekę C (np. "NPTL 2.3.4" lub "linuxthreads-0.10").
- _CS_PATH
- Wartość zmiennej PATH zawierającej ścieżkę, w której znaleźć można wszystkie standardowe programy narzędziowe POSIX.2.
Jeśli argument buf jest różny od NULL i len jest różne od zera, to funkcja confstr() kopiuje wartość łańcucha znaków do buf obciętą, jeśli to konieczne, do len - 1 bajtów i zakończoną bajtem null ("\0"). Może to zostać wykryte przez porównanie zwracanej przez confstr() wartości z argumentem len.
Jeśli len wynosi zero i buf jest równe NULL, to funkcja confstr() po prostu zwraca wartość podaną poniżej.
WARTOŚĆ ZWRACANA
Jeśli name jest poprawną zmienną konfiguracji, to confstr() zwraca liczbę bajtów (włączając kończący bajt null), które byłyby potrzebne do przechowania pełnej wartości tej zmiennej. Wartość może być większa niż len, co oznacza, że wartość w buf jest obcięta.Jeśli name jest poprawną zmienną konfiguracji, ale wartość tej zmiennej jest pusta, to confstr() zwraca 0. Jeśli name nie jest nazwą poprawnej zmiennej konfiguracji, to confstr() zwraca 0 i ustawia errno na EINVAL.
BŁĘDY
- EINVAL
- Wartość name jest nieprawidłowa.
ZGODNE Z
POSIX.1-2001.PRZYKŁAD
Poniższy fragment kodu podaje ścieżkę, w której znaleźć znaleźć można programy systemowe POSIX.2:char *pathbuf; size_t n; n = confstr(_CS_PATH, NULL, (size_t) 0); pathbuf = malloc(n); if (pathbuf == NULL) abort(); confstr(_CS_PATH, pathbuf, n);
O STRONIE
Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Adam Byrtek (PTM) <[email protected]>, Andrzej Krzysztofowicz (PTM) <[email protected]>, Robert Luberda <[email protected]> i Michał Kułach <[email protected]>.Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.71 oryginału.