mirror of
https://github.com/Polprzewodnikowy/N64FlashcartMenu.git
synced 2025-11-27 13:16:07 +01:00
572 lines
30 KiB
HTML
572 lines
30 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.12.0"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>N64FlashcartMenu: cpakfs_utils.h File Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<script type="text/javascript" src="clipboard.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="cookie.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">N64FlashcartMenu
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.12.0 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() { codefold.init(0); });
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search',false);
|
|
$(function() { init_search(); });
|
|
});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function(){ initResizable(false); });
|
|
/* @license-end */
|
|
</script>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_313caf1132e152dd9b58bea13a4052ca.html">utils</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Data Structures</a> |
|
|
<a href="#define-members">Macros</a> |
|
|
<a href="#func-members">Functions</a> |
|
|
<a href="#var-members">Variables</a> </div>
|
|
<div class="headertitle"><div class="title">cpakfs_utils.h File Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Utilities for working with Controller Pak file systems.
|
|
<a href="#details">More...</a></p>
|
|
|
|
<p><a href="cpakfs__utils_8h_source.html">Go to the source code of this file.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
|
Data Structures</h2></td></tr>
|
|
<tr class="memitem:structcpakfs__path__strings__t" id="r_structcpakfs__path__strings__t"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="#structcpakfs__path__strings__t">cpakfs_path_strings_t</a></td></tr>
|
|
<tr class="memdesc:structcpakfs__path__strings__t"><td class="mdescLeft"> </td><td class="mdescRight">Structure holding parsed components of a Controller Pak file path. <a href="#structcpakfs__path__strings__t">More...</a><br /></td></tr>
|
|
<tr class="separator:structcpakfs__path__strings__t"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
|
|
Macros</h2></td></tr>
|
|
<tr class="memitem:a5461070c02b8db2645b69608529d7604" id="r_a5461070c02b8db2645b69608529d7604"><td class="memItemLeft" align="right" valign="top"><a id="a5461070c02b8db2645b69608529d7604" name="a5461070c02b8db2645b69608529d7604"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>FS_BLOCK_DIVIDER</b>   (8 * 32)</td></tr>
|
|
<tr class="memdesc:a5461070c02b8db2645b69608529d7604"><td class="mdescLeft"> </td><td class="mdescRight">Divider constant for file system block calculations. <br /></td></tr>
|
|
<tr class="separator:a5461070c02b8db2645b69608529d7604"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5439852860af56d4fe2ccf9910bd119b" id="r_a5439852860af56d4fe2ccf9910bd119b"><td class="memItemLeft" align="right" valign="top"><a id="a5439852860af56d4fe2ccf9910bd119b" name="a5439852860af56d4fe2ccf9910bd119b"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MAX_NUM_NOTES</b>   16</td></tr>
|
|
<tr class="memdesc:a5439852860af56d4fe2ccf9910bd119b"><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of notes (files) supported on a Controller Pak. <br /></td></tr>
|
|
<tr class="separator:a5439852860af56d4fe2ccf9910bd119b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:ab91af506e07a9d9a262e599df0e03b2b" id="r_ab91af506e07a9d9a262e599df0e03b2b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab91af506e07a9d9a262e599df0e03b2b">get_block_size_from_fs_path</a> (const char *filename_cpak)</td></tr>
|
|
<tr class="memdesc:ab91af506e07a9d9a262e599df0e03b2b"><td class="mdescLeft"> </td><td class="mdescRight">Get the block size from a Controller Pak file system path. <br /></td></tr>
|
|
<tr class="separator:ab91af506e07a9d9a262e599df0e03b2b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aea3880dc78e1cb50fb95d6736287fd0f" id="r_aea3880dc78e1cb50fb95d6736287fd0f"><td class="memItemLeft" align="right" valign="top"><a id="aea3880dc78e1cb50fb95d6736287fd0f" name="aea3880dc78e1cb50fb95d6736287fd0f"></a>
|
|
void </td><td class="memItemRight" valign="bottom"><b>unmount_all_cpakfs</b> (void)</td></tr>
|
|
<tr class="memdesc:aea3880dc78e1cb50fb95d6736287fd0f"><td class="mdescLeft"> </td><td class="mdescRight">Unmount all Controller Pak file systems. <br /></td></tr>
|
|
<tr class="separator:aea3880dc78e1cb50fb95d6736287fd0f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a317839c959ab5ced2cbc3eb0c16d6377" id="r_a317839c959ab5ced2cbc3eb0c16d6377"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#a317839c959ab5ced2cbc3eb0c16d6377">mount_cpakfs</a> (int controller)</td></tr>
|
|
<tr class="memdesc:a317839c959ab5ced2cbc3eb0c16d6377"><td class="mdescLeft"> </td><td class="mdescRight">Mount the Controller Pak file system for a given controller. <br /></td></tr>
|
|
<tr class="separator:a317839c959ab5ced2cbc3eb0c16d6377"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa558ad2522aba52f6cb3a2ad43ea5cdb" id="r_aa558ad2522aba52f6cb3a2ad43ea5cdb"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa558ad2522aba52f6cb3a2ad43ea5cdb">has_cpak</a> (int controller)</td></tr>
|
|
<tr class="memdesc:aa558ad2522aba52f6cb3a2ad43ea5cdb"><td class="mdescLeft"> </td><td class="mdescRight">Check if a Controller Pak is present in the given controller. <br /></td></tr>
|
|
<tr class="separator:aa558ad2522aba52f6cb3a2ad43ea5cdb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aab60c976955f46d4edcca087af0e2717" id="r_aab60c976955f46d4edcca087af0e2717"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#aab60c976955f46d4edcca087af0e2717">get_file_size_from_fs_path</a> (const char *filename_cpak)</td></tr>
|
|
<tr class="memdesc:aab60c976955f46d4edcca087af0e2717"><td class="mdescLeft"> </td><td class="mdescRight">Get the file size from a Controller Pak file system path. <br /></td></tr>
|
|
<tr class="separator:aab60c976955f46d4edcca087af0e2717"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a194a3e60d6a8d0555a69cd75dc069b6b" id="r_a194a3e60d6a8d0555a69cd75dc069b6b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#a194a3e60d6a8d0555a69cd75dc069b6b">extract_title_from_absolute_path</a> (const char *path, char *outbuf, size_t outbuf_size)</td></tr>
|
|
<tr class="memdesc:a194a3e60d6a8d0555a69cd75dc069b6b"><td class="mdescLeft"> </td><td class="mdescRight">Extract the title from an absolute file path. <br /></td></tr>
|
|
<tr class="separator:a194a3e60d6a8d0555a69cd75dc069b6b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2bd4fdfcc94976008ab08ac6e0c506b6" id="r_a2bd4fdfcc94976008ab08ac6e0c506b6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2bd4fdfcc94976008ab08ac6e0c506b6">parse_cpakfs_fullname</a> (const char *fullname, <a class="el" href="#structcpakfs__path__strings__t">cpakfs_path_strings_t</a> *out)</td></tr>
|
|
<tr class="memdesc:a2bd4fdfcc94976008ab08ac6e0c506b6"><td class="mdescLeft"> </td><td class="mdescRight">Parse a Controller Pak full filename into its components. <br /></td></tr>
|
|
<tr class="separator:a2bd4fdfcc94976008ab08ac6e0c506b6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6cfc0d92dc4af1f293f89921ae74b676" id="r_a6cfc0d92dc4af1f293f89921ae74b676"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6cfc0d92dc4af1f293f89921ae74b676">file_exists_full</a> (const char *full_mounted_path)</td></tr>
|
|
<tr class="memdesc:a6cfc0d92dc4af1f293f89921ae74b676"><td class="mdescLeft"> </td><td class="mdescRight">Check if a file exists at the given full mounted path. <br /></td></tr>
|
|
<tr class="separator:a6cfc0d92dc4af1f293f89921ae74b676"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a358564e756f44cdd5697e7c7dd034bbe" id="r_a358564e756f44cdd5697e7c7dd034bbe"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#a358564e756f44cdd5697e7c7dd034bbe">inc_index_note</a> (int current_index)</td></tr>
|
|
<tr class="memdesc:a358564e756f44cdd5697e7c7dd034bbe"><td class="mdescLeft"> </td><td class="mdescRight">Increment a note index, wrapping around MAX_NUM_NOTES. <br /></td></tr>
|
|
<tr class="separator:a358564e756f44cdd5697e7c7dd034bbe"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afa9a8b21dbb10f350a49233192847329" id="r_afa9a8b21dbb10f350a49233192847329"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#afa9a8b21dbb10f350a49233192847329">dec_index_note</a> (int current_index)</td></tr>
|
|
<tr class="memdesc:afa9a8b21dbb10f350a49233192847329"><td class="mdescLeft"> </td><td class="mdescRight">Decrement a note index, wrapping around MAX_NUM_NOTES. <br /></td></tr>
|
|
<tr class="separator:afa9a8b21dbb10f350a49233192847329"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a22f8aaef686aad01a388adf83ff9e944" id="r_a22f8aaef686aad01a388adf83ff9e944"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#a22f8aaef686aad01a388adf83ff9e944">pick_unique_fullname_with_mount</a> (const char *mount_prefix, const char *desired_name, char *out_fullpath, size_t outsz, int(*exists_fullpath)(const char *fullpath))</td></tr>
|
|
<tr class="memdesc:a22f8aaef686aad01a388adf83ff9e944"><td class="mdescLeft"> </td><td class="mdescRight">Pick a unique full filename with mount prefix, avoiding collisions. <br /></td></tr>
|
|
<tr class="separator:a22f8aaef686aad01a388adf83ff9e944"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
|
Variables</h2></td></tr>
|
|
<tr class="memitem:a219b82594417201920623e82d79354d8" id="r_a219b82594417201920623e82d79354d8"><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="#a219b82594417201920623e82d79354d8">CPAK_MOUNT_ARRAY</a> [4]</td></tr>
|
|
<tr class="memdesc:a219b82594417201920623e82d79354d8"><td class="mdescLeft"> </td><td class="mdescRight">Array of Controller Pak mount point strings (e.g., "cpak1:/"). <br /></td></tr>
|
|
<tr class="separator:a219b82594417201920623e82d79354d8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>Utilities for working with Controller Pak file systems. </p>
|
|
</div><hr/><h2 class="groupheader">Data Structure Documentation</h2>
|
|
<a name="structcpakfs__path__strings__t" id="structcpakfs__path__strings__t"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#structcpakfs__path__strings__t">◆ </a></span>cpakfs_path_strings_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">struct cpakfs_path_strings_t</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<div class="textblock"><p>Structure holding parsed components of a Controller Pak file path. </p>
|
|
<p>This struct contains the game code, publisher code, filename, and extension parsed from a Controller Pak file path. </p>
|
|
</div><table class="fieldtable">
|
|
<tr><th colspan="3">Data Fields</th></tr>
|
|
<tr><td class="fieldtype">
|
|
<a id="ae9da9578e7b8ae989a881e322a82ceed" name="ae9da9578e7b8ae989a881e322a82ceed"></a>char</td>
|
|
<td class="fieldname">
|
|
gamecode[5]</td>
|
|
<td class="fielddoc">
|
|
<p>Game code (4 chars + null terminator) </p>
|
|
</td></tr>
|
|
<tr><td class="fieldtype">
|
|
<a id="a560d02fb4ddef8f05a86b4856c9ce34a" name="a560d02fb4ddef8f05a86b4856c9ce34a"></a>char</td>
|
|
<td class="fieldname">
|
|
pubcode[5]</td>
|
|
<td class="fielddoc">
|
|
<p>Publisher code (up to 4 chars + null terminator) </p>
|
|
</td></tr>
|
|
<tr><td class="fieldtype">
|
|
<a id="abe07678dec513bae87d3f303c5cc7edb" name="abe07678dec513bae87d3f303c5cc7edb"></a>char</td>
|
|
<td class="fieldname">
|
|
filename[17]</td>
|
|
<td class="fielddoc">
|
|
<p>Filename (up to 16 chars + null terminator) </p>
|
|
</td></tr>
|
|
<tr><td class="fieldtype">
|
|
<a id="a8336f174a81765e129e1e30570a7d058" name="a8336f174a81765e129e1e30570a7d058"></a>char</td>
|
|
<td class="fieldname">
|
|
ext[5]</td>
|
|
<td class="fielddoc">
|
|
<p>Extension (up to 4 chars + null terminator) </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="ab91af506e07a9d9a262e599df0e03b2b" name="ab91af506e07a9d9a262e599df0e03b2b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab91af506e07a9d9a262e599df0e03b2b">◆ </a></span>get_block_size_from_fs_path()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int get_block_size_from_fs_path </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>filename_cpak</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the block size from a Controller Pak file system path. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">filename_cpak</td><td>The Controller Pak file path. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The block size, or -1 on error. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a317839c959ab5ced2cbc3eb0c16d6377" name="a317839c959ab5ced2cbc3eb0c16d6377"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a317839c959ab5ced2cbc3eb0c16d6377">◆ </a></span>mount_cpakfs()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int mount_cpakfs </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>controller</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Mount the Controller Pak file system for a given controller. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">controller</td><td>The controller index (0-3). </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 on failure. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa558ad2522aba52f6cb3a2ad43ea5cdb" name="aa558ad2522aba52f6cb3a2ad43ea5cdb"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa558ad2522aba52f6cb3a2ad43ea5cdb">◆ </a></span>has_cpak()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool has_cpak </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>controller</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Check if a Controller Pak is present in the given controller. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">controller</td><td>The controller index (0-3). </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if a Controller Pak is present, false otherwise. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aab60c976955f46d4edcca087af0e2717" name="aab60c976955f46d4edcca087af0e2717"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aab60c976955f46d4edcca087af0e2717">◆ </a></span>get_file_size_from_fs_path()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int get_file_size_from_fs_path </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>filename_cpak</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the file size from a Controller Pak file system path. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">filename_cpak</td><td>The Controller Pak file path. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The file size in bytes, or -1 on error. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a194a3e60d6a8d0555a69cd75dc069b6b" name="a194a3e60d6a8d0555a69cd75dc069b6b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a194a3e60d6a8d0555a69cd75dc069b6b">◆ </a></span>extract_title_from_absolute_path()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int extract_title_from_absolute_path </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>path</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">char *</td> <td class="paramname"><span class="paramname"><em>outbuf</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>outbuf_size</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Extract the title from an absolute file path. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">path</td><td>The absolute file path. </td></tr>
|
|
<tr><td class="paramname">outbuf</td><td>Output buffer for the title. </td></tr>
|
|
<tr><td class="paramname">outbuf_size</td><td>Size of the output buffer. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>0 on success, negative value on error.</dd></dl>
|
|
<p>The title is the filename up to the first underscore or dot, or the whole filename if neither is present.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">path</td><td>The absolute file path. </td></tr>
|
|
<tr><td class="paramname">outbuf</td><td>Output buffer for the title. </td></tr>
|
|
<tr><td class="paramname">outbuf_size</td><td>Size of the output buffer. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>0 on success, negative value on error. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a2bd4fdfcc94976008ab08ac6e0c506b6" name="a2bd4fdfcc94976008ab08ac6e0c506b6"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a2bd4fdfcc94976008ab08ac6e0c506b6">◆ </a></span>parse_cpakfs_fullname()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int parse_cpakfs_fullname </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>fullname</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="#structcpakfs__path__strings__t">cpakfs_path_strings_t</a> *</td> <td class="paramname"><span class="paramname"><em>out</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Parse a Controller Pak full filename into its components. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">fullname</td><td>The full filename string. </td></tr>
|
|
<tr><td class="paramname">out</td><td>Output struct for parsed components. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>0 on success, negative value on error. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6cfc0d92dc4af1f293f89921ae74b676" name="a6cfc0d92dc4af1f293f89921ae74b676"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6cfc0d92dc4af1f293f89921ae74b676">◆ </a></span>file_exists_full()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int file_exists_full </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>full_mounted_path</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Check if a file exists at the given full mounted path. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">full_mounted_path</td><td>The full mounted file path. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>1 if the file exists, 0 otherwise. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a358564e756f44cdd5697e7c7dd034bbe" name="a358564e756f44cdd5697e7c7dd034bbe"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a358564e756f44cdd5697e7c7dd034bbe">◆ </a></span>inc_index_note()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int inc_index_note </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>current_index</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Increment a note index, wrapping around MAX_NUM_NOTES. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">current_index</td><td>The current note index. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The incremented note index. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="afa9a8b21dbb10f350a49233192847329" name="afa9a8b21dbb10f350a49233192847329"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afa9a8b21dbb10f350a49233192847329">◆ </a></span>dec_index_note()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int dec_index_note </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>current_index</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Decrement a note index, wrapping around MAX_NUM_NOTES. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">current_index</td><td>The current note index. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The decremented note index. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a22f8aaef686aad01a388adf83ff9e944" name="a22f8aaef686aad01a388adf83ff9e944"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a22f8aaef686aad01a388adf83ff9e944">◆ </a></span>pick_unique_fullname_with_mount()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int pick_unique_fullname_with_mount </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>mount_prefix</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>desired_name</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">char *</td> <td class="paramname"><span class="paramname"><em>out_fullpath</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>outsz</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int(*</td> <td class="paramname"><span class="paramname"><em>exists_fullpath </em></span>)(const char *fullpath) )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Pick a unique full filename with mount prefix, avoiding collisions. </p>
|
|
<p>Attempts to find a unique filename by incrementing the extension in base36 if needed.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">mount_prefix</td><td>The mount prefix (e.g., "cpak1:/"). </td></tr>
|
|
<tr><td class="paramname">desired_name</td><td>The desired base filename. </td></tr>
|
|
<tr><td class="paramname">out_fullpath</td><td>Output buffer for the unique full path. </td></tr>
|
|
<tr><td class="paramname">outsz</td><td>Size of the output buffer. </td></tr>
|
|
<tr><td class="paramname">exists_fullpath</td><td>Function pointer to check if a full path exists. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>0 on success, negative value on error.</dd></dl>
|
|
<p>This function attempts to find a unique filename by incrementing the extension in base36 if needed.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">mount_prefix</td><td>The mount prefix (e.g., "cpak1:/"). </td></tr>
|
|
<tr><td class="paramname">desired_name</td><td>The desired base filename. </td></tr>
|
|
<tr><td class="paramname">out_fullpath</td><td>Output buffer for the unique full path. </td></tr>
|
|
<tr><td class="paramname">outsz</td><td>Size of the output buffer. </td></tr>
|
|
<tr><td class="paramname">exists_fullpath</td><td>Function pointer to check if a full path exists. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>0 on success, negative value on error. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Variable Documentation</h2>
|
|
<a id="a219b82594417201920623e82d79354d8" name="a219b82594417201920623e82d79354d8"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a219b82594417201920623e82d79354d8">◆ </a></span>CPAK_MOUNT_ARRAY</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char* const CPAK_MOUNT_ARRAY[4]</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">extern</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Array of Controller Pak mount point strings (e.g., "cpak1:/"). </p>
|
|
<p>Array of Controller Pak mount point strings (e.g., "cpak1:/"). </p>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Wed Nov 26 2025 01:10:49 for N64FlashcartMenu by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
|
|
</small></address>
|
|
</div><!-- doc-content -->
|
|
</body>
|
|
</html>
|