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

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

?? fat.c

?? fat16
?? C
?? 第 1 頁 / 共 5 頁
字號:
            break;
          }
        }
        /* append extension */
        lfn_name[i++] = '.';
        lfn_name[i++] = gl_buffer[8];
        lfn_name[i++] = gl_buffer[9];
        lfn_name[i++] = gl_buffer[10];

        for (; i != 14; i++)
        {
          lfn_name[i] = ' ';       /* append spaces for display reason */
        }
        lfn_name[i] = '\0';        /* end of string */
      }
        
      else
      { /* LFN name treatment */
        i = 0;
        /* search for the end of the string */
        while (lfn_name[i] != '\0')
        { 
          i++;
        }
        if (i <= 14)
        { /* append spaces for display reason (no scrolling) */
          while (i != 14)
          {
            lfn_name[i++] = ' ';
          }
        }
        else
        { /* append beginning of name to ease scrolling display */
          lfn_name[i++] = ' ';
          lfn_name[i++] = ' ';
          lfn_name[i++] = lfn_name[0];
          lfn_name[i++] = lfn_name[1];
          lfn_name[i++] = lfn_name[2];
          lfn_name[i++] = lfn_name[3];
          lfn_name[i++] = lfn_name[4];
          lfn_name[i++] = lfn_name[5];
          lfn_name[i++] = lfn_name[6];
          lfn_name[i++] = lfn_name[7];
          lfn_name[i++] = lfn_name[8];
          lfn_name[i++] = lfn_name[9];
          lfn_name[i++] = lfn_name[10];
          lfn_name[i++] = lfn_name[11];
          lfn_name[i++] = lfn_name[12];
        }
        lfn_name[i] = '\0';        /* end of name */
      }

      /* store extension */
      ext[0]= gl_buffer[8];
      ext[1]= gl_buffer[9];
      ext[2]= gl_buffer[10];

      /* standard computing for normal entry */
      entry->attributes = gl_buffer[11];
      entry->start_cluster = gl_buffer[26];
      entry->start_cluster += ((Uint16) gl_buffer[27]) << 8;
      entry->size.b[3] = gl_buffer[28];
      entry->size.b[2] = gl_buffer[29];
      entry->size.b[1] = gl_buffer[30];
      entry->size.b[0] = gl_buffer[31];
      /* now it's time to stop */
      exit_flag = TRUE;
    }
    else
    { /* LFN entry format */
      lfn_entry_found = TRUE;             /* a 8.3 name will follow */

      if ((gl_buffer[0] & LFN_SEQ_MASK) <= MAX_LFN_ENTRIES)   
      {                         /* Maximum number of entries for LFN? */
        for (i = 0; i < 5; i++)
          lfn_name[i + 13*((gl_buffer[0] & LFN_SEQ_MASK) - 1)] = gl_buffer[2*i + 1];
        for (i = 0; i < 6; i++)
          lfn_name[i + 5 + 13*((gl_buffer[0] & LFN_SEQ_MASK) - 1)] = gl_buffer[2*i + 14];
        for (i = 0; i < 2; i++)
          lfn_name[i + 11 + 13*((gl_buffer[0] & LFN_SEQ_MASK) - 1)] = gl_buffer[2*i + 28];
      }
    }
  }
  Hard_read_close();                        /* close physical read */
}


/*F**************************************************************************
* NAME: fat_get_dir_file_list
*----------------------------------------------------------------------------
* PARAMS:
*   id: file extension to select
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Construct the file directory list
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   The value are relative position with the previous file.
*   Call to this function assume that the dir fragment chain has been created
*----------------------------------------------------------------------------
* REQUIREMENTS:
*   Maximum of 256 entries between 2 authorized file (id extension)
*   because the relative position is stored on one byte.
*   To allow more than 256 entries (-> 32768), change type of
*   fat_dir_entry_list[] from Byte to Uint16 (no overflow management)
*   and change MAX_DIRECTORY_GAP_FILE from 255 to 32767
*****************************************************************************/
void fat_get_dir_file_list (Byte id)
{
Uint16 index;                               /* chain index */
Uint16 counter_entry;                       /* entry counter: 0..MAX_DIRECTORY_FILE */
Uint16 entry_pos;                           /* relative entry position */
Uint16 entry_pos_saved;                     /* used when the file is not the id etension */
Byte   i;

  index = 0;
  fat_dir_list_last = 0;
  counter_entry = 0;
  entry_pos = 0;   
  fat_dir_start_sect = fat_dir_current_sect;
  fat_dir_current_offs = 0;
  
  Hard_read_open(fat_dir_start_sect);
  
  do /* scan all entries */
  {
    if (dir_is_root == TRUE)
    { /* root dir is linear -> Hard_read_byte() */
      for (i = 0; i < DIR_SIZE; i++)
        gl_buffer[i] = Hard_read_byte();
    }
    else
    { /* subdir can be fragmented -> dgetc() */
      for (i = 0; i < DIR_SIZE; i++)
        gl_buffer[i] = fat_dgetc();
    }
    counter_entry++;                          /* increase the # entry         */

    if ((gl_buffer[0] != FILE_DELETED) && (gl_buffer[0] != FILE_NOT_EXIST))
    { /* Existing file ? */ 
      fat_dir_entry_list[index] = entry_pos;  /* save the relative position   */
      entry_pos_saved = entry_pos;
      entry_pos = 1;                          /* reset the relative position  */
      index++;                                /* increase the index           */

      while (gl_buffer[11] == ATTR_LFN_ENTRY) /* LFN entry ?                  */
      {                                       /* then read all the LFN entry  */
        if (dir_is_root == TRUE)
        { /* root dir is linear -> Hard_read_byte() */
          for (i = 0; i < DIR_SIZE; i++)
            gl_buffer[i] = Hard_read_byte();
        }
        else
        { /* subdir can be fragmented -> dgetc() */
          for (i = 0; i < DIR_SIZE; i++)
            gl_buffer[i] = fat_dgetc();
        }

        counter_entry++;                    /* increase the # entry */
        entry_pos++;                        /* increase the relative position */
                                            /* for the next file */
      }

      /* filter on the file type */
      fat_cache.current.attributes = gl_buffer[11];
      ext[0] = gl_buffer[8];
      ext[1] = gl_buffer[9];
      ext[2] = gl_buffer[10];
      if ((fat_check_ext() & id) == FILE_XXX)
      {                                     /* Don't valid the entry */
        index--;                                              
        entry_pos += entry_pos_saved;
      }
    }
    else   /* Not an existing file */
      entry_pos++;

    fat_dir_list_last = index;              /* update last file index */
    /* For sub-directory, there is no logical limit for the number of entries */
    /* In order to detect the last file, we check gl_buffer[0]                */
    /* We can put in the chain directory MAX_DIRECTORY_FILE selected file     */
    if (gl_buffer[0] == FILE_NOT_EXIST)
      index = MAX_DIRECTORY_FILE;
    /* Overflow of entry_pos */
    if (entry_pos > MAX_DIRECTORY_GAP_FILE)
      index = MAX_DIRECTORY_FILE;
    /* For Root directory, the maximum entries is 512!                        */
    if ((dir_is_root == TRUE) && (counter_entry == MAX_DIRECTORY_FILE))
      index = MAX_DIRECTORY_FILE;
    if (dir_is_root == FALSE)
    {
      /* check if we are at the end of the directory */
      if ((((Byte*)&fat_dclust_byte_count)[1] == 0x00) &&
      ((((Byte*)&fat_dclust_byte_count)[0] & fat_cluster_mask) == 0x00) && 
      (fat_last_dclust_index == fat_dchain_index))
        index = MAX_DIRECTORY_FILE;
    }
  }
  while (index < MAX_DIRECTORY_FILE);

  fat_dir_current_sect = fat_dir_start_sect;
  Hard_read_close();
}


/*F**************************************************************************
* NAME: fat_get_root_directory
*----------------------------------------------------------------------------
* PARAMS:
*   id: file extension to select
*
* return:
*   - OK: file available
*   - KO: no requested file found
*   - KO: low_level memory error
*----------------------------------------------------------------------------
* PURPOSE:
*   Select first available file/dir in root diretory
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   Fill all the cache information for the first time
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit fat_get_root_directory (Byte id)
{
  /* select first root dir entry */
  fat_dir_current_sect = fat_ptr_rdir;
  fat_dclust_byte_count = 0;
  dir_is_root = TRUE;

  fat_get_dir_file_list(id);                /* create list of entries */
  if (fat_dir_list_last == 0)
    return KO;                              /* no requested (id) entry */

  fat_dir_list_index = 0;                   /* point on first root entry */

  /* extract info from table */
  if (fat_dseek(fat_dir_entry_list[0] * DIR_SIZE) == OK)
  {
    fat_get_dir_entry(&fat_cache.current);  /* update current file info */
    /* parent dir is also root */
    fat_cache.parent.start_cluster = 0;   
    fat_cache.parent.attributes = ATTR_ROOT_DIR;  /* mark as root dir */
    return OK;
  }
  else
    return KO;                              /* low level error */
}


/*F**************************************************************************
* NAME: fat_goto_next
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   - OK: next file available
*   - KO: last file reached
*   - KO: low_level memory error
*----------------------------------------------------------------------------
* PURPOSE:
*   Fetch the next dir/file info in cache
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/ 
bit fat_goto_next (void)
{
  if (fat_dir_list_index < (fat_dir_list_last - 1))
  {
    fat_dir_list_index++;

    if (fat_dseek((Int16)(fat_dir_entry_list[fat_dir_list_index] * DIR_SIZE)) == OK)
    {
      fat_get_dir_entry(&fat_cache.current);/* update current file info */
      return OK;
    }
    else
      return KO;                            /* low level error */
  }
  else
    return KO;                              /* already on last file */
}


/*F**************************************************************************
* NAME: fat_goto_prev
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   - OK: previous file available
*   - KO: first file reached
*   - KO: low_level memory error
*----------------------------------------------------------------------------
* PURPOSE:
*   Fetch the previous directory info in cache
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/ 
bit fat_goto_prev (void)
{
Byte min;
  
  if (dir_is_root)
    min = 0;
  else
    min = 2;

  if (fat_dir_list_index != min)            /* first file of the directory? */
  {
    if (fat_dseek((Int16)(fat_dir_entry_list[fat_dir_list_index] * (-DIR_SIZE))) == OK)
    { /* go to previous file */
      fat_dir_list_index--;
      fat_get_dir_entry(&fat_cache.current);/* update current file info */
      return OK;
    }
    else
      return KO;                            /* low level error */
  }
  else
    return KO;                              /* already on first file */
}

/*F**************************************************************************
* NAME: fat_seek_last
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   OK: last file available
*   KO: low level error
*----------------------------------------------------------------------------
* PURPOSE:
*   Fetch the last directory info in cache
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/ 
bit fat_seek_last (void)
{
Uint16 gl_offset;
Uint16 i;
  
  for (i = fat_dir_list_index + 1, gl_offset = 0; i < fat_dir_list_last; fat_dir_list_index++, i++)
    gl_offset += fat_dir_entry_list[i];

  if (fat_dseek(gl_offset * DIR_SIZE) == OK)
  {
    fat_get_dir_entry(&fat_cache.current);      
    return OK;
  }
  else
    return KO;                              /* low level error */
}

/*F**************************************************************************
* NAME: fat_seek_entry_record
*----------------------------------------------------------------------------
* PARAMS:
*   fat_dir_list_index : # of the fetched entry
*   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费成人网| 国产精品看片你懂得| 337p日本欧洲亚洲大胆色噜噜| 国产精品乱人伦一区二区| 免费高清视频精品| 日本久久精品电影| 国产亚洲一区字幕| 久久国产成人午夜av影院| 日本伦理一区二区| 一区二区中文视频| 国产呦精品一区二区三区网站| 免费人成在线不卡| 天堂va蜜桃一区二区三区漫画版| 国产东北露脸精品视频| 51精品视频一区二区三区| 亚洲激情综合网| 99这里只有精品| 欧美韩日一区二区三区| 国产在线视频一区二区| 日韩欧美aaaaaa| 免费一级片91| 91精品国产一区二区三区| 亚洲高清免费观看| 欧美色区777第一页| 亚洲在线免费播放| 欧美专区日韩专区| 一区二区三区不卡视频在线观看 | 欧美日韩一区精品| 亚洲女同一区二区| 色综合天天性综合| 亚洲精品中文在线| 欧美亚洲日本一区| 亚洲v精品v日韩v欧美v专区| 欧美精品亚洲二区| 日韩电影在线观看一区| 欧美一区二区三区精品| 麻豆91精品视频| 久久精品亚洲乱码伦伦中文| 高清免费成人av| 国产精品乱人伦一区二区| hitomi一区二区三区精品| 136国产福利精品导航| 99re热这里只有精品免费视频| 国产视频一区二区在线| 成人国产精品免费网站| 亚洲摸摸操操av| 欧美性受xxxx黑人xyx| 日韩经典一区二区| 精品日韩一区二区三区免费视频| 久久99深爱久久99精品| 欧美国产欧美亚州国产日韩mv天天看完整| 成人美女视频在线观看18| 最新成人av在线| 欧美日韩国产一区| 国产一区二区三区精品视频| 国产精品毛片无遮挡高清| 欧美性感一区二区三区| 久久精品国产免费| 国产精品网站在线播放| 欧美天堂亚洲电影院在线播放 | 亚洲日本青草视频在线怡红院| 日本黄色一区二区| 蜜臀av一区二区在线免费观看| 久久久高清一区二区三区| 91麻豆成人久久精品二区三区| 视频一区免费在线观看| 国产欧美一区视频| 欧美日韩精品一区二区三区| 国产美女在线精品| 午夜精品影院在线观看| 中文在线免费一区三区高中清不卡| 精品国产一区二区在线观看| av在线一区二区三区| 麻豆国产一区二区| 一区二区三区精品在线| 久久综合狠狠综合| 欧美视频完全免费看| 国产91在线观看丝袜| 午夜精品久久久久久| 中文字幕在线观看不卡| 日韩欧美一区二区免费| 99视频一区二区三区| 精品系列免费在线观看| 亚洲一区二区在线观看视频| 久久久99精品久久| 欧美一区二区三区在| 在线影视一区二区三区| 成人精品亚洲人成在线| 久久精品噜噜噜成人88aⅴ| 一区二区三区丝袜| 中文字幕一区视频| 精品理论电影在线| 91精品午夜视频| 欧美影院精品一区| 91免费在线播放| 国产高清无密码一区二区三区| 日韩高清不卡在线| 亚洲一级二级三级| 亚洲黄一区二区三区| 亚洲色图19p| 国产精品不卡视频| 国产精品视频麻豆| 国产丝袜欧美中文另类| 久久久久九九视频| 久久精品视频免费观看| 日韩免费高清视频| 欧美第一区第二区| 日韩精品一区二区三区老鸭窝| 在线成人午夜影院| 午夜av区久久| 国产高清成人在线| 老司机免费视频一区二区三区| 一级日本不卡的影视| 一区二区三区精品在线观看| 一区二区三区精品视频| 亚洲综合自拍偷拍| 亚洲国产日韩一区二区| 亚洲福利视频一区二区| 偷拍日韩校园综合在线| 午夜欧美电影在线观看| 日本中文字幕不卡| 狠狠v欧美v日韩v亚洲ⅴ| 国产一区在线观看麻豆| 国产精品一区二区三区网站| 国产iv一区二区三区| 成年人国产精品| 91国偷自产一区二区开放时间 | 成人午夜电影小说| 国产91丝袜在线观看| 成人黄色软件下载| 国产精品美女久久久久久| 久久久久久一二三区| 久久夜色精品国产欧美乱极品| 亚洲精品一区二区三区蜜桃下载 | 欧美三级电影精品| 欧美一区二区视频观看视频| 日韩欧美成人激情| 国产色婷婷亚洲99精品小说| 国产精品久久久久7777按摩| 亚洲综合久久久| 美女网站视频久久| 国产成人免费9x9x人网站视频| www.66久久| 在线综合+亚洲+欧美中文字幕| 精品国产一区二区三区久久久蜜月 | jlzzjlzz亚洲女人18| 欧美性高清videossexo| 91福利社在线观看| 蜜臀久久久久久久| 国产成人av一区| 在线观看一区日韩| 日韩免费高清电影| 亚洲日本在线观看| 国内国产精品久久| 欧美亚洲一区三区| 中文在线一区二区| 免费成人深夜小野草| 色综合色综合色综合色综合色综合| 6080日韩午夜伦伦午夜伦| 欧美国产精品中文字幕| 亚洲地区一二三色| 成人免费的视频| 日韩一二三区视频| 亚洲精品免费在线观看| 国产精品自拍网站| 欧美高清性hdvideosex| 亚洲三级免费观看| 国产成人午夜99999| 欧美一区二区三区视频在线| 亚洲精品高清在线| 粉嫩aⅴ一区二区三区四区五区| 欧美乱妇一区二区三区不卡视频| 国产欧美日韩精品在线| 蜜臀av国产精品久久久久| 在线一区二区三区做爰视频网站| 国产精品一区二区在线播放| 青青青伊人色综合久久| 99久久99久久精品免费观看| 日韩限制级电影在线观看| 一区二区三区四区激情| 成人精品免费看| 日韩精品一区二区三区视频播放 | 色综合色狠狠天天综合色| 国产欧美精品一区二区三区四区| 日本亚洲视频在线| 欧美一区二区在线观看| 午夜视频在线观看一区二区| 欧美性三三影院| 一二三四社区欧美黄| 91麻豆国产自产在线观看| 亚洲视频一二三区| 99视频精品在线| 亚洲精品水蜜桃| 91色在线porny| 中文字幕一区日韩精品欧美| 99免费精品视频| 久久电影网站中文字幕| 91精品国产一区二区人妖| 天堂va蜜桃一区二区三区漫画版| 欧美日韩三级一区二区|