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

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

?? dirlist.c

?? C語言高級實例解析的配套光盤資料
?? C
字號:


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



int  dir_help( WINDOW *window )
{
char dname[MAX_COLS+2]; 
char stem[MAX_COLS+2];  
char drive[_MAX_DRIVE]; 
char dir[_MAX_DIR];     
char fname[_MAX_FNAME]; 
char ext[_MAX_EXT];     
int  rc;
int  file_mode;
int  bin_length;
int  prompt_line;

   if (window != NULL) {
      entab_linebuff( );
      if (un_copy_line( window->ll, window, TRUE ) == ERROR)
         return( ERROR );
      prompt_line = window->bottom_line;
   } else
      prompt_line = g_display.nlines;

   
   dname[0] = '\0';
   rc = get_name( dir1, prompt_line, dname, g_display.message_color );

   if (rc == OK) {
      if (validate_path( dname, stem ) == OK) {
         rc = list_and_pick( dname, stem, window );

        
         if (rc == OK) {
            file_mode = TEXT;
            bin_length = 0;
            _splitpath( dname, drive, dir, fname, ext );
            if (stricmp( ext, ".exe" ) == 0  ||  stricmp( ext, ".com" ) == 0) {
               file_mode = BINARY;
               bin_length = g_status.file_chunk;
            }
            if (window != NULL)
               attempt_edit_display( dname, LOCAL, file_mode, bin_length );
            else
               attempt_edit_display( dname, GLOBAL, file_mode, bin_length );
         }
      } else
         
         error( WARNING,
                window != NULL ? window->bottom_line : g_display.nlines, dir2 );
   }
   return( rc );
}



int  validate_path( char *dname, char *stem )
{
int  rc;
DTA  dta;               
int  fattr;
int  i;
int  len;
char *p;
char temp[MAX_COLS+2];  

   
   if (dname[0] == '\0') {

      assert( strlen( stardotstar ) < MAX_COLS );

      strcpy( dname, stardotstar );
      stem[0] = '\0';
      rc = OK;
   } else {

    
      rc = get_fattr( dname, &fattr );

      if (rc == OK && (fattr & SUBDIRECTORY)) {
         assert( strlen( dname ) < MAX_COLS );
         strcpy( stem, dname );

         
         len = strlen( stem );
         if (stem[len-1] != '\\') {
            strcat( stem, "\\" );
            strcat( dname, "\\" );
         }
         strcat( dname, stardotstar );

      
      } else if (rc != ERROR) {
         if ((rc = my_findfirst( &dta, dname, NORMAL | READ_ONLY | HIDDEN |
                              SYSTEM | SUBDIRECTORY | ARCHIVE )) == OK) {

           

            assert( strlen( dname ) < MAX_COLS );

            strcpy( temp, dname );
            len = strlen( dname );
            for (i=len,p=temp+len; i>=0; i--) {
              
               if (*p == '\\' || *p == ':') {
                  p = temp + i;
                  *(p+1) = '\0';
                  break;
               
               } else if (i == 0) {
                  *p = '\0';
                  break;
               }
               --p;
            }

            assert( strlen( temp ) < MAX_COLS );

            strcpy( stem, temp );
         } else
            rc = ERROR;

      
      } else
         rc = ERROR;
   }
   return( rc );
}



int  list_and_pick( char *dname, char *stem, WINDOW *window )
{
int  rc;
DTA  dta;               
DIRECTORY dir;          
unsigned int cnt;       
FTYPE *flist, *p;       
char cwd[MAX_COLS];     
char dbuff[MAX_COLS];   
char prefix[MAX_COLS];  
int  change_directory = FALSE;
int  stop;
int  len;
int  drive;


   rc = my_findfirst( &dta, dname, NORMAL | READ_ONLY | HIDDEN | SYSTEM |
                                SUBDIRECTORY | ARCHIVE );
   if (rc != ERROR) {
      for (cnt=1; (rc = my_findnext( &dta )) == OK;)
         ++cnt;
      flist = (FTYPE *)calloc( cnt, sizeof(FTYPE) );
   } else
      flist = NULL;
   if (rc != ERROR && flist != NULL) {

      stop = FALSE;
    
      if (stem[1] == ':') {

        
         drive = stem[0];
         if (drive < 'a')
            drive += 32;
         drive = drive - 'a' + 1;
         rc = get_current_directory( dbuff, drive );
         if (rc == ERROR)
            stop = TRUE;
         else {

            
            prefix[0] = (char)(drive - 1 + 'a');
            prefix[1] = ':';
            prefix[2] = '\\';
            prefix[3] = '\0';
            assert( strlen( prefix ) + strlen( dbuff ) < MAX_COLS );
            strcpy( cwd, prefix );
            strcat( cwd, dbuff );
         }

     
      } else {

        
         drive = 0;
         rc = get_current_directory( dbuff, drive );
         if (rc == ERROR)
            stop = TRUE;
         else {

           
            prefix[0] = '\\';
            prefix[1] = '\0';

            assert( strlen( prefix ) + strlen( dbuff ) < MAX_COLS );

            strcpy( cwd, prefix );
            strcat( cwd, dbuff );
         }
      }

      while (stop == FALSE) {
     
         p = flist;
         cnt = 0;

         rc = my_findfirst( &dta, dname, NORMAL | READ_ONLY | HIDDEN | SYSTEM |
                                 SUBDIRECTORY | ARCHIVE );
         if (rc != ERROR) {

        

            assert( strlen( dta.name ) < 14 );

            strcpy( p->fname, dta.name );
            p->fsize = dta.size;
            if (dta.attrib & SUBDIRECTORY)
               strcat( p->fname, "\\" );
            for (cnt=1; (rc = my_findnext( &dta )) == OK; ) {
               ++p;

               assert( strlen( dta.name ) < 14 );

               strcpy( p->fname, dta.name );
               p->fsize = dta.size;
               if (dta.attrib & SUBDIRECTORY)
                  strcat( p->fname, "\\" );
               cnt++;
            }
         }

         if (rc != ERROR) {
            shell_sort( flist, cnt );

            setup_directory_window( &dir, cnt );
            write_directory_list( flist, dir );

          
            rc = select_file( flist, stem, &dir );

            assert( strlen( flist[dir.select].fname ) < MAX_COLS );

            strcpy( dbuff, flist[dir.select].fname );
         }

        
         free( flist );

         if (rc == ERROR)
            stop = TRUE;
         else {
            len = strlen( dbuff );

           
            if (dbuff[len-1] == '\\') {

             

               assert( strlen( stem ) + strlen( dbuff ) < MAX_COLS );

               strcpy( dname, stem );
               strcat( dname, dbuff );
               len = strlen( dname );
               strcpy( dbuff, dname );

            
               dbuff[len-1] = '\0';

               
               rc = set_current_directory( dbuff );
               if (rc == OK) {

                
                  rc = get_current_directory( dbuff, drive );
                  if (rc == OK) {

                     assert( strlen( prefix ) + strlen( dbuff ) < MAX_COLS );

                     strcpy( dname, prefix );
                     strcat( dname, dbuff );
                     change_directory = TRUE;
                  }
               }

              
               if (rc == OK)
                  rc = validate_path( dname, stem );
               if (rc == OK) {
                  rc = my_findfirst( &dta, dname, NORMAL | READ_ONLY | HIDDEN |
                                  SYSTEM | SUBDIRECTORY | ARCHIVE );
                  if (rc != ERROR) {
                     for (cnt=1; (rc = my_findnext( &dta )) == OK;)
                        ++cnt;
                     flist = (FTYPE *)calloc( cnt, sizeof(FTYPE) );
                  }
               }
               if (flist == NULL || rc == ERROR) {
                  stop = TRUE;
                  rc = ERROR;
               }
            } else {

               
               rc = OK;
               stop = TRUE;

               assert( strlen( stem ) + strlen( dbuff ) < MAX_COLS );

               strcpy( dname, stem );
               strcat( dname, dbuff );
            }
         }
      }

     
      if (change_directory)
         set_current_directory( cwd );
      if (window != NULL)
         redraw_screen( window );
   } else {
    
      error( WARNING,  window != NULL ? window->bottom_line : g_display.nlines,
             dir3 );
      rc = ERROR;
   }
   return( rc );
}



void setup_directory_window( DIRECTORY *dir, int cnt )
{
int  i;
int  wid;
char temp[MAX_COLS];    


   dir->col = 3;
   dir->row = 5;
   wid = dir->wid = 72;
   dir->hgt = 16;
   dir->max_cols = 5;
   dir->max_lines = 9;
   dir->cnt = cnt;

  
   dir->lines = dir->cnt / dir->max_cols + (dir->cnt % dir->max_cols ? 1 : 0);
   if (dir->lines > dir->max_lines)
      dir->lines = dir->max_lines;

  
   dir->cols = dir->cnt / dir->lines + (dir->cnt % dir->lines ? 1 : 0);
   if (dir->cols > dir->max_cols)
      dir->cols = dir->max_cols;


   
   dir->avail = dir->lines * dir->cols;

   
   dir->nfiles = dir->cnt > dir->avail ? dir->avail : dir->cnt;

  
   dir->prow = dir->lines - (dir->avail - dir->nfiles);

   
   if (dir->cnt < dir->avail)
      dir->vcols = 0;
   else
      dir->vcols =  (dir->cnt - dir->avail) / dir->max_lines +
                   ((dir->cnt - dir->avail) % dir->max_lines ? 1 : 0);

   
   dir->flist_col[0] = dir->col + 2;
   for (i=1; i<dir->max_cols; i++)
      dir->flist_col[i] = dir->flist_col[i-1] + 14;

   
   for (i=0; i < dir->hgt; i++) {
      if (i == 0 || i == dir->hgt-1) {
         memset( temp, '

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re这里都是精品| 亚洲日本欧美天堂| 欧美在线观看视频在线| 精品一区二区三区在线视频| 亚洲丶国产丶欧美一区二区三区| 中文字幕久久午夜不卡| 久久夜色精品国产噜噜av| 欧美xxxxxxxx| 精品噜噜噜噜久久久久久久久试看| 正在播放亚洲一区| 91麻豆精品国产无毒不卡在线观看| 在线观看www91| 欧美性猛交一区二区三区精品| 色国产综合视频| 色综合天天综合网天天狠天天 | 国产情人综合久久777777| 欧美一级黄色录像| 日韩女优av电影在线观看| 日韩欧美一区二区不卡| 久久精品一二三| 国产精品美女久久福利网站| 1024成人网色www| 亚洲激情男女视频| 亚洲成av人影院在线观看网| 奇米四色…亚洲| 狠狠色丁香婷婷综合久久片| 国产成人免费视频精品含羞草妖精 | 97久久精品人人做人人爽50路| 成人av电影在线播放| 91老师片黄在线观看| 欧美日精品一区视频| 日韩欧美中文字幕一区| 精品久久久影院| 国产精品污污网站在线观看| 一区二区三区在线视频观看58| 婷婷亚洲久悠悠色悠在线播放| 极品美女销魂一区二区三区| av午夜一区麻豆| 欧美精品tushy高清| 精品处破学生在线二十三| 中文字幕在线一区| 午夜精品久久一牛影视| 国内精品伊人久久久久影院对白| 成人黄页毛片网站| 91精品国产一区二区三区香蕉| 欧美精品一区二区久久久| 亚洲精品国产精品乱码不99| 久久99精品国产| 欧美亚洲日本一区| 国产日韩综合av| 亚洲成av人片一区二区梦乃| 国产成人aaa| 日韩一区二区三区视频在线观看| 国产精品久久久久久久久快鸭 | 欧美猛男男办公室激情| 久久久久国产一区二区三区四区| 一区二区视频免费在线观看| 国产一区二区0| 欧美主播一区二区三区美女| 国产亚洲女人久久久久毛片| 婷婷开心激情综合| 一本色道亚洲精品aⅴ| 久久蜜桃av一区二区天堂| 视频一区在线视频| 在线视频综合导航| 国产女人水真多18毛片18精品视频 | 日韩免费观看2025年上映的电影 | 成人午夜激情在线| 精品成a人在线观看| 亚洲mv在线观看| 91在线视频观看| 国产精品另类一区| 国产精品1024| 精品国产三级a在线观看| 日本不卡一区二区| 欧美日韩精品一区二区天天拍小说 | 欧洲一区在线观看| 亚洲人亚洲人成电影网站色| 国产成人免费在线视频| 久久综合色婷婷| 韩国女主播一区| 欧美精品一区二区三区高清aⅴ | 婷婷夜色潮精品综合在线| 欧美系列日韩一区| 夜色激情一区二区| 色一情一乱一乱一91av| 樱桃国产成人精品视频| 一本色道综合亚洲| 亚洲一区二区三区四区五区黄| 99久久精品国产毛片| 中文字幕一区二区三区乱码在线 | 2024国产精品视频| 国产不卡免费视频| 亚洲国产精品精华液2区45| 国产999精品久久久久久绿帽| 久久久精品综合| 春色校园综合激情亚洲| 最新不卡av在线| 欧洲日韩一区二区三区| 日韩国产精品久久久| 欧美成人官网二区| 成人一区在线看| 亚洲天堂免费看| 欧美丝袜第三区| 国产成人精品1024| 亚洲人成7777| 91精品麻豆日日躁夜夜躁| 蜜桃91丨九色丨蝌蚪91桃色| 久久综合九色综合欧美就去吻| 国产黄色成人av| 一区二区三区精密机械公司| 欧美一区二区三区日韩视频| 国产成人免费xxxxxxxx| 亚洲综合在线视频| 欧美一区二区久久| 国产99久久久久| 亚洲国产欧美另类丝袜| 精品国产一区二区三区不卡| caoporn国产一区二区| 爽爽淫人综合网网站| 久久久美女艺术照精彩视频福利播放 | 亚洲老司机在线| 日韩亚洲电影在线| 成人丝袜18视频在线观看| 亚洲成人一区在线| 中文字幕精品一区二区三区精品 | 亚洲国产精品久久久久秋霞影院 | 免费观看一级特黄欧美大片| 中文字幕国产精品一区二区| 欧美男人的天堂一二区| 成人va在线观看| 卡一卡二国产精品| 一区二区三区欧美| 国产日本亚洲高清| 日韩色视频在线观看| 色综合久久综合中文综合网| 日本精品裸体写真集在线观看| 麻豆精品一区二区综合av| 亚洲综合色婷婷| 国产精品污www在线观看| 欧美第一区第二区| 欧美日韩在线一区二区| 91老师国产黑色丝袜在线| 国产激情一区二区三区四区| 久久精品国产成人一区二区三区| 亚洲另类一区二区| 亚洲欧洲日韩在线| 国产欧美精品一区二区色综合 | 丝袜美腿成人在线| 亚洲女性喷水在线观看一区| 久久这里只有精品视频网| 51精品国自产在线| 欧美精品18+| 欧美日本一区二区| 欧美无乱码久久久免费午夜一区| aa级大片欧美| 99这里都是精品| 成人性生交大合| 成人午夜激情在线| 国产suv精品一区二区6| 国产成人av电影| 丁香五精品蜜臀久久久久99网站| 韩国成人精品a∨在线观看| 久久国产精品色婷婷| 久久精品国产亚洲a| 久久精品国产亚洲5555| 久久精品国产澳门| 国产高清久久久久| 成人动漫一区二区在线| 99久久精品国产一区| 91亚洲午夜精品久久久久久| 91麻豆swag| 欧美日韩一区二区三区在线 | 亚洲午夜久久久久久久久久久 | 欧美最新大片在线看 | 亚洲国产精品一区二区www在线 | 欧亚洲嫩模精品一区三区| 欧美日韩中字一区| 日韩一区二区三区在线视频| 国产亚洲欧美日韩在线一区| 国产精品不卡一区| 亚洲一区二区精品3399| 日韩黄色一级片| 国产精品资源站在线| eeuss鲁一区二区三区| 欧美在线影院一区二区| 日韩一级完整毛片| 欧美精品一区二区三区一线天视频| 久久久久久综合| 亚洲欧美激情视频在线观看一区二区三区 | 欧美一区二区三区在线观看视频| 91精品国产日韩91久久久久久| 欧美电影免费观看高清完整版在线观看 | 国产午夜精品一区二区三区视频| 亚洲欧美中日韩| 天天亚洲美女在线视频| 国产成人一区在线| 精品视频一区二区不卡| 久久精品免视看| 亚洲成人免费观看|