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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? block.c

?? C語(yǔ)言高級(jí)實(shí)例解析的源代碼
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):


#include "tdestr.h"
#include "common.h"
#include "tdefunc.h"
#include "define.h"



int  mark_block( WINDOW *window )
{
int type;
int num;
long lnum;
register file_infos *file;      /* 臨時(shí)文件 */
register WINDOW *win;           /* 把當(dāng)前窗口指針?lè)诺揭粋€(gè)臨時(shí)寄存器里面 */
int rc;

   win  = window;
   file = win->file_info;
   if (win->rline > file->length || win->ll->len == EOF)
      return( ERROR );
   if (g_status.marked == FALSE) {
      g_status.marked = TRUE;
      g_status.marked_file = file;
   }
   if (g_status.command == MarkBox)
      type = BOX;
   else if (g_status.command == MarkLine)
      type = LINE;
   else if (g_status.command == MarkStream)
      type = STREAM;
   else
      return( ERROR );

   rc = OK;
   /*
    * 僅對(duì)于一個(gè)文件定義塊。用戶可以在這個(gè)文件的任何窗口進(jìn)行操作。
    */
   if (file == g_status.marked_file) {

      /*
       * 不管塊的模式標(biāo)識(shí)塊的起始和中止位置
       */
      if (file->block_type == NOTMARKED) {
         file->block_ec  = file->block_bc = win->rcol;
         file->block_er  = file->block_br = win->rline;
      } else {
         if (file->block_br > win->rline) {
            file->block_br = win->rline;
            if (file->block_bc < win->rcol && type != STREAM)
               file->block_ec = win->rcol;
            else
               file->block_bc = win->rcol;
         } else {
            if (type != STREAM) {
               file->block_ec = win->rcol;
               file->block_er = win->rline;
            } else {
               if (win->rline == file->block_br &&
                   win->rline == file->block_er) {
                  if (win->rcol < file->block_bc)
                     file->block_bc = win->rcol;
                  else
                     file->block_ec = win->rcol;
               } else if (win->rline == file->block_br)
                  file->block_bc = win->rcol;
               else {
                  file->block_ec = win->rcol;
                  file->block_er = win->rline;
               }
            }
         }

         /*
          * 如果用戶標(biāo)識(shí)的塊的終止位置在起始位置前,那么交換兩個(gè)位置。
          */
         if (file->block_er < file->block_br) {
            lnum = file->block_er;
            file->block_er = file->block_br;
            file->block_br = lnum;
         }

         /*
          * 如果用戶標(biāo)識(shí)的塊的終止列在起始列前,那么交換兩個(gè)位置。
          */
         if ((file->block_ec < file->block_bc) && (type != STREAM ||
              (type == STREAM && file->block_br == file->block_er))) {
            num = file->block_ec;
            file->block_ec = file->block_bc;
            file->block_bc = num;
         }
      }

      /*
       * 如果塊類型已經(jīng)被定義,但是如果用戶使用混和模式,那么塊的
	   * 類型被置為當(dāng)前塊的類型
       
       */
      if (file->block_type != NOTMARKED) {
         /*
          * 如果塊的類型是矩形塊,那么要保證左上角小于右下腳
          * 如果塊的類型是stream塊,那么保證起始列小于中止列
          */
         if (type == BOX) {
            if (file->block_ec < file->block_bc) {
               num = file->block_ec;
               file->block_ec = file->block_bc;
               file->block_bc = num;
            }
         }
      }

      assert( file->block_er >= file->block_br );

      file->block_type = type;
      file->dirty = GLOBAL;
   } else {
      /*
       * 已經(jīng)定義好塊
       */
      error( WARNING, win->bottom_line, block1 );
      rc = ERROR;
   }
   return( rc );
}



int  unmark_block( WINDOW *arg_filler )
{
register file_infos *marked_file;

   if (g_status.marked == TRUE) {
      marked_file              = g_status.marked_file;
      g_status.marked          = FALSE;
      g_status.marked_file     = NULL;
      marked_file->block_start = NULL;
      marked_file->block_end   = NULL;
      marked_file->block_bc    = marked_file->block_ec = 0;
      marked_file->block_br    = marked_file->block_er = 0l;
      if (marked_file->block_type)
         marked_file->dirty = GLOBAL;
      marked_file->block_type  = NOTMARKED;
   }
   return( OK );
}



void restore_marked_block( WINDOW *window, int net_change )
{
long length;
register file_infos *marked_file;

   if (g_status.marked == TRUE && net_change != 0) {
      marked_file = g_status.marked_file;
      length = marked_file->length;

     
      if (marked_file == window->file_info) {

        
         if (marked_file->block_br > window->rline) {
            marked_file->block_br += net_change;
            marked_file->block_er += net_change;
            marked_file->dirty = GLOBAL;
        
         } else if (marked_file->block_er >= window->rline)
            marked_file->dirty = GLOBAL;

         
         if (marked_file->block_br > length)
            unmark_block( window );
         else if (marked_file->block_er > length) {
            marked_file->block_er = length;
            marked_file->dirty = GLOBAL;
         }
      }
   }
}



int  prepare_block( WINDOW *window, line_list_ptr ll, int bc )
{
register int pad = 0;  
register int len;

   assert( bc >= 0 );
   assert( bc < MAX_LINE_LENGTH );
   assert( ll->len != EOF );
   assert( g_status.copied == FALSE );

   copy_line( ll );
   detab_linebuff( );

   len = g_status.line_buff_len;
   pad = bc - len;
   if (pad > 0) {
      

      assert( pad >= 0 );
      assert( pad < MAX_LINE_LENGTH );

      memset( g_status.line_buff+len, ' ', pad );
      g_status.line_buff_len += pad;
   }
   
   return( un_copy_line( ll, window, FALSE ) );
}



int  pad_dest_line( WINDOW *window, file_infos *dest_file, line_list_ptr ll )
{
int rc;
text_ptr l;
line_list_ptr new_node;

   rc = OK;

   l = NULL;
   new_node = (line_list_ptr)my_malloc( sizeof(line_list_struc), &rc );
   if (rc == OK) {
      new_node->len   = 0;
      new_node->dirty = FALSE;
      new_node->line  = l;
      if (ll->next != NULL) {
         ll->next->prev = new_node;
         new_node->next = ll->next;
         ll->next = new_node;
         new_node->prev = ll;
      } else {
         new_node->next = ll;
         if (ll->prev != NULL)
            ll->prev->next = new_node;
         new_node->prev = ll->prev;
         ll->prev = new_node;
         if (new_node->prev == NULL)
            window->file_info->line_list = new_node;
      }
      ++dest_file->length;
   } else {
     
      error( WARNING, window->bottom_line, block4 );
      if (new_node != NULL)
         my_free( new_node );
      rc = ERROR;
   }
   return( rc );
}


int  move_copy_delete_overlay_block( WINDOW *window )
{
int  action;
WINDOW *source_window;          
line_list_ptr source;           
line_list_ptr dest;             
long number;                    
int  lens;                      
int  lend;                      
int  add;                       
int  block_len;                 
line_list_ptr block_start;      
line_list_ptr block_end;  
int  prompt_line;
int  same;                      
int  source_first;              
file_infos *source_file;
file_infos *dest_file;
int  rcol, bc, ec;              
long rline;                     
long br, er;                    
long block_num;                 
long block_inc;                 
int  block_just;                
int  block_type;
int  fill_char;
int  rc;

   entab_linebuff( );
   rc = un_copy_line( window->ll, window, TRUE );
   if (g_status.marked == FALSE || rc == ERROR)
      return( ERROR );
   switch (g_status.command) {
      case MoveBlock :
         action = MOVE;
         break;
      case DeleteBlock :
         action = DELETE;
         break;
      case CopyBlock :
         action = COPY;
         break;
      case KopyBlock :
         action = KOPY;
         break;
      case FillBlock :
         action = FILL;
         break;
      case OverlayBlock :
         action = OVERLAY;
         break;
      case NumberBlock :
         action = NUMBER;
         break;
      case SwapBlock :
         action = SWAP;
         break;
      default :
         return( ERROR );
   }
   source_file = g_status.marked_file;
   source_window = g_status.window_list;
   for (; ptoul( source_window->file_info ) != ptoul( source_file );)
      source_window = source_window->next;
   prompt_line = window->bottom_line;
   dest_file = window->file_info;
   check_block( );
   if (g_status.marked == FALSE)
      return( ERROR );
   block_start = source_file->block_start;
   block_end = source_file->block_end;
   if (block_start == NULL  ||  block_end == NULL)
      return( ERROR );

   block_type = source_file->block_type;
   if (block_type != LINE  &&  block_type != STREAM  &&  block_type != BOX)
      return( ERROR );

   dest = window->ll;
   rline = window->rline;
   if (dest->len == EOF)
      return( ERROR );
   rc = OK;

   bc = source_file->block_bc;
   ec = source_file->block_ec;
   br = source_file->block_br;
   er = source_file->block_er;

  
   rcol =  (action == FILL || action == NUMBER) ? bc : window->rcol;

   
   source_first = same = FALSE;
   if (action == FILL) {
      if (block_type == BOX) {
         if (get_block_fill_char( window, &fill_char ) == ERROR)
            return( ERROR );
         dest = block_start;
         same = TRUE;
      } else {
        
         error( WARNING, prompt_line, block2 );
         return( ERROR );
      }
   }
   block_inc = 1;
   if (action == NUMBER) {
      if (block_type == BOX) {
         if (get_block_numbers( window, &block_num, &block_inc, &block_just )
              == ERROR)
            return( ERROR );
         dest = block_start;
         same = TRUE;
      } else {
        
         error( WARNING, prompt_line, block3a );
         return( ERROR );
      }
   }
   if (action == SWAP) {
      if (block_type != BOX) {
        
         error( WARNING, prompt_line, block3b );
         return( ERROR );
      }
   }
   if (source_file == dest_file && action != DELETE && action != FILL) {
      same = TRUE;
      if (block_type == BOX && action == MOVE) {
         if (rline == br  &&  (rcol >= bc && rcol <= ec))
            
            return( ERROR );
      } else if (block_type == LINE || block_type == STREAM) {
         if (rline >= br && rline <= er) {
            if (block_type == LINE) {
               
               if (action == COPY || action == KOPY)
                  dest = block_end;
                
               else if (action == MOVE)
                  return( ERROR );
            } else {

              
               if ((rline > br && rline < er) ||
                   (br == er && rcol >= bc && rcol <= ec) ||
                   (br != er && ((rline == br && rcol >= bc) ||
                                 (rline == er && rcol <= ec)))) {

               
                  if (action == COPY || action == KOPY) {
                     dest = block_end;
                     rcol = ec + 1;
                     rline = er;
                  } else if (action == MOVE)
                     return( ERROR );
               }
            }
         }
      }
   }
   if (br < rline)
      source_first = TRUE;

   block_len = (ec+1) - bc;
   if (block_type == BOX) {
      if (action != DELETE && action != FILL) {
         if (rcol + block_len > MAX_LINE_LENGTH) {
          
            error( WARNING, prompt_line, ltol );
            return( ERROR );
         }
      }
   } else if (block_type == LINE) {
      block_len = 0;
      if (action == OVERLAY) {
        
         error( WARNING, prompt_line, block5 );
         return( ERROR );
      }
   } else if (block_type == STREAM) {

      if (action == OVERLAY) {
         
         error( WARNING, prompt_line, block5 );
         return( ERROR );
      }

      lend = block_end->len;
      if (action == DELETE || action == MOVE) {

        
         if (lend > ec)
            lend -= ec;
         else
            lend = 0;
         if (bc + lend > MAX_LINE_LENGTH) {
           
            error( WARNING, prompt_line, ltol );
            return( ERROR );
         }
      }

      if (action != DELETE) {

         
         lens = block_start->len;

        
         if (dest->line == window->ll->line)
            add = dest->len;
         else
            add = lens;

         
         if (lens > bc)
            lens -= bc;
         else
            lens = 0;
         if (rcol + lens > MAX_LINE_LENGTH) {
           
            error( WARNING, prompt_line, ltol );
            return( ERROR );
         }

       
         if (add > bc)
            add -= bc;
         else
            add = 0;
         if (lend > ec)
            lend -= ec;
         else
            lend = 0;
         if (add + lend > MAX_LINE_LENGTH) {
           
            error( WARNING, prompt_line, ltol );
            return( ERROR );
         }
      }
      if (ptoul( block_start ) == ptoul( block_end )) {
         block_type = BOX;
         block_len = (ec+1) - bc;
      }
   }

   if (mode.do_backups == TRUE) {
      switch (action) {
         case MOVE :
         case DELETE :
         case COPY :
         case KOPY :
         case SWAP :
            window->file_info->modified = TRUE;
            rc = backup_file( window );
            break;
      }
      switch (action) {
         case MOVE :
         case DELETE :
         case FILL :
         case NUMBER :
         case SWAP :
            source_window->file_info->modified = TRUE;
            if (rc != ERROR)
               rc = backup_file( source_window );
            break;
      }
   }
   source = block_start;

   assert( block_start != NULL );
   assert( block_start->len != EOF );
   assert( block_end != NULL );
   assert( block_end->len != EOF );

   if (block_type == LINE)
      do_line_block( window,  source_window,  action,
                     source_file,  dest_file,  block_start,  block_end,
                     source,  dest,  br,  er,  &rc );

   else if (block_type == STREAM)
      do_stream_block( window,  source_window,  action,
                       source_file,  dest_file,  block_start,  block_end,
                       source,  dest,  rline,  br,  er,  bc,  ec,  rcol,  &rc );

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
菠萝蜜视频在线观看一区| 欧美国产视频在线| 欧美狂野另类xxxxoooo| 色先锋aa成人| 91黄色激情网站| 欧美视频日韩视频在线观看| 在线观看一区日韩| 欧美最新大片在线看| 在线观看国产91| 欧美日本视频在线| 91精品国产综合久久蜜臀 | 日韩女优毛片在线| 欧美成人综合网站| 精品成人私密视频| 国产精品婷婷午夜在线观看| 中文字幕日本乱码精品影院| 亚洲欧美日韩一区| 亚洲国产wwwccc36天堂| 五月婷婷久久丁香| 美女爽到高潮91| 国产精品亚洲а∨天堂免在线| 成人激情小说乱人伦| 色屁屁一区二区| 777奇米四色成人影色区| 欧美电影免费观看高清完整版 | 欧美高清视频www夜色资源网| 欧美妇女性影城| xvideos.蜜桃一区二区| 日本一区二区免费在线观看视频 | 亚洲日本中文字幕区| 亚洲一区影音先锋| 久久99国产精品久久| 成人午夜在线播放| 欧美午夜不卡视频| 日韩欧美一级在线播放| 国产精品色婷婷久久58| 亚洲一级在线观看| 国产一区二区三区精品视频| 成人一级视频在线观看| 欧洲av在线精品| 精品国产乱码久久久久久1区2区| 欧美国产激情二区三区| 亚洲成av人片一区二区| 国产精品一卡二| 欧美伊人久久久久久久久影院| 日韩一区二区三区四区| 国产精品护士白丝一区av| 亚洲高清免费视频| 国产99久久久国产精品潘金| 欧美综合久久久| 久久久精品国产免大香伊| 一区二区三区精品视频| 国产永久精品大片wwwapp| 在线免费精品视频| 久久精品欧美一区二区三区麻豆 | 成人夜色视频网站在线观看| 欧美三级日韩在线| 中文无字幕一区二区三区 | 欧美日韩在线一区二区| 久久久久久电影| 天天av天天翘天天综合网| av亚洲产国偷v产偷v自拍| 欧美一区二区日韩| 亚洲精品成a人| 国产精品456| 91麻豆精品国产自产在线| 亚洲男人的天堂在线aⅴ视频| 国内精品嫩模私拍在线| 欧美日韩mp4| 亚洲人xxxx| 国产精品18久久久久久久久 | 色综合久久天天| 国产欧美一区二区精品仙草咪| 日韩国产精品久久久| 色综合久久综合网| 国产精品无圣光一区二区| 久久99九九99精品| 在线综合亚洲欧美在线视频| 一区二区三区中文免费| 成年人网站91| 国产区在线观看成人精品| 久久精品999| 欧美一级午夜免费电影| 亚洲成人黄色小说| 在线一区二区三区| 国产精品久久久久久久久搜平片 | 午夜国产精品影院在线观看| 99精品热视频| 中文在线免费一区三区高中清不卡| 久久se这里有精品| 日韩视频免费观看高清完整版| 亚洲国产视频网站| 91国产福利在线| 夜夜操天天操亚洲| 欧美性猛交一区二区三区精品| 亚洲欧美一区二区三区国产精品 | 久久99精品久久久久久| 欧美一区二区三区在| 肉色丝袜一区二区| 日本韩国一区二区三区视频| 亚洲精品高清视频在线观看| 91久久国产最好的精华液| 一区二区在线看| 色婷婷综合久色| 亚洲黄色免费网站| 欧美在线免费观看视频| 亚洲国产视频在线| 91精品国产综合久久久久久| 天堂va蜜桃一区二区三区| 欧美精品丝袜中出| 捆绑调教一区二区三区| 久久天天做天天爱综合色| 国产一区二区三区四区五区入口| 久久精品一区二区| 成人免费高清视频在线观看| 中文字幕在线不卡一区| 在线观看欧美黄色| 日韩中文字幕区一区有砖一区| 91精品国产一区二区| 精品夜夜嗨av一区二区三区| 久久久www免费人成精品| 国产suv精品一区二区三区| 国产精品嫩草影院av蜜臀| 91在线高清观看| 亚洲电影你懂得| 日韩免费看的电影| 丰满岳乱妇一区二区三区| 亚洲人成网站精品片在线观看| 欧美日韩专区在线| 久久99久久精品欧美| 国产欧美精品在线观看| 色综合久久综合网| 免费看欧美美女黄的网站| 欧美精品一区二区三区蜜桃视频| 成人免费视频国产在线观看| 一区二区在线看| 欧美mv日韩mv国产网站app| 丁香一区二区三区| 亚洲午夜av在线| 精品sm在线观看| 91免费国产在线观看| 蜜臀91精品一区二区三区| 中文字幕久久午夜不卡| 欧美日韩精品一区二区三区蜜桃 | 国产盗摄女厕一区二区三区| 亚洲卡通动漫在线| 欧美一级黄色片| 成人av电影免费在线播放| 午夜视频一区在线观看| 久久精品一级爱片| 欧美日本在线一区| 国产精品99久久久久久久女警| 玉足女爽爽91| 久久久久久久电影| 欧美三级中文字幕在线观看| 国产乱码精品一区二区三区av| 一区二区三区在线播| 精品久久久久久无| 欧美午夜电影一区| 大桥未久av一区二区三区中文| 午夜不卡av免费| 国产精品美女久久久久久久久| 91精品欧美一区二区三区综合在| 99久久精品国产观看| 久久不见久久见中文字幕免费| 一区二区三区日韩欧美精品| 久久亚洲一区二区三区明星换脸| 色婷婷国产精品综合在线观看| 国产乱人伦精品一区二区在线观看| 亚洲一二三级电影| 中文字幕在线观看不卡视频| 精品免费国产二区三区| 欧美日韩国产a| 91亚洲精品久久久蜜桃网站| 国产在线精品一区二区不卡了| 亚洲国产精品精华液网站| 综合久久一区二区三区| 久久久欧美精品sm网站| 日韩一区二区在线看| 欧美午夜精品理论片a级按摩| av一区二区三区在线| 国产精品乡下勾搭老头1| 一区二区三区在线观看视频| 国产精品女主播在线观看| 精品国产一区二区亚洲人成毛片 | 欧美一区二区三区视频在线| 在线一区二区三区四区五区| eeuss鲁片一区二区三区| 国产精品一二三四区| 免费成人av资源网| 日产精品久久久久久久性色| 亚洲与欧洲av电影| 一区二区欧美在线观看| 日韩美女视频19| 国产精品久久久99| 欧美激情一区在线| 国产日韩精品一区二区三区 | 国产精品护士白丝一区av| 国产日韩欧美综合在线| 久久精品亚洲麻豆av一区二区 |