|
/* pager functionality by Joseph Spainhour" <spainhou (at) bellsouth.net> */ #include <ncurses.h> #include <stdlib.h> int main(int argc, char *argv[]) { int ch, prev, row, col; prev = EOF; FILE *fp; int y, x; if(argc != 2) { printf("Kullanım: %s <bir dosya adı>\n", argv[0]); exit(1); } fp = fopen(argv[1], "r"); if(fp == NULL) { perror("Girdi dosyası açılamadı"); exit(1); } initscr(); /* Curses kipi başlangıcı */ getmaxyx(stdscr, row, col); /* ekran sınırlarını bul */ while((ch = fgetc(fp)) != EOF) /* dosyayı sonuna kadar oku */ { getyx(stdscr, y, x); /* o anki imleç konumunu al */ if(y == (row - 1)) /* ekranın sonunda mıyız? */ { printw("<-Bir tuşa basınız->"); /* kullanıcıya bir tuşa basmasını söyle */ getch(); clear(); /* ekranı temizle */ move(0, 0); /* ekranın başına git */ } if(prev == '/' && ch == '*') /* Eğer sadece / ve * karakteri ise * koyu göstermeyi etkinleştir */ { attron(A_BOLD); /* koyu gösterme etkin */ getyx(stdscr, y, x); /* imlecin o anki konumunu al */ move(y, x - 1); /* bir karakter geri git */ printw("%c%c", '/', ch); /* esas görüntüleme burada yapılmakta */ } else printw("%c", ch); refresh(); if(prev == '*' && ch == '/') attroff(A_BOLD); /* eğer * ve / okunduysa * * koyu göstermeyi kapat */ prev = ch; } endwin(); /* curses kipi sonu */ fclose(fp); return 0; }
|