Fixed a lot.
This commit is contained in:
@@ -41,22 +41,22 @@
|
||||
|
||||
<p>
|
||||
Copyright 2008, 2012 Neil Edelman, distributed under the terms of the
|
||||
GNU General Public License, see copying.txt, or
|
||||
<a href = "https://opensource.org/licenses/GPL-3.0">https://opensource.org/licenses/GPL-3.0</a>.
|
||||
GNU General Public License, see copying.txt, or
|
||||
<a href = "https://opensource.org/licenses/GPL-3.0">https://opensource.org/licenses/GPL-3.0</a>.
|
||||
</p>
|
||||
<p>
|
||||
Files is a list of File (private class defiend below,) the Files can have
|
||||
a relation to other Files by 'parent' and 'favourite' (@(pwd) uses this.)
|
||||
Files is a list of File (private class defiend below,) the Files can have
|
||||
a relation to other Files by 'parent' and 'favourite' (@(pwd) uses this.)
|
||||
</p>
|
||||
<dl>
|
||||
<dt>author:</dt>
|
||||
<dt>minimum standard</dt>
|
||||
<dd>C89/90</dd>
|
||||
<dt>author</dt>
|
||||
<dd>Neil</dd>
|
||||
<dt>version:</dt>
|
||||
<dd>0.9; 2017-03 fixed pedantic warnings</dd>
|
||||
<dt>since:</dt>
|
||||
<dd>0.8; 2013-07 case-insensitive sort
|
||||
0.7; 2012 sth.dsth.d handled properly
|
||||
0.6; 2008-03-24</dd>
|
||||
<dt>version</dt>
|
||||
<dd>1.1; 2017-03 fixed pedantic warnings; took out arg</dd>
|
||||
<dt>since</dt>
|
||||
<dd>0.6; 2008-03-24</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
@@ -200,12 +200,8 @@ After FilesSetFarourite, this enumerates them.
|
||||
<div><a name = "FilesName"><!-- --></a>
|
||||
<h3>FilesName</h3>
|
||||
<pre>char * <b>FilesName</b> (const struct Files *files)</pre>
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
</p>
|
||||
<dl>
|
||||
<dt>return:</dt>
|
||||
<dt>return</dt>
|
||||
<dd>The file name of the selected file.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
@@ -213,12 +209,8 @@ After FilesSetFarourite, this enumerates them.
|
||||
<div><a name = "FilesSize"><!-- --></a>
|
||||
<h3>FilesSize</h3>
|
||||
<pre>int <b>FilesSize</b> (const struct Files *files)</pre>
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
</p>
|
||||
<dl>
|
||||
<dt>return:</dt>
|
||||
<dt>return</dt>
|
||||
<dd>File size of the selected file.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
@@ -226,12 +218,8 @@ After FilesSetFarourite, this enumerates them.
|
||||
<div><a name = "FilesIsDir"><!-- --></a>
|
||||
<h3>FilesIsDir</h3>
|
||||
<pre>int <b>FilesIsDir</b> (const struct Files *files)</pre>
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
</p>
|
||||
<dl>
|
||||
<dt>return:</dt>
|
||||
<dt>return</dt>
|
||||
<dd>Whether the file is a directory.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
@@ -45,31 +45,90 @@
|
||||
|
||||
<a name = "_declarations"><!-- --></a><h2>Declarations</h2>
|
||||
|
||||
<div><a name = "struct Parser"><!-- --></a>
|
||||
<h3>struct Parser</h3>
|
||||
<pre><b>struct Parser</b></pre>
|
||||
<p>
|
||||
See <a href = "#Parser">Parser</a>.
|
||||
</p>
|
||||
<dl>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "struct Files"><!-- --></a>
|
||||
<h3>struct Files</h3>
|
||||
<pre><b>struct Files</b></pre>
|
||||
<p>
|
||||
Dependancy on <em>Files</em>
|
||||
</p>
|
||||
<dl>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "typedef int (*ParserWidget)(const struct Files *, FILE *fp)"><!-- --></a>
|
||||
<h3>typedef int (*ParserWidget)(const struct Files *, FILE *fp)</h3>
|
||||
<pre><b>typedef int (*ParserWidget)(const struct Files *, FILE *fp)</b></pre>
|
||||
<p>
|
||||
All <em>ParserWidget</em>s are in <em>Widget.c</em>
|
||||
</p>
|
||||
<dl>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
|
||||
<a name = "_summary"><!-- --></a><h2>Function Summary</h2>
|
||||
|
||||
<table>
|
||||
<tr><th>Return Type</th><th>Function Name</th><th>Argument List</th></tr>
|
||||
<tr>
|
||||
<td>const struct Symbol *</td>
|
||||
<td><a href = "#match">match</a></td>
|
||||
<td>const char *str, const char *end</td>
|
||||
<td>struct Parser *</td>
|
||||
<td><a href = "#Parser">Parser</a></td>
|
||||
<td>const char *str</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>void</td>
|
||||
<td><a href = "#Parser_">Parser_</a></td>
|
||||
<td>struct Parser **const p_ptr</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>void</td>
|
||||
<td><a href = "#ParserRewind">ParserRewind</a></td>
|
||||
<td>struct Parser *p</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#ParserParse">ParserParse</a></td>
|
||||
<td>struct Parser *p, const struct Files *f, int invisible, FILE *fp</td>
|
||||
<td>struct Parser *p, const struct Files *f, int invisible,
|
||||
FILE *fp</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<a name = "_detail"><!-- --></a><h2>Function Detail</h2>
|
||||
|
||||
<div><a name = "match"><!-- --></a>
|
||||
<h3>match</h3>
|
||||
<pre>const struct Symbol * <b>match</b> (const char *str, const char *end)</pre>
|
||||
<div><a name = "Parser"><!-- --></a>
|
||||
<h3>Parser</h3>
|
||||
<pre>struct Parser * <b>Parser</b> (const char *str)</pre>
|
||||
<dl>
|
||||
<dt>return</dt>
|
||||
<dd>Creates a parser for the string, <em>str</em>.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "Parser_"><!-- --></a>
|
||||
<h3>Parser_</h3>
|
||||
<pre>void <b>Parser_</b> (struct Parser **const p_ptr)</pre>
|
||||
<dl>
|
||||
<dt>parameter: p_ptr</dt>
|
||||
<dd>A pointer to the <em>Parser</em> that's to be destucted.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "ParserRewind"><!-- --></a>
|
||||
<h3>ParserRewind</h3>
|
||||
<pre>void <b>ParserRewind</b> (struct Parser *p)</pre>
|
||||
<p>
|
||||
binary search
|
||||
Resets the parser, <em>p</em>.
|
||||
</p>
|
||||
<dl>
|
||||
</dl>
|
||||
@@ -77,11 +136,22 @@ binary search
|
||||
|
||||
<div><a name = "ParserParse"><!-- --></a>
|
||||
<h3>ParserParse</h3>
|
||||
<pre>int <b>ParserParse</b> (struct Parser *p, const struct Files *f, int invisible, FILE *fp)</pre>
|
||||
<pre>int <b>ParserParse</b> (struct Parser *p, const struct Files *f, int invisible,
|
||||
FILE *fp)</pre>
|
||||
<p>
|
||||
parse, called recusively (invisible, hack) fixme: this fn needs rewriting, messy
|
||||
Parse, called recursively.
|
||||
</p>
|
||||
<dl>
|
||||
<dt>parameter: f</dt>
|
||||
<dd>Called in the handler to <em>ParserWidget</em>s.</dd>
|
||||
<dt>parameter: invisible</dt>
|
||||
<dd>No output.</dd>
|
||||
<dt>parameter: fp</dt>
|
||||
<dd>Output.</dd>
|
||||
<dt>fixme</dt>
|
||||
<dd>This fn needs rewriting; messy.</dd>
|
||||
<dt>fixme</dt>
|
||||
<dd>Invisible, hack.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
padding: 4px;
|
||||
}
|
||||
</style>
|
||||
<title></title>
|
||||
<title>Parser</title>
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
|
||||
<h1></h1>
|
||||
<h1>Parser</h1>
|
||||
|
||||
<ul>
|
||||
<li><a href = "#_declarations">Declarations</a></li>
|
||||
@@ -41,18 +41,85 @@
|
||||
|
||||
<p>
|
||||
Copyright 2008, 2012 Neil Edelman, distributed under the terms of the
|
||||
GNU General Public License, see copying.txt
|
||||
GNU General Public License, see copying.txt
|
||||
</p>
|
||||
<p>
|
||||
This is the main program. I didn't know what to call it.
|
||||
<em>MakeIndex</em> is a simple content management system that generates static
|
||||
content, (mostly index.html,) on all the directories rooted at the directory
|
||||
specified by the argument. It is based on a template file, ".index.html" and
|
||||
".newsfeed.rss". Also included are files to summarise the directory structure
|
||||
for a <em>xml</em> site map, compatible with Google, and any <em>.news</em> for an <em>rss</em>
|
||||
feed. It takes one argument, <directory>, which is the root of the recursion.
|
||||
</p>
|
||||
<p>
|
||||
There should be an <example> directory that has a bunch of files in it. Run
|
||||
<em>bin/MakeIndex example/</em>; it should make a webpage out of the directory
|
||||
structure and <em>.index.html</em>, open <em>example/index.html</em> after running to see.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
If the <em>.index.html</em> file exists in the <directory>, prints <index.html>
|
||||
recursively; overwrites any <em>index.html</em> on all the directories rooted at
|
||||
<directory>;
|
||||
</li>
|
||||
<li>
|
||||
if the <em>.sitemap.xml</em> file exists in <directory>, prints (and overwrites) an
|
||||
index called <em>sitemap.xml</em>;
|
||||
</li>
|
||||
<li>
|
||||
if the <em>.newsfeed.rss</em> file exists in <directory>, prints (and overwrites)
|
||||
to <em>newsfeed.rss</em> all the <em>.news</em> files (if there are any.)
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
Treats <em>.d</em> as a description of the file without the <em>.d</em>;
|
||||
if this is an empty text-file or a zero-byte file, it skips over this file.
|
||||
</li>
|
||||
<li>
|
||||
treats <em>index.d</em> as a description of the directory;
|
||||
</li>
|
||||
<li>
|
||||
treats <em>content.d</em> as an in-depth description of the directory,
|
||||
replacing <index.d> when in the directory;
|
||||
</li>
|
||||
<li>
|
||||
treats <em>.d.jpg</em> as a image that will go with the description;
|
||||
</li>
|
||||
<li>
|
||||
treats <em>.news</em> as a newsworthy item; the format of this file is ISO 8601
|
||||
date (YYYY-MM-DD,) next line title;
|
||||
</li>
|
||||
<li>
|
||||
treats <em>.link</em> as a link with the href in the file.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
<em>.index.html</em>, <em>.sitemap.xml</em>, <em>.newsfeed.rss</em>, see <em>Parser</em> for recognised
|
||||
symbols. Assumes '..' is the parent directory, '.' is the current directory,
|
||||
and '/' is the directory separator; works for UNIX, MacOS, Windows.
|
||||
If this is not the case, the constants are in <em>Files.c</em>.
|
||||
</p>
|
||||
<dl>
|
||||
<dt>author:</dt>
|
||||
<dt>minimum standard</dt>
|
||||
<dd>C89/90</dd>
|
||||
<dt>author</dt>
|
||||
<dd>Neil</dd>
|
||||
<dt>version:</dt>
|
||||
<dd>1.0; 2016-09-19 Added umask</dd>
|
||||
<dt>since:</dt>
|
||||
<dd>1.0; 2008-03-27</dd>
|
||||
<dt>version</dt>
|
||||
<dd>1.1; 2017-03 fixed pedantic warnings; took out arg</dd>
|
||||
<dt>since</dt>
|
||||
<dd>1.0; 2016-09-19 Added umask
|
||||
0.8; 2013-07 case-insensitive sort
|
||||
0.7; 2012 sth.dsth.d handled properly
|
||||
0.6; 2008-03-27</dd>
|
||||
<dt>fixme</dt>
|
||||
<dd>Don't have <directory> be an argument; just do it in the current.</dd>
|
||||
<dt>fixme</dt>
|
||||
<dd>Have a subset of LaTeX converted into html for the .d files?</dd>
|
||||
<dt>fixme</dt>
|
||||
<dd>Encoding is an issue; especially the newsfeed, 7bit.</dd>
|
||||
<dt>fixme</dt>
|
||||
<dd>It's not robust; eg @(files)<em>@(files){Don't do this.}</em>.</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
210
doc/Widget.html
210
doc/Widget.html
@@ -50,11 +50,221 @@
|
||||
|
||||
<table>
|
||||
<tr><th>Return Type</th><th>Function Name</th><th>Argument List</th></tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetContent">WidgetContent</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetDate">WidgetDate</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetFilealt">WidgetFilealt</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetFiledesc">WidgetFiledesc</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetFilehref">WidgetFilehref</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetFileicon">WidgetFileicon</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetFilename">WidgetFilename</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetFiles">WidgetFiles</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetFilesize">WidgetFilesize</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetNews">WidgetNews</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetNewsname">WidgetNewsname</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetNow">WidgetNow</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetPwd">WidgetPwd</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetRoot">WidgetRoot</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td><a href = "#WidgetTitle">WidgetTitle</a></td>
|
||||
<td>const struct Files *f, FILE *fp</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<a name = "_detail"><!-- --></a><h2>Function Detail</h2>
|
||||
|
||||
<div><a name = "WidgetContent"><!-- --></a>
|
||||
<h3>WidgetContent</h3>
|
||||
<pre>int <b>WidgetContent</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetDate"><!-- --></a>
|
||||
<h3>WidgetDate</h3>
|
||||
<pre>int <b>WidgetDate</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetFilealt"><!-- --></a>
|
||||
<h3>WidgetFilealt</h3>
|
||||
<pre>int <b>WidgetFilealt</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetFiledesc"><!-- --></a>
|
||||
<h3>WidgetFiledesc</h3>
|
||||
<pre>int <b>WidgetFiledesc</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetFilehref"><!-- --></a>
|
||||
<h3>WidgetFilehref</h3>
|
||||
<pre>int <b>WidgetFilehref</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetFileicon"><!-- --></a>
|
||||
<h3>WidgetFileicon</h3>
|
||||
<pre>int <b>WidgetFileicon</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetFilename"><!-- --></a>
|
||||
<h3>WidgetFilename</h3>
|
||||
<pre>int <b>WidgetFilename</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetFiles"><!-- --></a>
|
||||
<h3>WidgetFiles</h3>
|
||||
<pre>int <b>WidgetFiles</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetFilesize"><!-- --></a>
|
||||
<h3>WidgetFilesize</h3>
|
||||
<pre>int <b>WidgetFilesize</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetNews"><!-- --></a>
|
||||
<h3>WidgetNews</h3>
|
||||
<pre>int <b>WidgetNews</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetNewsname"><!-- --></a>
|
||||
<h3>WidgetNewsname</h3>
|
||||
<pre>int <b>WidgetNewsname</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetNow"><!-- --></a>
|
||||
<h3>WidgetNow</h3>
|
||||
<pre>int <b>WidgetNow</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetPwd"><!-- --></a>
|
||||
<h3>WidgetPwd</h3>
|
||||
<pre>int <b>WidgetPwd</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetRoot"><!-- --></a>
|
||||
<h3>WidgetRoot</h3>
|
||||
<pre>int <b>WidgetRoot</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div><a name = "WidgetTitle"><!-- --></a>
|
||||
<h3>WidgetTitle</h3>
|
||||
<pre>int <b>WidgetTitle</b> (const struct Files *f, FILE *fp)</pre>
|
||||
<dl>
|
||||
<dt>implements</dt>
|
||||
<dd>ParserWidget</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user