📄 filesys_8h.html
字号:
<p>Open a file for reading. <p>Prepares the Filing System to read a data file from the storage. Files are referred to by their numbers, not file names. This makes the system generic, not necessarily needing a complex file system such as FAT. The way to assign numbers to files is implementation dependent. Returns 0 when ok, error code otherwise. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>fileNumber</em> </td><td>number of file, starting from beginning of storage, to open.</td></tr> </table></dl>What this function actually does, is: it starts reading the FAT records from start of the root directory, traversing through subdirectories as it encounters them. When the fileNumber'th valid record is encountered, it sets sectorAddress to point to its first data sector but doesn't load any sector. fileSize is loaded with the size in bytes indicated in the FAT record.<p>Additionally, if it's called with 0 as the fileNumber and it happens to see an empty directory record, it registers a new file with name RECnnnnn.WAV starting from cluster fragment[0].start with file size from fragment[0].length <p>Definition at line <a class="el" href="filesys_8c-source.html#l00610">610</a> of file <a class="el" href="filesys_8c-source.html">filesys.c</a>.<p>References <a class="el" href="buffer_8h-source.html#l00019">DirRecordUnion::Entry::Attr</a>, <a class="el" href="board_8h-source.html#l00253">Temp::c</a>, <a class="el" href="filesys_8c-source.html#l00065">currentFileName</a>, <a class="el" href="buffer_8c-source.html#l00013">dataBufPtr</a>, <a class="el" href="filesys_8c-source.html#l00029">dataStart</a>, <a class="el" href="buffer_8h-source.html#l00111">DiskBlock::dir</a>, <a class="el" href="filesys_8c-source.html#l00059">dirLevel</a>, <a class="el" href="filesys_8c.html#a8">dirStack</a>, <a class="el" href="buffer_8c-source.html#l00010">diskSect</a>, <a class="el" href="display_8c-source.html#l00012">displayText</a>, <a class="el" href="unionDirRecordUnion.html#o0">DirRecordUnion::entry</a>, <a class="el" href="filesys_8c-source.html#l00055">directoryStack::entry</a>, <a class="el" href="filesys_8c-source.html#l00032">fatSectorsPerCluster</a>, <a class="el" href="filesys_8c-source.html#l00047">fileSize</a>, <a class="el" href="buffer_8h-source.html#l00029">DirRecordUnion::Entry::FileSize</a>, <a class="el" href="filesys_8c.html#a6">fragment</a>, <a class="el" href="buffer_8h-source.html#l00025">DirRecordUnion::Entry::FstClusHi</a>, <a class="el" href="buffer_8h-source.html#l00028">DirRecordUnion::Entry::FstClusLo</a>, <a class="el" href="filesys_8c-source.html#l00303">GetNextSector()</a>, <a class="el" href="mmc_8c-source.html#l00246">InitMMC()</a>, <a class="el" href="buffer_8h-source.html#l00129">Address::l</a>, <a class="el" href="filesys_8h-source.html#l00027">fragmentEntry::length</a>, <a class="el" href="filesys_8c-source.html#l00050">MAX_NUMBER_SUBDIRECTORIES</a>, <a class="el" href="buffer_8h-source.html#l00018">DirRecordUnion::Entry::Name</a>, <a class="el" href="board_8h-source.html#l00280">Public</a>, <a class="el" href="storage_8c-source.html#l00110">ReadDiskSector()</a>, <a class="el" href="filesys_8c-source.html#l00024">rootStart</a>, <a class="el" href="filesys_8c-source.html#l00054">directoryStack::sector</a>, <a class="el" href="buffer_8c-source.html#l00015">sectorAddress</a>, <a class="el" href="filesys_8h-source.html#l00026">fragmentEntry::start</a>, <a class="el" href="board_8c.html#a0">temp</a>, and <a class="el" href="storage_8c-source.html#l00183">WriteDiskSector()</a>.<p>Referenced by <a class="el" href="player_8c-source.html#l00765">main()</a>, and <a class="el" href="filesys_8c-source.html#l00129">WriteClusterChain()</a>.<p><pre class="fragment"><div>00610 {00611 <span class="keywordtype">char</span> tempc;00612 00613 ConsoleWrite(<span class="stringliteral">"\rFilesystem: Looking for file "</span>);00614 ConsolePutUInt(fileNumber);00615 ConsoleWrite(<span class="stringliteral">"... "</span>);00616 00617 <span class="comment">/* Start at the start of root directory. */</span>00618 <a class="code" href="filesys_8c.html#a9">dirLevel</a> = 0; <span class="comment">/* At root directory */</span>00619 <a class="code" href="filesys_8c.html#a8">dirStack</a>[<a class="code" href="filesys_8c.html#a9">dirLevel</a>].<a class="code" href="structdirectoryStack.html#o0">sector</a>=<a class="code" href="filesys_8c.html#a3">rootStart</a>;00620 <a class="code" href="filesys_8c.html#a8">dirStack</a>[<a class="code" href="filesys_8c.html#a9">dirLevel</a>].<a class="code" href="structdirectoryStack.html#o1">entry</a>=0;00621 00622 00623 <span class="keywordflow">if</span> (fileNumber==0){00624 fileNumber = 32766; <span class="comment">//use max-1 value for scanning for free entry</span>00625 }00626 00627 <span class="keywordflow">while</span> (fileNumber){00628 <span class="keywordflow">if</span> (<a class="code" href="filesys_8c.html#a8">dirStack</a>[<a class="code" href="filesys_8c.html#a9">dirLevel</a>].<a class="code" href="structdirectoryStack.html#o1">entry</a>==0){00629 <span class="comment">/* At the start of new dir, load first disk sector */</span>00630 <span class="keywordflow">while</span> (<a class="code" href="storage_8h.html#a2">ReadDiskSector</a>(dirStack[dirLevel].sector)){00631 <a class="code" href="mmc_8c.html#a5">InitMMC</a>;00632 }00633 }00634 <a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a> = <a class="code" href="filesys_8c.html#a8">dirStack</a>[<a class="code" href="filesys_8c.html#a9">dirLevel</a>].<a class="code" href="structdirectoryStack.html#o1">entry</a>;00635 00636 <span class="comment">/* We are now looking at FAT directory structure. */</span>00637 00638 <span class="comment">/* Is current entry empty? */</span> 00639 <span class="keywordflow">if</span> ((<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[0]==0)00640 ||(<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[0]==0xe5)){ 00641 <span class="comment">/* Yes. Are we supposed to make an entry now? */</span>00642 <span class="keywordflow">if</span> (fileNumber>30000){ 00643 <span class="comment">//yes, this is actually a request to write file directory entry!;</span>00644 00645 fileNumber = 32767-fileNumber;00646 00647 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[0] =<span class="charliteral">'R'</span>;00648 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[1] =<span class="charliteral">'E'</span>;00649 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[2] =<span class="charliteral">'C'</span>;00650 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[7] =(fileNumber%10)+<span class="charliteral">'0'</span>; 00651 fileNumber /= 10;00652 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[6] =(fileNumber%10)+<span class="charliteral">'0'</span>;00653 fileNumber /= 10;00654 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[5] =(fileNumber%10)+<span class="charliteral">'0'</span>;00655 fileNumber /= 10;00656 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[4] =(fileNumber%10)+<span class="charliteral">'0'</span>;00657 fileNumber /= 10;00658 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[3] =(fileNumber%10)+<span class="charliteral">'0'</span>;00659 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[8] =<span class="charliteral">'W'</span>;00660 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[9] =<span class="charliteral">'A'</span>;00661 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[10]=<span class="charliteral">'V'</span>;00662 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o1">Attr</a> = 0;00663 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o7">FstClusHi</a> = (<a class="code" href="filesys_8c.html#a6">fragment</a>[0].<a class="code" href="structfragmentEntry.html#o0">start</a> >> 16);00664 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o10">FstClusLo</a> = (<a class="code" href="filesys_8c.html#a6">fragment</a>[0].<a class="code" href="structfragmentEntry.html#o0">start</a> & 0xffff);00665 <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o11">FileSize</a> = (<a class="code" href="filesys_8c.html#a6">fragment</a>[0].<a class="code" href="structfragmentEntry.html#o1">length</a>);00666 00667 ConsoleWrite(<span class="stringliteral">" Making Directory Entry "</span>);00668 <a class="code" href="storage_8h.html#a4">WriteDiskSector</a>(<a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a>);00669 00670 <span class="keywordflow">return</span> 99; <span class="comment">//created a FAT entry</span>00671 } <span class="comment">//register file</span>00672 }00673 00674 00675 <span class="comment">/* Does current entry point to a regular file? */</span>00676 <span class="comment">/* Attributes: NO directory, NO volume id, NO system, NO hidden */</span>00677 <span class="keywordflow">if</span> (((<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o1">Attr</a> & 222) == 0) 00678 && (<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[0] != 0xe5) 00679 && (<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[0] != 0) ){00680 00681 <span class="comment">/* It is a regular file. */</span>00682 <span class="keywordflow">if</span> (!(--fileNumber)){00683 00684 <span class="comment">/* ------------ FILE FOUND ------------- */</span>00685 00686 <a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a> = 00687 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o7">FstClusHi</a><<16) 00688 + <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o10">FstClusLo</a>;00689 <a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a> *= <a class="code" href="filesys_8c.html#a5">fatSectorsPerCluster</a>;00690 <a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a> += <a class="code" href="filesys_8c.html#a4">dataStart</a>;00691 00692 <a class="code" href="filesys_8c.html#a7">fileSize</a> = <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o11">FileSize</a>;00693 <a class="code" href="buffer_8c.html#a1">dataBufPtr</a> = 0; <span class="comment">/* Reset data buffer ptr for FGetChar */</span>00694 00695 ConsoleWrite(<span class="stringliteral">"found, FAT name is \""</span>);00696 <span class="keywordflow">for</span> (tempc=0; tempc<11; tempc++){00697 ConsolePutChar(<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].entry.Name[tempc]);00698 }00699 00700 <span class="comment">//Store file name nicely for displaying on screen :)</span>00701 <span class="keywordflow">for</span> (tempc=0; tempc<8; tempc++){00702 <a class="code" href="filesys_8c.html#a11">currentFileName</a>[tempc]=<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[tempc];00703 }00704 <a class="code" href="filesys_8c.html#a11">currentFileName</a>[8]=<span class="charliteral">'.'</span>;00705 <a class="code" href="filesys_8c.html#a11">currentFileName</a>[9]=<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[8];00706 <a class="code" href="filesys_8c.html#a11">currentFileName</a>[10]=<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[9];00707 <a class="code" href="filesys_8c.html#a11">currentFileName</a>[11]=<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[10];00708 <a class="code" href="display_8c.html#a2">displayText</a>[0]=<span class="charliteral">' '</span>;00709 <span class="keywordflow">for</span> (tempc=0; tempc<12; tempc++){00710 <a class="code" href="display_8c.html#a2">displayText</a>[tempc+1]=<a class="code" href="filesys_8c.html#a11">currentFileName</a>[tempc];00711 }00712 00713 ConsoleWrite(<span class="stringliteral">"\"\rFile size: "</span>);00714 ConsolePutUInt(fileSize);00715 ConsoleWrite(<span class="stringliteral">"bytes. "</span>);00716 00717 ConsoleWrite(<span class="stringliteral">"Start cluster: "</span>);00718 ConsolePutHex8(<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].entry.FstClusHi);00719 ConsolePutHex8(<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].entry.FstClusLo);00720 ConsoleWrite(<span class="stringliteral">"h, sector "</span>);00721 ConsolePutUInt(<a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a>);00722 ConsoleWrite(<span class="stringliteral">"decimal.\r"</span>);00723 00724 <span class="keywordflow">return</span> 0; <span class="comment">/* File found, All OK return */</span>00725 }00726 } <span class="comment">/* it was a regular file */</span>00727 00728 00729 00730 <span class="comment">/* Is it a subdirectory? */</span>00731 <span class="keywordflow">if</span> (((<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o1">Attr</a> & 16) != 0) 00732 && (<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o2">dir</a>[<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o0">c</a>].<a class="code" href="unionDirRecordUnion.html#o0">entry</a>.<a class="code" href="structDirRecordUnion_1_1Entry.html#o0">Name</a>[0] != <span class="charliteral">'.'</span>) <span class="comment">/* skip . and .. */</span> 00733 &&a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -