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

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

?? ff.lst

?? C8051F340讀寫SD卡,帶文件系統
?? LST
?? 第 1 頁 / 共 5 頁
字號:
C51 COMPILER V7.06   FF                                                                    03/06/2010 17:37:27 PAGE 16  

 920          
 921          
 922          
 923          /*-----------------------------------------------------------------------*/
 924          /* Register an object to the directory                                   */
 925          /*-----------------------------------------------------------------------*/
 926          #if !_FS_READONLY
 927          static
 928          FRESULT dir_register (  /* FR_OK:Successful, FR_DENIED:No free entry or too many SFN collision, FR_DISK_ERR
             -:Disk error */
 929                  DIR *dj                         /* Target directory with object name to be created */
 930          )
 931          {
 932   1              FRESULT res;
 933   1              BYTE c, *dir;
 934   1      #if _USE_LFN    /* LFN configuration */
                      WORD n, ne, is;
                      BYTE sn[12], *fn, sum;
                      WCHAR *lfn;
              
              
                      fn = dj->fn; lfn = dj->lfn;
                      mem_cpy(sn, fn, 12);
              
                      if (_FS_RPATH && (sn[11] & NS_DOT)) return FR_INVALID_NAME;     /* Cannot create dot entry */
              
                      if (sn[11] & NS_LOSS) {                 /* When LFN is out of 8.3 format, generate a numbered name */
                              fn[11] = 0; dj->lfn = NULL;                     /* Find only SFN */
                              for (n = 1; n < 100; n++) {
                                      gen_numname(fn, sn, lfn, n);    /* Generate a numbered name */
                                      res = dir_find(dj);                             /* Check if the name collides with existing SFN */
                                      if (res != FR_OK) break;
                              }
                              if (n == 100) return FR_DENIED;         /* Abort if too many collisions */
                              if (res != FR_NO_FILE) return res;      /* Abort if the result is other than 'not collided' */
                              fn[11] = sn[11]; dj->lfn = lfn;
                      }
              
                      if (sn[11] & NS_LFN) {                  /* When LFN is to be created, reserve reserve an SFN + LFN entries. */
                              for (ne = 0; lfn[ne]; ne++) ;
                              ne = (ne + 25) / 13;
                      } else {                                                /* Otherwise reserve only an SFN entry. */
                              ne = 1;
                      }
              
                      /* Reserve contiguous entries */
                      res = dir_seek(dj, 0);
                      if (res != FR_OK) return res;
                      n = is = 0;
                      do {
                              res = move_window(dj->fs, dj->sect);
                              if (res != FR_OK) break;
                              c = *dj->dir;                           /* Check the entry status */
                              if (c == 0xE5 || c == 0) {      /* Is it a blank entry? */
                                      if (n == 0) is = dj->index;     /* First index of the contigulus entry */
                                      if (++n == ne) break;   /* A contiguous entry that requiered count is found */
                              } else {
                                      n = 0;                                  /* Not a blank entry. Restart to search */
                              }
                              res = dir_next(dj, TRUE);       /* Next entry with table streach */
                      } while (res == FR_OK);
              
C51 COMPILER V7.06   FF                                                                    03/06/2010 17:37:27 PAGE 17  

                      if (res == FR_OK && ne > 1) {   /* Initialize LFN entry if needed */
                              res = dir_seek(dj, is);
                              if (res == FR_OK) {
                                      sum = sum_sfn(dj->fn);  /* Sum of the SFN tied to the LFN */
                                      ne--;
                                      do {                                    /* Store LFN entries in bottom first */
                                              res = move_window(dj->fs, dj->sect);
                                              if (res != FR_OK) break;
                                              fit_lfn(dj->lfn, dj->dir, (BYTE)ne, sum);
                                              dj->fs->wflag = 1;
                                              res = dir_next(dj, FALSE);      /* Next entry */
                                      } while (res == FR_OK && --ne);
                              }
                      }
              
              #else   /* Non LFN configuration */
 997   1              res = dir_seek(dj, 0);
 998   1              if (res == FR_OK) {
 999   2                      do {    /* Find a blank entry for the SFN */
1000   3                              res = move_window(dj->fs, dj->sect);
1001   3                              if (res != FR_OK) break;
1002   3                              c = *dj->dir;
1003   3                              if (c == 0xE5 || c == 0) break; /* Is it a blank entry? */
1004   3                              res = dir_next(dj, TRUE);               /* Next entry with table streach */
1005   3                      } while (res == FR_OK);
1006   2              }
1007   1      #endif
1008   1      
1009   1              if (res == FR_OK) {             /* Initialize the SFN entry */
1010   2                      res = move_window(dj->fs, dj->sect);
1011   2                      if (res == FR_OK) {
1012   3                              dir = dj->dir;
1013   3                              mem_set(dir, 0, 32);            /* Clean the entry */
1014   3                              mem_cpy(dir, dj->fn, 11);       /* Put SFN */
1015   3                              dir[DIR_NTres] = *(dj->fn+11) & 0x18;   /* Put NT flag */
1016   3                              dj->fs->wflag = 1;
1017   3                      }
1018   2              }
1019   1      
1020   1              return res;
1021   1      }
1022          #endif /* !_FS_READONLY */
1023          
1024          
1025          
1026          
1027          /*-----------------------------------------------------------------------*/
1028          /* Remove an object from the directory                                   */
1029          /*-----------------------------------------------------------------------*/
1030          #if !_FS_READONLY && !_FS_MINIMIZE
1031          static
1032          FRESULT dir_remove (    /* FR_OK: Successful, FR_DISK_ERR: A disk error */
1033                  DIR *dj                         /* Directory object pointing the entry to be removed */
1034          )
1035          {
1036   1              FRESULT res;
1037   1      #if _USE_LFN    /* LFN configuration */
                      WORD i;
              
                      i = dj->index;  /* SFN index */
                      res = dir_seek(dj, (WORD)((dj->lfn_idx == 0xFFFF) ? i : dj->lfn_idx));  /* Goto the SFN or top of the LFN 
             -entries */
C51 COMPILER V7.06   FF                                                                    03/06/2010 17:37:27 PAGE 18  

                      if (res == FR_OK) {
                              do {
                                      res = move_window(dj->fs, dj->sect);
                                      if (res != FR_OK) break;
                                      *dj->dir = 0xE5;                        /* Mark the entry "deleted" */
                                      dj->fs->wflag = 1;
                                      if (dj->index >= i) break;      /* When reached SFN, all entries of the object has been deleted. */
                                      res = dir_next(dj, FALSE);      /* Next entry */
                              } while (res == FR_OK);
                              if (res == FR_NO_FILE) res = FR_INT_ERR;
                      }
              
              #else                   /* Non LFN configuration */
1055   1              res = dir_seek(dj, dj->index);
1056   1              if (res == FR_OK) {
1057   2                      res = move_window(dj->fs, dj->sect);
1058   2                      if (res == FR_OK) {
1059   3                              *dj->dir = 0xE5;                        /* Mark the entry "deleted" */
1060   3                              dj->fs->wflag = 1;
1061   3                      }
1062   2              }
1063   1      #endif
1064   1      
1065   1              return res;
1066   1      }
1067          #endif /* !_FS_READONLY */
1068          
1069          
1070          
1071          
1072          /*-----------------------------------------------------------------------*/
1073          /* Pick a segment and create the object name in directory form           */
1074          /*-----------------------------------------------------------------------*/
1075          
1076          
1077          static
1078          FRESULT create_name (
1079                  DIR *dj,                        /* Pointer to the directory object */
1080                  const XCHAR **path      /* Pointer to pointer to the segment in the path string */
1081          )
1082          {
1083   1      #ifdef _EXCVT
                      static const BYTE cvt[] = _EXCVT;
              #endif
1086   1      #if _USE_LFN    /* LFN configuration */
                      BYTE b, cf;
                      WCHAR w, *lfn;
                      int i, ni, si, di;
                      const XCHAR *p;
              
                      /* Create LFN in Unicode */
                      si = di = 0;
                      p = *path;
                      lfn = dj->lfn;
                      for (;;) {
                              w = p[si++];                                    /* Get a character */
                              if (w < L' ' || w == L'/' || w == L'\\') break; /* Break on end of segment */
                              if (di >= _MAX_LFN)                             /* Reject too long name */
                                      return FR_INVALID_NAME;
              #if !_LFN_UNICODE
                              w &= 0xFF;
                              if (IsDBCS1(w)) {                               /* If it is a DBC 1st byte */
C51 COMPILER V7.06   FF                                                                    03/06/2010 17:37:27 PAGE 19  

                                      BYTE c = p[si++];                       /* Get 2nd byte */
                                      if (!IsDBCS2(c))                        /* Reject invalid code for DBC */
                                              return FR_INVALID_NAME;
                                      w = (w << 8) + c;
                              }
                              w = ff_convert(w, 1);                   /* Convert OEM to Unicode */
                              if (!w) return FR_INVALID_NAME; /* Reject invalid code */
              #endif
                              if (w < 0x80 && chk_chr("\"*:<>\?|\x7F", w)) /* Reject unallowable chars for LFN */
                                      return FR_INVALID_NAME;
                              lfn[di++] = w;                                  /* Store the Unicode char */
                      }
                      *path = &p[si];                                         /* Rerurn pointer to the next segment */
                      cf = (w < L' ') ? NS_LAST : 0;          /* Set last segment flag if end of path */
              #if _FS_RPATH
                      if ((di == 1 && lfn[di - 1] == L'.') || /* Is this a dot entry? */
                              (di == 2 && lfn[di - 1] == L'.' && lfn[di - 2] == L'.')) {
                              lfn[di] = 0;
                              for (i = 0; i < 11; i++)
                                      dj->fn[i] = (i < di) ? '.' : ' ';
                              dj->fn[i] = cf | NS_DOT;                /* This is a dot entry */
                              return FR_OK;
                      }
              #endif
                      while (di) {                                            /* Strip trailing spaces and dots */
                              w = lfn[di - 1];
                              if (w != L' ' && w != L'.') break;
                              di--;
                      }
                      if (!di) return FR_INVALID_NAME;        /* Reject null string */
              
                      lfn[di] = 0;                                            /* LFN is created */
              
                      /* Create SFN in directory form */
                      mem_set(dj->fn, ' ', 11);
                      for (si = 0; lfn[si] == L' ' || lfn[si] == L'.'; si++) ;        /* Strip leading spaces and dots */
                      if (si) cf |= NS_LOSS | NS_LFN;
                      while (di && lfn[di - 1] != '.') di--;  /* Find extension (di<=si: no extension) */
              
                      b = i = 0; ni = 8;
                      for (;;) {
                              w = lfn[si++];                                  /* Get an LFN char */
      

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷久久久亚洲一区二区三区| 日韩一区二区三区免费看| 4hu四虎永久在线影院成人| 欧美成人艳星乳罩| 一卡二卡三卡日韩欧美| 国产精品一区二区不卡| 欧美久久久一区| 亚洲三级在线观看| 国产成人av在线影院| 欧美一区二区视频在线观看2022| 亚洲mv在线观看| 波波电影院一区二区三区| 日韩美女视频在线| 日韩精品电影在线观看| 在线视频观看一区| 自拍偷拍国产精品| 粉嫩aⅴ一区二区三区四区五区| 日韩一区二区中文字幕| 亚洲一区视频在线| 97成人超碰视| 亚洲欧美在线aaa| 国产福利不卡视频| 久久亚洲影视婷婷| 久久国产精品无码网站| 日韩欧美另类在线| 久久国产精品99久久久久久老狼| 欧美精品日韩一区| 青青草原综合久久大伊人精品优势| 在线中文字幕不卡| 一区二区三区在线观看动漫 | 国产日韩欧美综合一区| 久久成人免费日本黄色| 精品福利视频一区二区三区| 免费国产亚洲视频| www日韩大片| 国产一区二区女| 久久免费视频色| 国产精品1区二区.| 中文一区在线播放| 一本久道久久综合中文字幕| 亚洲精品自拍动漫在线| 欧洲一区二区三区免费视频| 亚洲一区国产视频| 欧美一卡二卡三卡| 韩日av一区二区| 国产视频一区在线播放| 风间由美一区二区av101| 中文字幕制服丝袜一区二区三区| 色综合天天做天天爱| 亚洲一区精品在线| 欧美一区二区在线免费观看| 国产中文字幕精品| 一区在线观看免费| 欧美日韩精品一区二区在线播放| 日本欧美在线观看| 国产精品私人自拍| 欧美无砖专区一中文字| 另类专区欧美蜜桃臀第一页| 中文字幕高清不卡| 欧美三级电影在线看| 精品一区二区久久久| 国产精品电影院| 在线成人免费观看| 国产传媒欧美日韩成人| 亚洲精品五月天| 精品国产免费人成在线观看| 高清成人在线观看| 亚洲国产精品一区二区久久| 亚洲精品一区二区三区香蕉| 99久久伊人精品| 蜜臀精品久久久久久蜜臀 | 亚洲视频中文字幕| 欧美日韩高清在线| 国产精品99久久久久久久女警| 亚洲精品高清在线| 精品捆绑美女sm三区| 色哟哟国产精品免费观看| 美脚の诱脚舐め脚责91 | 日韩福利电影在线| 欧美国产成人精品| 日韩区在线观看| 91福利资源站| 国产成人午夜精品影院观看视频 | 自拍av一区二区三区| 欧美mv日韩mv国产网站| 91国内精品野花午夜精品| 国产乱一区二区| 日本欧洲一区二区| 亚洲最快最全在线视频| 国产精品麻豆久久久| 精品人伦一区二区色婷婷| 在线观看日韩高清av| 成人午夜视频免费看| 久久激情五月婷婷| 欧美96一区二区免费视频| 亚洲精品乱码久久久久| 国产视频一区二区三区在线观看| 欧美精品xxxxbbbb| 欧美私模裸体表演在线观看| 91在线视频免费观看| 国产成人av电影| 国产一区二区免费视频| 精品在线一区二区| 久久69国产一区二区蜜臀| 午夜久久久久久电影| 亚洲特级片在线| 国产精品毛片a∨一区二区三区| 欧美大片免费久久精品三p| 欧美精品色综合| 欧美日本国产视频| 欧美日韩电影在线播放| 欧美亚洲综合一区| 欧洲另类一二三四区| 日本黄色一区二区| 日本一道高清亚洲日美韩| 日韩久久免费av| 精品国产一区二区亚洲人成毛片 | 国产成人在线观看| 欧美精品一级二级| 欧美美女直播网站| 制服丝袜亚洲网站| 国产日韩欧美电影| 色综合天天综合网天天看片| 成人午夜av在线| 99精品久久久久久| 色婷婷综合视频在线观看| 色哟哟精品一区| 欧美三级欧美一级| 在线播放91灌醉迷j高跟美女| 欧美精选一区二区| 日韩精品一区二区在线| 久久综合资源网| 中文一区二区在线观看 | 欧美最新大片在线看| 91福利社在线观看| 日韩欧美区一区二| 国产精品乱码一区二区三区软件| 亚洲另类色综合网站| 水野朝阳av一区二区三区| 蜜臀精品久久久久久蜜臀| 国产91精品露脸国语对白| 色婷婷av一区二区三区gif| 欧美影片第一页| 2022国产精品视频| 亚洲女厕所小便bbb| 日韩成人一级片| 成人午夜在线播放| 欧美日韩精品一区视频| 久久精品欧美一区二区三区麻豆| 亚洲色欲色欲www| 日本中文字幕一区二区视频| 国产ts人妖一区二区| 色婷婷狠狠综合| 日韩欧美国产高清| 国产精品美女久久久久高潮| 无吗不卡中文字幕| 国产成人免费视频网站| 欧美日韩国产一级二级| 国产欧美日韩亚州综合| 亚洲成av人在线观看| 国产69精品久久99不卡| 欧美美女直播网站| 国产精品久久久久久亚洲毛片 | 国产一区在线观看视频| 日本高清不卡aⅴ免费网站| 日韩精品综合一本久道在线视频| 国产精品久久综合| 日本不卡一区二区| 99精品久久只有精品| 日韩精品最新网址| 亚洲地区一二三色| 成人免费毛片a| 久久综合久久久久88| 日韩国产一区二| 欧美最猛黑人xxxxx猛交| 国产欧美一区二区精品性色| 日本欧美加勒比视频| 日本精品一区二区三区高清 | 一本大道综合伊人精品热热| 久久久久久久久岛国免费| 五月天一区二区三区| 91视频精品在这里| 国产亚洲精品超碰| 国产一区二三区好的| 欧美一区二区精品久久911| 亚洲一区二区三区美女| 91丨九色丨黑人外教| 欧美国产精品v| 国产成人在线观看| 国产午夜精品一区二区三区视频 | 高清不卡在线观看| 欧美成人精精品一区二区频| 天天综合天天综合色| 91黄色免费观看| 亚洲日本一区二区三区| 91原创在线视频| 亚洲乱码国产乱码精品精的特点| 99国产欧美久久久精品| 国产精品狼人久久影院观看方式| 成人丝袜高跟foot|