# HG changeset patch # User carandraug # Date 1329923625 0 # Node ID 01fc7045de79c7402b5b071f2aa2137578cce0db # Parent e841a8fa6b26a24c82f8fc4004734a734c686ade text_waitbar: replace tabs per spaces diff -r e841a8fa6b26 -r 01fc7045de79 main/miscellaneous/src/text_waitbar.cc --- a/main/miscellaneous/src/text_waitbar.cc Wed Feb 22 15:09:03 2012 +0000 +++ b/main/miscellaneous/src/text_waitbar.cc Wed Feb 22 15:13:45 2012 +0000 @@ -31,11 +31,11 @@ #endif }; -#define BUF_SIZE 256 -#define MAX_LEN 240 -#define DEFAULT_LEN 50 -#define BAR_CHAR '#' -#define SPACING 3 +#define BUF_SIZE 256 +#define MAX_LEN 240 +#define DEFAULT_LEN 50 +#define BAR_CHAR '#' +#define SPACING 3 static bool no_terminal=false; @@ -97,8 +97,8 @@ if(no_terminal) return retval; - pct = args(0).double_value(); - if(pct>1.0) pct = 1.0; // to prevent overflow + pct = args(0).double_value(); + if(pct>1.0) pct = 1.0; // to prevent overflow #if defined(USE_TERM) if(nargin==2 && args(1).is_string()) @@ -118,73 +118,72 @@ init = true; term = getenv("TERM"); if(!term) - { - no_terminal = true; - return retval; - } + { + no_terminal = true; + return retval; + } #if defined (USE_TERM) i = tgetnum("co"); smart_term = i ? true : false; if(nargin==1 || args(1).is_string()) - length = smart_term ? i-1 : DEFAULT_LEN; + length = smart_term ? i-1 : DEFAULT_LEN; #else if(nargin==1) length = DEFAULT_LEN; #endif else - if(nargin==2 && !(args(1).is_string())) - { - length = args(1).int_value(); - if(length>MAX_LEN) length = MAX_LEN; - if(length<=0) length = DEFAULT_LEN; - } + if(nargin==2 && !(args(1).is_string())) + { + length = args(1).int_value(); + if(length>MAX_LEN) length = MAX_LEN; + if(length<=0) length = DEFAULT_LEN; + } #if defined (USE_TERM) pct_pos = length/2-2; if(smart_term) - { - // get terminal strings ("rv"="reverse video") - char* buf_ptr = term_buffer; - begin_rv = tgetstr("so", &buf_ptr); - end_rv = tgetstr("se", &buf_ptr); - - // Display a progress bar, but only if the current terminal has a - // standout mode - if (begin_rv && end_rv) - { - brvlen = 0; - buf_ptr = begin_rv; - while(buf_ptr[++brvlen]); - ervlen = 0; buf_ptr = end_rv; - while(buf_ptr[++ervlen]); - } - - // initialize print buffer - for(i=0; i=n_chars_old+brvlen ? i+ervlen : i ] = ' '; - for(i=SPACING+brvlen, j=0; j=n_chars_old ? i+ervlen : i ] = title(0,j); - newtitle = false; - } + // Insert the title + if(newtitle) + { + pct_pos = length-SPACING*2; + for(i=SPACING+brvlen; i=n_chars_old+brvlen ? i+ervlen : i ] = ' '; + for(i=SPACING+brvlen, j=0; j=n_chars_old ? i+ervlen : i ] = title(0,j); + newtitle = false; + } - // Insert the percentage string - for(i=pct_pos+brvlen, j=0; j<4; ++i, ++j) - print_buf[ i>=n_chars_old+brvlen ? i+ervlen : i ] = pct_str[j]; + // Insert the percentage string + for(i=pct_pos+brvlen, j=0; j<4; ++i, ++j) + print_buf[ i>=n_chars_old+brvlen ? i+ervlen : i ] = pct_str[j]; - // Move print_buf characters - if(n_chars_old=n_chars+brvlen; --i) - print_buf[i+ervlen] = print_buf[i]; + // Move print_buf characters + if(n_chars_old=n_chars+brvlen; --i) + print_buf[i+ervlen] = print_buf[i]; - // Insert end of reverse video - for(i=n_chars+brvlen, j=0; j=n_chars_old) - for(int i=n_chars_old+1; i<=n_chars; ++i) - print_buf[i] = BAR_CHAR; - else - for(int i=n_chars+1; i<=n_chars_old; ++i) - print_buf[i] = ' '; - sprintf(&(print_buf[length+3])," %3i%%\r",pct_int); + if(n_chars>=n_chars_old) + for(int i=n_chars_old+1; i<=n_chars; ++i) + print_buf[i] = BAR_CHAR; + else + for(int i=n_chars+1; i<=n_chars_old; ++i) + print_buf[i] = ' '; + sprintf(&(print_buf[length+3])," %3i%%\r",pct_int); #if defined (USE_TERM) - } + } #endif - fputs(print_buf,stdout); - fflush(stdout); - n_chars_old = n_chars; - pct_int_old = pct_int; - } + fputs(print_buf,stdout); + fflush(stdout); + n_chars_old = n_chars; + pct_int_old = pct_int; + } } return retval; }