getcwd işlevi sizin tarafınızdan sağlanan tampon karakter dizisine o anki çalışma dizinini ifade eden mutlak dosya ismini kaydederek döner. boyut argümanı ile sisteme tampon için ayrılan boyut bildirilir.
Bu işlevin GNU kütüphanesindeki sürümü
tampon argümanı olarak bir boş gösterici belirtebilmenizi mümkün kılar. Bu durumda
getcwd işlevi
malloc ile tamponu kendisi ayırır (bkz.
Özgür Bellek Ayırma). Eğer
boyut sıfırdan büyükse, tampon bu kadar daha büyük olur, aksi takdirde tampon sonucu tutmaya yetecek büyüklükte olur.
İşlevin normal dönüş değeri tampon'dur. Başarısızlık halinde boş gösterici döner. Aşağıdaki errno hata durumları bu işlev için tanımlanmıştır:
- EINVAL
boyut argümanı sıfır ve tampon boş gösterici değil.
- ERANGE
boyut argümanı ile belirtilen uzunluk çalışma dizini isminden daha kısa. Daha büyük dizi ayırarak yeniden deneyin.
- EACCES
Dosya isminin bir elemanını aramak ya da okumak için izin verilmedi.
GNU'nun getcwd (NULL, 0) davranışını sadece getcwd işlevinin standart davranışını kullanarak gerçekleştirebilirdiniz:
char *
gnu_getcwd ()
{
size_t size = 100;
while (1)
{
char *buffer = (char *) xmalloc (size);
if (getcwd (buffer, size) == buffer)
return buffer;
free (buffer);
if (errno != ERANGE)
return 0;
size *= 2;
}
}
Bir kütüphane işlevi olmayan ama çoğu GNU yazılımında kullanılan bir özelleştirilmiş isim olan
xmalloc hakkında daha fazla bilgi için
malloc Örnekleri bölümüne bakınız.