Envz İşlevleri
Önceki Argz ve Envz Vektörleri Sonraki
Envz İşlevleri
Envz vektörleri her elemanının üzerindeki ek kısıtlamalar dışında argz vektörleri gibidir; örneğin, gerekirse, üzerlerinde argz işlevleri de kullanılabilir.
Envz vektörünün her elemanı '=' işareti ile ayrılmış bir isim-değer çiftidir; eğer bir eleman içinde birden fazla '=' karakteri varsa bu karakterlerden ilkinden sonraki dizge değer olarak kabul edilir ve hepsi '\0'’dan farklı bir karakter olarak ele alınır.
Eleman bir '=' karakteri içermiyorsa, eleman bir "null" girdinin ismi kabul edilir. Bu girdiyi bir boş değerli girdiden ayırmak için: envz_get işlevi isim bir null girdinin ismi ise 0 ile döner, aksine girdi bir boş değer içeriyor "" döner; envz_entry işlevi bu tür girdileri nasıl olursa olsun bulacaktır. Null girdiler envz_strip işlevi ile kaldırılabilir.
Argz işlevlerindeki gibi, envz işlevlerinin de bellek ayırabildiğinden error_t türünde dönüş değeri vardır ve ya 0 ya da ENOMEM ile döner.
Bu işlevler standat bir başlık dosyası olan envz.h dosyasında bildirilmiştir.
char *envz_entry
(const char *envz,
 size_t      envz_boyu,
 const char *isim)
işlev
envz_entry işlevi envz içinde isim isimli girdiyi bulur ve bu elemana (eleman isim ile başlar ve '=' karakteri ile devam eder) bir gösterici ile döner. Belirtilen ismi içeren bir eleman yoksa 0 döner.
char *envz_get
(const char *envz,
 size_t      envz_boyu,
 const char *isim)
işlev
envz_get işlevi envz içinde isim isimli girdiyi bulur ve bu elemanın değer parçasına ('=' karakterinden sonrası) bir gösterici ile döner. Eğer bu ismi içeren bir eleman yoksa ya da eleman sadece isim parçasından oluşuyorsa (null girdi), 0 döner.
error_t envz_add
(char      **envz,
 size_t     *envz_boyu,
 const char *isim,
 const char *değer)
işlev
envz_add işlevi, isim isimli ve değer değerli bir girdiyi *envz vektörüne ekler ve *envz ile *envz_boyu’nu güncelleyerek *envz için tekrar yer ayırır. envz içinde aynı isimli bir girdi varsa önce bu girdi kaldırılır. Eğer değer 0 ise, yeni girdi özel null türü girdi (yukarıda bahsedilmişti) olacaktır.
error_t envz_merge
(char      **envz,
 size_t     *envz_boyu,
 const char *envz2,
 size_t      envz2_boyu,
 int         üsteyaz)
işlev
envz_merge işlevi, envz2 içindeki girdileri envz vektörüne ekler ve envz_add işlevindeki gibi *envz ve *envz_boyu’nu günceller. Eğer üsteyaz doğru ise, envz2 içindeki girdilerden envz içinde olanlar varsa envz2 içindekiler envz içindekilerin üstüne yazılır, değilse üste yazılmaz.
Null girdiler de diğer girdiler gibi ele alınır. Yani, her iki vektörde de aynı isimde iki girdi varsa, envz içindeki bir null girdi ise ve üsteyaz yanlışsa, envz2 içindeki girdi envz vektörüne eklenmez.
void envz_strip
(char  **envz,
 size_t *envz_boyu)
işlev
envz_strip işlevi envz içindeki null girdileri *envz ve *envz_boyu’nu güncelleyerek kaldırır.
Önceki Üst Ana Başlık Sonraki
Argz İşlevleri Başlangıç VI. Oylum - Karakter Kümeleriyle Çalışma
Bir Linux Kitaplığı Sayfası