亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? utils.c

?? 《c語言高級實例解析》光盤所附源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
         col = AbortCommand;
   } while (col != AbortCommand  &&  c != 'A'  &&  c != 'a'  &&
            c != 'D'  &&  c != 'd');
   switch ( c ) {
      case 'A' :
      case 'a' :
         sort.direction = ASCENDING;
         break;
      case 'D' :
      case 'd' :
         sort.direction = DESCENDING;
         break;
      default  :
         col = AbortCommand;
         break;
   }
   restore_screen_line( 0, window->bottom_line, line_buff );
   return( col == AbortCommand ? ERROR : OK );
}



int  get_replace_direction( WINDOW *window )
{
register int c;
int  col;
char line_buff[(MAX_COLS+1)*2];         

   save_screen_line( 0, window->bottom_line, line_buff );
 
   s_output( utils5, window->bottom_line, 0, g_display.message_color );
   c = strlen( utils5 );
   eol_clear( c, window->bottom_line, g_display.text_color );
   xygoto( c, window->bottom_line );
   do {
      c = getkey( );
      col = getfunc( c );
      if (c == ESC)
         col = AbortCommand;
   } while (col != AbortCommand  &&  c != 'F'  &&  c != 'f'  &&
            c != 'B'  &&  c != 'b');
   switch ( c ) {
      case 'F' :
      case 'f' :
         c = FORWARD;
         break;
      case 'B' :
      case 'b' :
         c = BACKWARD;
         break;
      default  :
         c = ERROR;
   }
   restore_screen_line( 0, window->bottom_line, line_buff );
   return( col == AbortCommand ? ERROR : c );
}



int  get_yn( void )
{
int  c;                 
register int rc;        

   do {
      c = getkey( );
      rc = getfunc( c );
      if (c== ESC)
         rc = AbortCommand;
   } while (rc != AbortCommand  &&  c != 'Y'  &&  c != 'y'  &&
            c != 'N'  &&  c != 'n');
   if (rc == AbortCommand || c == ESC)
      rc = ERROR;
   else {
      switch ( c ) {
         case 'Y' :
         case 'y' :
            rc = A_YES;
            break;
         case 'N' :
         case 'n' :
            rc = A_NO;
            break;
      }
   }
   return( rc );
}



int  get_lr( void )
{
int  c;                 
register int rc;        

   for (rc=OK; rc == OK;) {
      c = getkey( );
      if (getfunc( c ) == AbortCommand || c == ESC)
         rc = ERROR;
      else {
         switch ( c ) {
            case 'L' :
            case 'l' :
               rc = LEFT;
               break;
            case 'R' :
            case 'r' :
               rc = RIGHT;
               break;
         }
      }
   }
   return( rc );
}



int  get_bc( void )
{
int  c;                 
register int rc;        

   for (rc=OK; rc == OK;) {
      c = getkey( );
      if (getfunc( c ) == AbortCommand || c == ESC)
         rc = ERROR;
      else {
         switch ( c ) {
            case 'B' :
            case 'b' :
               rc = BEGINNING;
               break;
            case 'C' :
            case 'c' :
               rc = CURRENT;
               break;
         }
      }
   }
   return( rc );
}



int  get_oa( void )
{
int  c;                 
register int rc;        
int  func;

   rc = 0;
   while (rc != AbortCommand && rc != A_OVERWRITE && rc != A_APPEND) {
      c = getkey( );
      func = getfunc( c );
      if (func == AbortCommand || c == ESC)
         rc = AbortCommand;
      switch ( c ) {
         case 'O' :
         case 'o' :
            rc = A_OVERWRITE;
            break;
         case 'A' :
         case 'a' :
            rc = A_APPEND;
            break;
      }
   }
   return( rc );
}


void show_eof( WINDOW *window )
{
register int color;
char temp[MAX_COLS+2];

   assert( strlen( mode.eof ) < MAX_COLS );

   strcpy( temp, mode.eof );
   color = window->end_col + 1 - window->start_col;
   if (strlen( temp ) > (unsigned)color)
      temp[color] = '\0';
   color = g_display.eof_color;
   window_eol_clear( window, color );
   s_output( temp, window->cline, window->start_col, color );
}



void display_current_window( WINDOW *window )
{
int  count;     
int  number;    
register int i; 
WINDOW w;       
int  curl;      
int  eof;

  
   number = window->bottom_line - ((window->top_line + window->ruler) - 1);
   count  = window->cline - (window->top_line + window->ruler);
   dup_window_info( &w, window );

   w.cline -= count;
   w.rline -= count;
   for (eof=count; eof > 0; eof--)
      w.ll = w.ll->prev;


   
   eof = FALSE;
   curl = window->cline;
   for (i=number; i>0; i--) {
      if (w.ll->len != EOF) {
       
         if (w.cline != curl)
            update_line( &w );
         w.ll = w.ll->next;
      } else if (eof == FALSE) {
         show_eof( &w );
         eof = TRUE;
      } else
         window_eol_clear( &w, COLOR_TEXT );
      ++w.cline;
      ++w.rline;
   }
   show_asterisk( window );
   show_curl_line( window );
}



int  redraw_screen( WINDOW *window )
{
register WINDOW *above;        
register WINDOW *below;        

   cls( );
  
   redraw_current_window( window );

  
   above = below = window;
   while (above->prev || below->next) {
      if (above->prev) {
         above = above->prev;
         redraw_current_window( above );
      }
      if (below->next) {
         below = below->next;
         redraw_current_window( below );
      }
   }
   window->file_info->dirty = FALSE;
   show_modes( );
   return( OK );
}



void redraw_current_window( WINDOW *window )
{

  
   if (window->visible) {
      display_current_window( window );
      show_window_header( window );
      show_ruler( window );
      show_ruler_pointer( window );
      if (window->vertical)
         show_vertical_separator( window );
   }
}



void show_changed_line( WINDOW *window )
{
WINDOW *above;                  
WINDOW *below;                  
WINDOW w;                       
long changed_line;              
long top_line, bottom_line;     
int  line_on_screen;            
file_infos *file;               

   file = window->file_info;
   if ((file->dirty == LOCAL || file->dirty == GLOBAL) && window->visible)
      show_curl_line( window );
   changed_line = window->rline;

  
   if (file->dirty != LOCAL) {
      above = below = window;
      while (above->prev || below->next) {
         if (above->prev) {
            above = above->prev;
            dup_window_info( &w, above );
         } else if (below->next) {
            below = below->next;
            dup_window_info( &w, below );
         }

        
         if (w.file_info == file && w.visible) {

           
            line_on_screen = FALSE;
            top_line = w.rline - (w.cline - (w.top_line + w.ruler));
            bottom_line = w.rline + (w.bottom_line - w.cline);
            if (changed_line == w.rline)
               line_on_screen = CURLINE;
            else if (changed_line < w.rline && changed_line >= top_line) {
               line_on_screen = NOTCURLINE;
               while (w.rline > changed_line) {
                  w.ll = w.ll->prev;
                  --w.rline;
                  --w.cline;
               }
            } else if (changed_line > w.rline && changed_line <= bottom_line) {
               line_on_screen = NOTCURLINE;
               while (w.rline < changed_line) {
                  w.ll = w.ll->next;
                  ++w.rline;
                  ++w.cline;
               }
            }

          
            if (line_on_screen == NOTCURLINE)
               update_line( &w );
            else if (line_on_screen == CURLINE)
               show_curl_line( &w );
         }
      }
   }
   file->dirty = FALSE;
}



void show_curl_line( WINDOW *window )
{
int  text_color;
int  dirty_color;

   if (window->visible  &&  g_status.screen_display) {
      text_color = g_display.text_color;
      dirty_color = g_display.dirty_color;
      g_display.dirty_color = g_display.text_color = g_display.curl_color;
      update_line( window );
      g_display.text_color = text_color;
      g_display.dirty_color = dirty_color;
   }
}



void dup_window_info( WINDOW *dw, WINDOW *sw )
{
   memcpy( dw, sw, sizeof( WINDOW ) );
}



void adjust_windows_cursor( WINDOW *window, long line_change )
{
register WINDOW *next;
long i;
file_infos *file;
MARKER *marker;
long length;

   file = window->file_info;
   length = file->length;
   next = g_status.window_list;
   while (next != NULL) {
      if (next != window) {
         if (next->file_info == file) {
            if (next->rline > length + 1) {
               next->rline = length;
               next->ll    = file->line_list_end;
               file->dirty = NOT_LOCAL;
            } else if (next->rline < 1) {
               next->rline = 1;
               next->cline = next->top_line + next->ruler;
               next->ll    = file->line_list;
               next->bin_offset = 0;
               file->dirty = NOT_LOCAL;
            }
            if (next->rline > window->rline  &&  line_change) {
               file->dirty = NOT_LOCAL;
               if (line_change < 0) {
                  for (i=line_change; i < 0 && next->ll->next != NULL; i++) {
                     next->bin_offset += next->ll->len;
                     next->ll = next->ll->next;
                  }
               } else if (line_change > 0) {
                  for (i=line_change; i > 0 && next->ll->prev != NULL; i--) {
                     next->ll = next->ll->prev;
                     next->bin_offset -= next->ll->len;
                  }
               }
            }
            if (next->rline < (next->cline -(next->top_line+next->ruler-1))) {
               next->cline = (int)next->rline+(next->top_line+next->ruler)-1;
               file->dirty = NOT_LOCAL;
            }
         }
      }
      next = next->next;
   }

   
   for (i=0; i<3; i++) {
      marker = &file->marker[ (int) i ];
      if (marker->rline > window->rline) {
         marker->rline += line_change;
         if (marker->rline < 1L)
            marker->rline = 1L;
         else if (marker->rline > length)
            marker->rline = length;
      }
   }
}



int  first_non_blank( text_ptr s, int len )
{
register int count = 0;

   if (s != NULL) {
      if (mode.inflate_tabs) {
         for (; len > 0 && (*s == ' ' || *s == '\t'); s++, len--) {
            if (*s != '\t')
               ++count;
            else
               count += mode.ptab_size - (count % mode.ptab_size);
         }
      } else {
         while (len-- > 0  &&  *s++ == ' ')
           ++count;
      }
   }
   return( count );
}


int  find_end( text_ptr s, int len )
{
register int count = 0;

   if (s != NULL) {
      if (mode.inflate_tabs) {
         for (;len > 0; s++, len--) {
            if (*s == '\t')
               count += mode.ptab_size - (count % mode.ptab_size);
            else
               ++count;
         }
      } else
         count = len;
   }
   return( count );
}



int is_line_blank( text_ptr s, int len )
{
   if (s != NULL) {
      if (mode.inflate_tabs) {
        while (len > 0  &&  (*s == ' ' || *s == '\t')) {
           ++s;
           --len;
        }
      } else {
         while (len > 0  &&  *s == ' ') {
            ++s;
            --len;
         }
      }
   } else
      len = 0;
   return( len == 0 );
}



int  page_up( WINDOW *window )
{
int  i;                 
int  rc = OK;           
register WINDOW *win;   
long number;
long len;

   win = window;
   entab_linebuff( );
   if (un_copy_line( win->ll, win, TRUE ) == ERROR)
      return( ERROR );
   if (win->rline != (win->cline - (win->top_line + win->ruler - 1))) {
      i = win->cline - (win->top_line + win->ruler - 1);
      number = win->rline;
      if (( win->rline - i) < win->page)
         win->rline = (win->cline-(win->top_line + win->ruler -1)) + win->page;
      win->rline -= win->page;
      for (len =0, i=(int)(number - win->rline); i>0; i--)
         if (win->ll->prev != NULL) {
            win->ll = win->ll->prev;
            len -= win->ll->len;
         }
      win->file_info->dirty = LOCAL;
      win->bin_offset += len;
   } else
      rc = ERROR;
   sync( win );
   return( rc );
}



int  page_down( WINDOW *window )
{
int  i;                 
int  k;
int  rc = OK;
long len;
register WINDOW *win;  
line_list_ptr p;

   win = window;
   entab_linebuff( );
   if (un_copy_line( win->ll, win, TRUE ) == ERROR)
      return( ERROR );
   p = win->ll;
   k = win->cline - (win->top_line + win->ruler);
   for (len=i=0; i < win->page && p->next != NULL; i++, k++, p=p->next)
      if (p->len != EOF)
         len += p->len;
   if (k >= win->page) {
      win->rline += i;
      win->cline = win->cline + i - win->page;
      win->bin_offset += len;
      win->ll = p;
      win->file_info->dirty = LOCAL;
   } else
      rc = ERROR;
   sync( win );
   return( rc );
}



int  scroll_down( WINDOW *window )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品无人区卡一卡二卡三乱码免费卡| 欧美高清在线一区| 99综合影院在线| 国产精品18久久久久久久网站| 日本欧美肥老太交大片| 亚洲一级在线观看| 亚洲不卡av一区二区三区| 亚洲男同1069视频| 亚洲精品五月天| 亚洲亚洲精品在线观看| 亚洲午夜精品在线| 丝袜美腿亚洲一区| 另类综合日韩欧美亚洲| 久久爱www久久做| 成人在线视频一区二区| av电影一区二区| 91国产成人在线| 欧美人妇做爰xxxⅹ性高电影| 欧美日本视频在线| 日韩欧美久久一区| 国产精品女同互慰在线看| 中文字幕亚洲区| 一区二区三区日韩精品视频| 亚洲综合丁香婷婷六月香| 亚洲成av人影院在线观看网| 久久国产精品无码网站| 国产suv精品一区二区883| 一本到三区不卡视频| 777亚洲妇女| 久久久久国产成人精品亚洲午夜| 国产女同性恋一区二区| 亚洲一卡二卡三卡四卡五卡| 麻豆精品在线视频| 粉嫩嫩av羞羞动漫久久久 | 久久精品在这里| 国产精品妹子av| 午夜av区久久| 国产成人aaa| 欧美性生活影院| 久久久国产精品麻豆| 亚洲靠逼com| 国产成人自拍高清视频在线免费播放| 成人午夜av影视| 91精品国产综合久久久久久久久久| 精品国产一区二区国模嫣然| 亚洲三级视频在线观看| 秋霞电影网一区二区| 北岛玲一区二区三区四区| 欧美电影一区二区三区| 国产精品初高中害羞小美女文| 午夜精品一区二区三区免费视频| 国产夫妻精品视频| 欧美日本在线观看| 亚洲精品一二三| 成人一区二区三区在线观看| 在线播放中文字幕一区| 亚洲精品高清在线| 成人一区在线看| 欧美精品一区二区三区蜜臀| 亚洲成人一二三| 99国产欧美另类久久久精品| 欧美大片顶级少妇| 亚洲成av人片在线观看| 色综合久久久久| 中文天堂在线一区| 国产精品主播直播| 欧美大片免费久久精品三p | 日本三级亚洲精品| 91福利国产成人精品照片| 中文字幕五月欧美| 成人做爰69片免费看网站| 久久亚洲影视婷婷| 激情亚洲综合在线| 久久综合色之久久综合| 久久99精品久久久久久动态图| 欧美片网站yy| 日韩专区中文字幕一区二区| 欧美日韩国产片| 秋霞成人午夜伦在线观看| 9191成人精品久久| 日产欧产美韩系列久久99| 制服视频三区第一页精品| 亚洲午夜久久久久久久久电影网| 欧美午夜片在线观看| 亚洲一区二区三区自拍| 欧美性色aⅴ视频一区日韩精品| 成人免费一区二区三区在线观看| 成人综合激情网| 国产精品国产自产拍在线| 色综合天天狠狠| 一区二区在线观看不卡| 精品视频在线免费| 丝瓜av网站精品一区二区| 7777精品久久久大香线蕉| 美女高潮久久久| 国产欧美日韩另类视频免费观看| 国产盗摄精品一区二区三区在线| 一区二区久久久久| 欧美日韩aaaaa| 激情图片小说一区| 自拍av一区二区三区| 欧美性色aⅴ视频一区日韩精品| 日韩电影免费在线| 久久久www免费人成精品| 91在线高清观看| 五月婷婷激情综合| 国产三级欧美三级日产三级99 | 91精品国产欧美日韩| 国产一区二区三区高清播放| 国产精品成人免费在线| 欧美日韩国产中文| 国产盗摄精品一区二区三区在线| 国产女同性恋一区二区| 欧美日韩成人激情| 国产·精品毛片| 亚洲成av人影院| 国产人成一区二区三区影院| 色婷婷久久久亚洲一区二区三区| 日韩av电影免费观看高清完整版| 国产日韩av一区二区| 欧美久久久久中文字幕| 成人av在线网站| 日本系列欧美系列| 亚洲精品中文字幕在线观看| 日韩女优av电影| 欧美视频一区二区| 成人综合婷婷国产精品久久 | 久久亚洲一区二区三区四区| 91国产福利在线| 不卡大黄网站免费看| 久久精品国产亚洲a| 亚洲欧美色图小说| 国产性色一区二区| 日韩手机在线导航| 91啦中文在线观看| 懂色av一区二区三区免费观看 | 一区二区三区在线观看网站| 中文字幕va一区二区三区| 欧美放荡的少妇| 在线观看国产91| 99r国产精品| 国产精品性做久久久久久| 免费精品视频在线| 亚洲午夜av在线| 一区二区三区日本| 亚洲女同ⅹxx女同tv| 国产精品视频第一区| 国产精品网站在线| 国产人成亚洲第一网站在线播放 | 国产精品一卡二卡| 九九九精品视频| 美女视频黄a大片欧美| 婷婷综合五月天| 日日夜夜精品视频天天综合网| 国产精品久久久久aaaa| 亚洲国产精品t66y| 国产欧美1区2区3区| 国产精品乱码一区二区三区软件| 久久久国产综合精品女国产盗摄| 精品久久国产97色综合| 欧美成人女星排行榜| 欧美一级艳片视频免费观看| 91精品国产综合久久婷婷香蕉 | 激情图片小说一区| 九九久久精品视频| 粉嫩嫩av羞羞动漫久久久| 国产精品白丝jk白祙喷水网站| 国产经典欧美精品| 成人晚上爱看视频| 99麻豆久久久国产精品免费优播| 91在线精品一区二区三区| 色菇凉天天综合网| 欧美日韩国产一区| 26uuu亚洲| 有码一区二区三区| 天天操天天干天天综合网| 日韩av电影免费观看高清完整版| 久久se这里有精品| 盗摄精品av一区二区三区| 色综合久久88色综合天天6| 在线观看国产日韩| 欧美精品一区二区三区蜜桃 | 国产精品嫩草影院av蜜臀| 一区二区三区小说| 免费成人在线视频观看| 国产一区视频网站| 一本久道中文字幕精品亚洲嫩| 欧美日韩午夜在线| 久久久亚洲综合| 亚洲综合999| 国产精品18久久久久久久久久久久| 大尺度一区二区| 777亚洲妇女| 亚洲色图视频网| 男女视频一区二区| 91在线国产福利| 2020日本不卡一区二区视频| 一区二区三区蜜桃| 国产盗摄一区二区三区| 在线电影院国产精品|