glob çağrısı
Önceki Genelleme Sonraki
glob çağrısı
Genelleme işleminin sonucu bir dosya isimleri göstericileri dizisidir. Bu diziyi döndürmek için glob işlevi aslında bir yapı olan özel bir veri türü, glob_t kullanır. glob işlevine yapının adresini aktarırsanız, işlev, sonucu yapının alanlarına yazar.
glob_t
veri türü
Bu veri türü bir dizge göstericileri dizisine bir gösterici tutar. Daha açıkçası, bu dizinin adresini ve boyutunu kaydeder. GNU gerçeklenimi standartdışı olarak biraz daha fazla alan içerir.
gl_pathc
Gösterici dizisindeki eleman sayısı; GLOB_DOOFFS seçeneği kullanılmışsa baştaki boş girdiler hariç (aşağıdaki gl_offs'a bakınız).
gl_pathv
Gösterici dizisinin adresi; bu alan char ** türündedir.
gl_offs
gl_pathv alanındaki adresten itibaren ilk gerçek elemanın konumu. Diğer alanların tersine bu alan glob işlevi için daima bir girdidir (diğer alanları işlev doldurur).
Eğer konuma sıfırdan farklı bir değer belirtirseniz, gösterici dizisinin başlangıcından itibaren bazı elemanlar boş kalacaktır. (glob işlevi oraları boş göstericilerle doldurur.)
gl_offs alanı sadece GLOB_DOOFFS seçeneği etkinse anlamlıdır. Aksi takdirde bu alanın ne içerdiğine bakılmaksızın konumun sıfır olduğu varsayılır, yani ilk eleman gösterici dizisinin başına konur.
gl_closedir
closedir işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan void (*) (void *) türündedir.
Bu alan bir GNU oluşumudur.
gl_readdir
Bir dizinin içeriğini okumakta kullanılan readdir işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan struct dirent *(*) (void *) türündedir.
Bu alan bir GNU oluşumudur.
gl_opendir
opendir işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan void *(*) (const char *) türündedir.
Bu alan bir GNU oluşumudur.
gl_stat
Dosya sistemindeki bir nesne hakkında bilgi döndüren stat işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan int (*) (const char *, struct stat *) türündedir.
Bu alan bir GNU oluşumudur.
gl_lstat
Dosya sistemindeki bir nesne hakkında bilgi döndüren, ancak sembolik bağları izlemeyen lstat işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan int (*) (const char *, struct stat *) türündedir.
Bu alan bir GNU oluşumudur.
glob64 işlevinde kullanmak üzere glob.h başlık dosyası bu türe çok benzer bir başka tanım içerir. glob64_t türü glob_t türünden sadece gl_readdir, gl_stat ve gl_lstat elemanlarının farklı türde olması ile farklıdır.
glob64_t
veri türü
Bu veri türü bir dizge göstercileri dizisine bir gösterici tutar. Daha açıkçası, dizinin adresini ve boyutunu kaydeder. GNU gerçeklenimi standartdışı olarak biraz daha fazla alan içerir.
gl_pathc
Gösterici dizisindeki eleman sayısı; GLOB_DOOFFS seçeneği kullanılmışsa baştaki boş girdiler hariç (aşağıdaki gl_offs'a bakınız).
gl_pathv
Gösterici dizisinin adresi; bu alan char ** türündedir.
gl_offs
gl_pathv alanındaki adresten itibaren ilk gerçek elemanın konumu. Diğer alanların tersine bu alan glob işlevi için daima bir girdidir (diğer alanları işlev doldurur).
Eğer konuma sıfırdan farklı bir değer belirtirseniz, gösterici dizisinin başlangıcından itibaren bazı elemanlar boş kalacaktır. (glob işlevi oraları boş göstericilerle doldurur.)
gl_offs alanı sadece GLOB_DOOFFS seçeneği etkinse anlamlıdır. Aksi takdirde bu alanın ne içerdiğine bakılmaksızın konumun sıfır olduğu varsayılır, yani ilk eleman gösterici dizisinin başına konur.
gl_closedir
closedir işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan void (*) (void *) türündedir.
Bu alan bir GNU oluşumudur.
gl_readdir
readdir64 işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan struct dirent64 *(*) (void *) türündedir.
Bu alan bir GNU oluşumudur.
gl_opendir
opendir işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan void *(*) (const char *) türündedir.
Bu alan bir GNU oluşumudur.
gl_stat
Dosya sistemindeki bir nesne hakkında bilgi döndüren stat64 işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan int (*) (const char *, struct stat64 *) türündedir.
Bu alan bir GNU oluşumudur.
gl_lstat
Dosya sistemindeki bir nesne hakkında bilgi döndüren, ancak sembolik bağları izlemeyen lstat64 işlevinin başka bir gerçekleniminin adresi. GLOB_ALTDIRFUNC seçeneği etkinse kullanılır. Bu alan int (*) (const char *, struct stat64 *) türündedir.
Bu alan bir GNU oluşumudur.
int glob
(const char *kalıp,
 int         seçenekler,
 int       (*hata-işlevi) (const char *dosyaismi, int hatakodu),
 glob_t     *dizi-gst)
işlev
glob işlevi kalıp kalıbını kullanarak geçerli dizin içinde genelleme yapar. Sonuçları yeni ayırdığı gösterici dizisine yerleştirir ve bu dizinin adresi ile boyutunu *dizi-gst içine koyar. seçenekler argümanı seçenek bitlerinin bir birleşimidir; bu seçenekler hakkında ayrıntılı bilgiyi Genelleme Seçenekleri bölümünde bulabilirsiniz.
Genellemenin sonucu dosya isimleri dizisidir. glob işlevi her sonuç dizgesi için bir dizge ve bu dizgelerin adreslerini saklamak için char ** türünde bir gösterici dizisi ayırır. Dizinin son elemanı bir boş göstericidir. Bu gösterici dizisine dizge göstericileri dizisi denir.
Bu diziyi döndürmek için glob adresini ve uzunluğunu (sonlandırıcı boş gösterici dışında dizge gösterici sayısı) *dizi-gst içinde saklar.
Normalde, glob işlevi dosya isimlerini döndürmeden önce alfabetik sıraya sokar. Bunu GLOB_NOSORT seçeneğini kullanarak yaptırmayabilir ve sonucu daha çabuk alabilirsiniz. Genellikle, sıralamayı glob'a yaptırmak daha iyidir. Eğer dosyaları alfabetik sırayla görüntülerseniz, kullanıcı işlemin hızının sizin yazılımınızdan kaynaklandığını sanacaktır.
glob başarılı olursa 0 ile döner. Aksi takdirde şu hata kodlarından biri ile döner:
GLOB_ABORTED
Bir dizini açarken bir hata oluştu ya GLOB_ERR seçeneğini kullanmışsınız ya da hata-işlevi'nin sıfırdan farklı bir değer döndürmesini sağlamışsınız. GLOB_ERR seçeneği ve hata-işlevi ile ilgili açıklamalar için Genelleme Seçenekleri bölümüne bakınız.
GLOB_NOMATCH
Kalıp mevcut dosyaların hiçbiriyle eşleşmedi. GLOB_NOCHECK seçeneğini belirtirseniz bu hatayı asla almazsınız, çünkü bu seçenek glob'a en azından bir dosya eşleşmiş gibi davranmasını söyler.
GLOB_NOSPACE
Sonuçlar için ayrılacak bellek yok.
Bir hata sırasında, glob o ana kadar bulduğu tüm sonuçlara ilişkin bilgiyi *dizi-gst ile döndürür.
Önemli
glob işlevi LFS arayüzleri olmaksızın elde edilemeyen dizin ya da dosyalar saptarsa başarısız olmaz. glob bu işlevlerin dahili olarak kullanılacağı kabulüyle gerçeklenmiştir. Bu en azından Unix standardında yapılmış bir kabullerden biridir. GNU oluşumu kullanıcıya kendi dizin elde etme yöntemini sağlayarak ve stat işlevleriyle bunu biraz daha karmaşıklaştırır. Eğer bunlar kullanıcı tanımlı işlevler olsalardı büyük bir dosyaya ya da dizine rastlandığında glob başarısız olabilecekti.
int glob64
(const char *kalıp,
 int         seçenekler,
 int       (*hata-işlevi) (const char *dosyaismi, int hatakodu),
 glob64_t   *dizi-gst)
işlev
glob64 işlevi büyük dosya arayüzünün parçası olarak eklenmiştir, ancak kullanılan arayüz orjinal LFS arayüzü değildir. Bunun sebebi basittir: Gereksizdir. glob64 işlevi için gerekli olan herşey GNU oluşumunun kullanıcıya kendi dizin elde etme yöntemini sağlaması ve stat işlevleriyle eklenmiştir. struct dirent ve struct stat veri türleri _FILE_OFFSET_BITS seçimine bağlı olduğundan readdir ve stat işlevleri bu seçime bağlı olarak çalışır.
Bu farkların dışında glob64 tamamen glob gibi çalışır.
Bu işlev bir GNU oluşumudur.
Önceki Üst Ana Başlık Sonraki
Genelleme Başlangıç Genelleme Seçenekleri
Bir Linux Kitaplığı Sayfası