Uçbirim Tanımının Bulunması
Önceki Termcap Kütüphanesi Sonraki
Uçbirim Tanımının Bulunması
Bir uygulama yazılımı termcap'ı kullanacaksa önce kullanımdaki uçbirimin tanımına bakmalıdır. Bu işlem tgetent işlevi çağrılarak yapılır.
int tgetent
(char *tampon,
 char *uçbirim_türü);
işlev
Bu işlev tanımı bulur ve hatırlar; böylece ilgilendiğiniz uçbirim yeteneklerini sorgulayabilirsiniz.
uçbirim_türü aranacak uçbirim türünün ismini içeren bir dizge olmalıdır. Bu değeri bir getenv ("TERM") çağrısı ile TERM ortam değişkeninden elde edebilirsiniz.
Termcap'ın GNU sürümünü kullanıyorsanız, tgetent'ten gerekli yeri kendisinin ayırmasını isteyebilirsiniz. İşleve tampon olarak bir boş gösterici aktarırsanız, tgetent malloc işlevini kullanarak gerektiği kadar yeri kendisi ayıracaktır. Ayrıca, ayrılan bellek alanının adresini almanın bir yolu olmadığından, bu bellek alanını serbest bırakma çabasına da girmeyeceksiniz.
Termcap'ın Unix sürümünü kullanıyorsanız, tanımı içerecek alanı kendiniz ayırmalı ve adresini tampon argümanı ile işleve aktarmalısınız. Ne kadar alan gerektiğini söylemek mümkün olmadığından, teamüllere uygun olarak 2048 baytlık bir tampon yeterli olacaktır diyebiliriz. (Önceleri, uzlaşım 1024 baytın yeterli olacağı şeklindeydi, ama günlerden bir gün bir uçbirim türü için bu yetersiz oldu.)
Elde edilen tanımın nasıl saklandığı bu kılavuzun konusu değildir. Termcap bu tanımı kendi saklar ve bu tanımı tgetnum, tgetstr veya tgetflag çağrılarınıza yanıt vermek için kullanır. Eğer tamponu termcap ayırmışsa, tgetent'i tekrar çağırdığınızda termcap bu belleği serbest bırakır. Eğer tamponu siz ayırmışsanız, tanımın sorgulanması gerektiği sürece bu tamponun içeriğinin değişmeden kalmasını sağlamalısınız.
Uçbirim türünün veritabanına erişimde bir zorlukla karşılaşılmışsa, tgetent -1 değeriyle döner. Eğer, veritabanına sorunsuz erişildiği halde belirtilen uçbirim türü veritabanında yoksa 0 ile döner. Diğer durumlarda bunlardan farklı bir değerle döner.
Burada tgetent işlevini nasıl kullanmanız gerektiği gösterilmiştir:
#ifdef unix
static char term_buffer[2048];
#else
#define term_buffer 0
#endif

init_terminal_data ()
{
  char *termtype = getenv ("TERM");
  int success;

  if (termtype == 0)
    hayati ("`setenv TERM <uçbirimtürü>'"
            " komutu ile bir uçbirim belirtmelisiniz.\n");

  success = tgetent (term_buffer, termtype);
  if (success < 0)
    hayati ("Termcap veritabanına erişilemedi.\n");
  if (success == 0)
    hayati ("`%s' diye bir uçbirim tanımlanmamış.\n", termtype);
}
Buradaki hayati işlevinin bir hata iletisi basıp uygulamayı sonlandıran bir işlev olduğu varsayılmıştır.
TERMCAP ortam değişkeni tanımlıysa, değeri uçbirim türü veritabanını hükümsüz bırakmakta kullanılır. tgetent işlevi TERMCAP değerini özdevinimli sınar. Eğer isim bir / ile başlıyorsa, değer, standart veritabanı olan /etc/termcap yerine veritabanı olarak kullanılacak dosya ismi olarak ele alınır. Eğer değer bir / ile başlamıyorsa, uygulanması istenen uçbirim_türü uçbirim türünün tanımı için kullanılır. Uçbirim tanımı ile ilgili daha ayrıntılı bilgi edinmek için Veritabanının Biçimi bölümüne bakınız.
Önceki Üst Ana Başlık Sonraki
Termcap Kütüphanesinin Kullanıma Hazırlanması Başlangıç Uçbirim Tanımının Sorgulanması
Bir Linux Kitaplığı Sayfası