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

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

?? 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, '

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产色综合久久| 91小视频在线| 精品久久国产老人久久综合| 日韩激情在线观看| 日韩视频免费观看高清在线视频| 免费在线视频一区| 日韩欧美国产一区二区三区| 免费在线观看视频一区| 欧美成人a视频| 国产成人免费在线观看| 亚洲欧美一区二区三区国产精品| 99re视频这里只有精品| 日韩毛片视频在线看| 欧美性大战久久| 精品中文字幕一区二区| 中文字幕中文乱码欧美一区二区 | 国产高清亚洲一区| 国产精品毛片a∨一区二区三区| 在线欧美日韩国产| 久久国产麻豆精品| 亚洲男人的天堂在线观看| 欧美日韩不卡在线| 国产成人精品一区二区三区四区| 亚洲精品欧美综合四区| 91麻豆精品国产91久久久久久久久| 国产麻豆午夜三级精品| 亚洲色大成网站www久久九九| 欧美电影一区二区| 国产成人亚洲精品狼色在线| 亚洲综合一区二区精品导航| 亚洲精品一区二区三区精华液| 不卡电影一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 中文字幕日韩av资源站| 精品国产91九色蝌蚪| 欧洲亚洲精品在线| 成人性生交大合| 蜜臀av一区二区| 一二三区精品福利视频| 欧美激情一区二区在线| 在线电影欧美成精品| 成人黄色网址在线观看| 久久av资源网| 亚洲成a人片在线观看中文| 国产日产精品1区| 日韩精品在线一区二区| 欧美又粗又大又爽| 成人在线视频一区| 精品午夜久久福利影院| 亚洲不卡av一区二区三区| 亚洲欧美日本在线| 欧美激情综合五月色丁香小说| 5566中文字幕一区二区电影| 91免费看片在线观看| 丰满亚洲少妇av| 国产一区二区三区四| 欧美aaaaa成人免费观看视频| 亚洲国产一区二区在线播放| 亚洲精品乱码久久久久久日本蜜臀| 国产清纯美女被跳蛋高潮一区二区久久w | 99久久精品99国产精品| 国产酒店精品激情| 久久99精品久久久久久| 免费观看91视频大全| 日韩激情av在线| 亚洲成人激情av| 亚洲动漫第一页| 亚洲成人黄色小说| 亚洲国产成人av网| 亚洲福中文字幕伊人影院| 亚洲高清免费在线| 亚洲成a天堂v人片| 午夜国产不卡在线观看视频| 亚洲3atv精品一区二区三区| 亚洲国产精品综合小说图片区| 亚洲一区二区三区在线播放 | 午夜精品国产更新| 亚洲一区二区av电影| 亚洲国产wwwccc36天堂| 午夜精品久久久久久久久| 日韩国产一二三区| 精品在线播放免费| 国产酒店精品激情| 成人avav影音| 在线观看视频一区| 91精品视频网| 日韩欧美一区二区免费| 精品福利一二区| 日本一区二区三区免费乱视频| 中文字幕不卡一区| 亚洲少妇30p| 亚洲成av人片在www色猫咪| 蜜桃视频一区二区三区在线观看 | 国产精品第五页| 亚洲黄一区二区三区| 五月天国产精品| 国产又黄又大久久| gogogo免费视频观看亚洲一| 在线观看国产一区二区| 欧美精品三级日韩久久| 久久夜色精品国产噜噜av| 国产欧美va欧美不卡在线| 亚洲欧美国产毛片在线| 免费人成在线不卡| 成人免费毛片aaaaa**| 欧美视频你懂的| 精品国产区一区| 亚洲人成在线播放网站岛国| 五月婷婷久久丁香| 国产乱人伦偷精品视频不卡| 色琪琪一区二区三区亚洲区| 5858s免费视频成人| 国产精品欧美一区二区三区| 亚洲成年人网站在线观看| 国产一区二区精品久久| 972aa.com艺术欧美| 欧美一区二区女人| 中文字幕一区二区三区色视频| 日本视频一区二区| 成人国产在线观看| 日韩午夜激情电影| 亚洲人被黑人高潮完整版| 久久福利视频一区二区| 色呦呦网站一区| 久久久久久免费| 午夜精品在线看| 99re亚洲国产精品| 精品成人一区二区三区| 亚洲综合色噜噜狠狠| 国产91精品入口| 日韩午夜中文字幕| 亚洲精品乱码久久久久久久久 | 日韩一区二区电影| 国产精品国产三级国产aⅴ中文 | 久久超碰97中文字幕| 欧美在线观看视频一区二区三区| 久久久国产精品午夜一区ai换脸| 五月天丁香久久| 色综合咪咪久久| 亚洲国产精品精华液ab| 久久精品国产秦先生| 欧美日产国产精品| 自拍偷拍亚洲综合| 成人午夜激情片| 国产亚洲一本大道中文在线| 日韩中文字幕不卡| 欧美日韩精品一区视频| 亚洲免费观看高清完整 | 欧美日韩中文一区| 亚洲女人的天堂| 日韩一卡二卡三卡| 亚洲18影院在线观看| 欧美视频你懂的| 亚洲免费视频中文字幕| 白白色亚洲国产精品| 中文在线资源观看网站视频免费不卡| 麻豆免费精品视频| 日韩一区二区三区电影在线观看 | 日本午夜一区二区| 欧美日韩国产精选| 亚洲va国产天堂va久久en| 欧美综合天天夜夜久久| 亚洲最新视频在线观看| 色综合一区二区| 最新中文字幕一区二区三区| 成人免费视频caoporn| 日本一区二区三区国色天香 | 看电视剧不卡顿的网站| 日韩一区二区三区三四区视频在线观看 | 性欧美大战久久久久久久久| 欧美日韩一区精品| 日韩国产欧美在线播放| 日韩欧美亚洲国产另类| 国产一区二三区| 国产人久久人人人人爽| av在线不卡免费看| 亚洲精品欧美在线| 欧美日韩成人综合天天影院| 免费久久99精品国产| 欧美变态凌虐bdsm| 国产精品影视在线观看| 国产精品免费aⅴ片在线观看| av资源站一区| 一区二区三区在线视频播放| 欧美嫩在线观看| 久久黄色级2电影| 久久九九久久九九| 91在线无精精品入口| 亚洲国产中文字幕在线视频综合| 欧美一区二区三区思思人| 国内精品伊人久久久久av一坑| 久久久99精品免费观看| 成人av影院在线| 舔着乳尖日韩一区| 国产亚洲精品7777| 在线免费观看日本一区| 精品亚洲免费视频| 亚洲三级在线播放| 3d动漫精品啪啪一区二区竹菊| 国产成人精品免费看|