亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲美腿欧美偷拍| 成人福利电影精品一区二区在线观看| 日韩欧美综合在线| 国产日韩欧美一区二区三区乱码| 国产精品久久三| 九色综合狠狠综合久久| 91丨porny丨国产入口| 精品久久久久一区| 日韩专区中文字幕一区二区| 成+人+亚洲+综合天堂| 久久综合久久综合久久| 日本不卡视频在线| 欧美日本在线一区| 一区二区在线观看免费| 99久久er热在这里只有精品66| 日韩欧美123| 日产国产高清一区二区三区| 91黄色在线观看| 亚洲女人****多毛耸耸8| 成人国产精品视频| 国产日本欧美一区二区| 久久av老司机精品网站导航| 4438x成人网最大色成网站| 亚洲一区二区三区激情| 在线看不卡av| 亚洲国产精品综合小说图片区| 丁香婷婷深情五月亚洲| 久久精品网站免费观看| 国产综合久久久久久久久久久久| 91精品国产色综合久久不卡蜜臀| 亚洲愉拍自拍另类高清精品| 日本国产一区二区| 亚洲综合色噜噜狠狠| 色婷婷综合久久久中文一区二区| 国产精品久久久久三级| 成人教育av在线| 中文字幕日韩精品一区| av亚洲精华国产精华精| 国产精品高潮呻吟| 色综合欧美在线视频区| 亚洲一区视频在线观看视频| 欧美日韩高清一区二区三区| 丝袜亚洲另类丝袜在线| 欧美一级久久久久久久大片| 精品无码三级在线观看视频| 国产午夜精品一区二区| 成人av网站在线| 一区二区视频在线看| 日本韩国精品在线| 美女视频一区二区三区| 欧美白人最猛性xxxxx69交| 国产福利一区二区三区视频在线| 欧美激情在线看| 99久久国产综合精品色伊| 最新成人av在线| 欧美一区二区三区在线观看| 国产精品影音先锋| 亚洲免费观看视频| 日韩欧美国产不卡| 成人丝袜高跟foot| 午夜久久久久久久久久一区二区| 欧美一区二区三区免费观看视频 | 五月开心婷婷久久| 欧美一区二区久久久| 韩国三级在线一区| 亚洲精品免费看| 欧美一二三区在线观看| 99国产精品99久久久久久| 午夜成人免费视频| 中文字幕精品在线不卡| 精品视频一区二区三区免费| 久久精品国产亚洲高清剧情介绍 | 精品视频全国免费看| 裸体歌舞表演一区二区| 亚洲天堂成人在线观看| 欧美一区二区三级| 99久久夜色精品国产网站| 日本sm残虐另类| 亚洲人精品午夜| 精品国产乱子伦一区| 欧洲精品在线观看| 国产成人无遮挡在线视频| 午夜天堂影视香蕉久久| 亚洲欧美自拍偷拍| 久久免费看少妇高潮| 91麻豆精品国产91久久久久久| 久久99国内精品| 亚洲一区二区精品久久av| 中文久久乱码一区二区| 欧美一区二区黄| 在线观看网站黄不卡| av一区二区不卡| 国产一区二区三区黄视频| 天天亚洲美女在线视频| 亚洲免费观看高清完整版在线观看| 日韩美女主播在线视频一区二区三区| 国产剧情av麻豆香蕉精品| 日本最新不卡在线| 亚洲va在线va天堂| 亚洲一区二区三区自拍| 国产精品久久久久久久蜜臀| 26uuu精品一区二区三区四区在线| 色综合久久综合中文综合网| 国产91精品久久久久久久网曝门| 午夜天堂影视香蕉久久| 亚洲香肠在线观看| 一区二区三区精品| 亚洲精品国产第一综合99久久| 精品国产91洋老外米糕| 精品久久久三级丝袜| 日韩精品在线一区二区| 欧美成人激情免费网| 欧美一卡2卡3卡4卡| 91精选在线观看| 制服丝袜国产精品| 在线电影院国产精品| 555夜色666亚洲国产免| 欧美一级片免费看| 日韩欧美国产午夜精品| 精品国产91亚洲一区二区三区婷婷| 欧美精品日韩综合在线| 7777精品伊人久久久大香线蕉的 | 国产传媒久久文化传媒| 国产最新精品精品你懂的| 国产又黄又大久久| 国产精品亚洲а∨天堂免在线| 国模无码大尺度一区二区三区| 热久久一区二区| 国产一区二区视频在线| 成人黄色av电影| 91蜜桃在线免费视频| 欧美主播一区二区三区| 在线不卡的av| 2024国产精品| 亚洲美女电影在线| 午夜激情综合网| 久久www免费人成看片高清| 国产91精品精华液一区二区三区| 成人激情免费电影网址| 日本黄色一区二区| 日韩亚洲欧美高清| 国产人成一区二区三区影院| 国产精品视频九色porn| 亚洲aaa精品| 国产乱子伦视频一区二区三区| 成人在线综合网站| 欧美无砖砖区免费| 欧美精品一区二区三区蜜桃| 国产精品福利一区二区| 日韩精品1区2区3区| 国产精品一级二级三级| 91在线一区二区| 日韩精品中文字幕一区二区三区| 国产午夜精品美女毛片视频| 亚洲综合成人网| 国产毛片精品视频| 欧美日韩一区不卡| 国产精品久久久久久久久图文区 | 日韩欧美在线一区二区三区| 日本一区二区综合亚洲| 日韩精品成人一区二区三区| 成人久久视频在线观看| 制服丝袜亚洲色图| 亚洲少妇中出一区| 国产一区欧美二区| 91精品国产综合久久小美女| 国产精品理论在线观看| 久久精品国产精品亚洲精品 | 青娱乐精品在线视频| 99精品在线免费| 久久久99久久| 视频在线在亚洲| 91福利在线看| 国产精品久久久久影院老司| 九九视频精品免费| 在线成人av网站| 一区二区视频在线| 99国产麻豆精品| 国产欧美一区二区精品秋霞影院 | 欧洲亚洲国产日韩| 国产精品久久久久久久裸模| 久久精品国产精品青草| 欧美一区日韩一区| 午夜欧美视频在线观看| 欧美私模裸体表演在线观看| 中文字幕中文字幕在线一区| 国产酒店精品激情| 2017欧美狠狠色| 国产尤物一区二区在线| 久久这里都是精品| 激情亚洲综合在线| 日韩欧美一区在线| 美女网站一区二区| 精品蜜桃在线看| 精品一区二区三区视频在线观看 | 国产成人啪免费观看软件| 欧美精品一区男女天堂| 久久精品国产免费看久久精品| 欧美三级乱人伦电影| 天使萌一区二区三区免费观看|