add tty_fd
This commit is contained in:
		
							parent
							
								
									f2e8bf2376
								
							
						
					
					
						commit
						fb7646fac7
					
				
					 1 changed files with 20 additions and 9 deletions
				
			
		| 
						 | 
					@ -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…
	
	Add table
		
		Reference in a new issue