add tty_fd
This commit is contained in:
parent
f2e8bf2376
commit
fb7646fac7
@ -40,6 +40,11 @@ void ready_progress_bar(){
|
|||||||
tty_fd = open(buf,O_RDONLY);
|
tty_fd = open(buf,O_RDONLY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void quit_progress_bar(){
|
||||||
|
if(tty_fd != STDIN_FILENO){
|
||||||
|
close(tty_fd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void lock_scrolled(){
|
void lock_scrolled(){
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -72,7 +77,6 @@ raw_progress_bar_t create_raw_progress_bar(){
|
|||||||
unlock_scrolled();
|
unlock_scrolled();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RawDisplayProgressBar(raw_progress_bar_t bar,size_t offset,size_t total,const char * filename){
|
void RawDisplayProgressBar(raw_progress_bar_t bar,size_t offset,size_t total,const char * filename){
|
||||||
char buf[PROGRESS_BAR_WIDTH];
|
char buf[PROGRESS_BAR_WIDTH];
|
||||||
size_t i;
|
size_t i;
|
||||||
@ -96,8 +100,8 @@ void RawDisplayProgressBar(raw_progress_bar_t bar,size_t offset,size_t total,con
|
|||||||
return;
|
return;
|
||||||
}//optimization.
|
}//optimization.
|
||||||
//if ioctl failed? what should i do...
|
//if ioctl failed? what should i do...
|
||||||
ioctl(STDIN_FILENO,TIOCGWINSZ,(char *)&wnd_size);
|
ioctl(tty_fd,TIOCGWINSZ,(char *)&wnd_size);
|
||||||
if (wnd_size.ws_row < pos){
|
if (wnd_size.ws_row < pos){//render nothing if render position is out of window size.
|
||||||
unlock_scrolled();
|
unlock_scrolled();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -105,6 +109,7 @@ void RawDisplayProgressBar(raw_progress_bar_t bar,size_t offset,size_t total,con
|
|||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
unlock_scrolled();
|
unlock_scrolled();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isatty_file(FILE * file){
|
bool isatty_file(FILE * file){
|
||||||
return isatty(fileno(file));
|
return isatty(fileno(file));
|
||||||
}
|
}
|
||||||
@ -121,6 +126,18 @@ void myd_perror(const char * msg){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int myd_vfprintf(int line,FILE * f,const char * msg, va_list arg){
|
||||||
|
if(isatty_file(f)){
|
||||||
|
lock_scrolled();
|
||||||
|
add_scrolled_unlocked(line);
|
||||||
|
vfprintf(f,msg,arg);
|
||||||
|
unlock_scrolled();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
vfprintf(f,msg,arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void init_progress_bar(progress_bar_t * bar,int update_rate){
|
void init_progress_bar(progress_bar_t * bar,int update_rate){
|
||||||
memset(bar,0,sizeof(*bar));
|
memset(bar,0,sizeof(*bar));
|
||||||
bar->bar = create_raw_progress_bar();
|
bar->bar = create_raw_progress_bar();
|
||||||
@ -141,9 +158,3 @@ void DisplayProgressBar(progress_bar_t * bar,size_t offset,size_t total,const ch
|
|||||||
bar->last_update = ts;
|
bar->last_update = ts;
|
||||||
RawDisplayProgressBar(bar->bar,offset,total,filename);
|
RawDisplayProgressBar(bar->bar,offset,total,filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
void quit_progress_bar(){
|
|
||||||
if(tty_fd != STDIN_FILENO){
|
|
||||||
close(tty_fd);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user