Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
DskStrB.txt97 linesDownload Raw Back to BlkDev
1 2Bool CFileNameTo(U8 *dst,U8 *src)3{4  MemSet(dst,0,CDIR_FILENAME_LEN);5  if (!FileNameChk(src))6    return FALSE;7  StrCpy(dst,src);8  return TRUE;9}10 11I64 Name2DirClus(CDrv *dv,U8 *dirname)12{13  Bool cont=TRUE,unlock;14  I64 cur_dir_clus;15  CDirEntry de;16  U8 *buf=StrNew(dirname),*buf2=StrNew(dirname);17  DrvChk(dv);18  try {19    unlock=DrvLock(dv);20    cur_dir_clus=dv->root_clus;21    while (*buf && cont) {22      StrFirstRem(buf,"/",buf2);23      if (*buf2) {24        switch (dv->fs_type) {25          case FSt_REDSEA:26            cont=RedSeaFileFind(dv,cur_dir_clus,buf2,&de,FUF_JUST_DIRS);27            break;28          case FSt_FAT32:29            cont=FAT32FileFind(dv,cur_dir_clus,buf2,&de,FUF_JUST_DIRS);30            break;31          case FSt_ISO9660:32            cont=ISO1FileFind(dv,cur_dir_clus,buf2,&de,FUF_JUST_DIRS);33            break;34          default:35            throw('Drv');36        }37        cur_dir_clus=de.clus;38      }39    }40    if (!cont) {41      PrintErr("File not found: \"%s\".\n",dirname);42      cur_dir_clus=0;43    }44    if (unlock)45      DrvUnlock(dv);46  } catch47    if (unlock)48      DrvUnlock(dv);49  Free(buf);50  Free(buf2);51  return cur_dir_clus;52}53 54I64 Name2ParentDirClus(CDrv *dv,U8 *dirname)55{56  Bool cont=TRUE,unlock;57  I64 cur_dir_clus,cur_dir_clus2;58  CDirEntry de;59  U8 *buf=StrNew(dirname),*buf2=StrNew(dirname);60  DrvChk(dv);61  try {62    unlock=DrvLock(dv);63    cur_dir_clus=cur_dir_clus2=dv->root_clus;64    while (*buf && cont) {65      cur_dir_clus2=cur_dir_clus;66      StrFirstRem(buf,"/",buf2);67      if (*buf2) {68        switch (dv->fs_type) {69          case FSt_REDSEA:70            cont=RedSeaFileFind(dv,cur_dir_clus,buf2,&de,FUF_JUST_DIRS);71            break;72          case FSt_FAT32:73            cont=FAT32FileFind(dv,cur_dir_clus,buf2,&de,FUF_JUST_DIRS);74            break;75          case FSt_ISO9660:76            cont=ISO1FileFind(dv,cur_dir_clus,buf2,&de,FUF_JUST_DIRS);77            break;78          default:79            throw('Drv');80        }81        cur_dir_clus=de.clus;82      }83    }84    if (!cont) {85      PrintErr("File not found: \"%s\".\n",dirname);86      cur_dir_clus2=0;87    }88    if (unlock)89      DrvUnlock(dv);90  } catch91    if (unlock)92      DrvUnlock(dv);93  Free(buf);94  Free(buf2);95  return cur_dir_clus2;96}97