/* 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;
}