aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile42
-rw-r--r--download.htin62
-rw-r--r--examples.htin1
-rw-r--r--graphics/bwd.pngbin0 -> 180 bytes
-rw-r--r--graphics/ctx.pngbin0 -> 312 bytes
-rw-r--r--graphics/fwd.pngbin0 -> 180 bytes
-rw-r--r--graphics/idx.pngbin0 -> 164 bytes
-rw-r--r--graphics/left.pngbin0 -> 193 bytes
-rw-r--r--graphics/right.pngbin0 -> 191 bytes
-rw-r--r--graphics/top.pngbin0 -> 149 bytes
-rw-r--r--graphics/up.pngbin0 -> 193 bytes
-rw-r--r--gray.css267
-rw-r--r--inc/footer.html37
-rw-r--r--inc/header.html42
-rw-r--r--index.htin220
-rw-r--r--postproc.awk81
16 files changed, 752 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..bf7f992
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,42 @@
+# The entire webdoc source tree must be located under the doc subdirectory
+# of the Eclat tree.
+
+include ../Makefile.inc
+VPATH=..
+
+.SUFFIXES: .1 .5 .htin .html
+
+MAN2HTMLFLAGS=-r
+
+.1.html:
+ man2html $(MAN2HTMLFLAGS) $< | \
+ sed 's/<[\/A-Z][A-Z0-9]*/\L&/g;s|<b>\\dq</b>|<b>\\"</b>|g;s|<b>dq</b>|<b>"</b>|g' | \
+ awk -f postproc.awk
+ m4 -P -DACTIVE=documentation inc/header.html a.1 a.3 a.2 a.4 inc/footer.html > $@
+ rm a.[1-4]
+.5.html:
+ man2html $(MAN2HTMLFLAGS) $< | \
+ sed 's/<[\/A-Z][A-Z0-9]*/\L&/g' | \
+ awk -f postproc.awk
+ m4 -P -DACTIVE=documentation inc/header.html a.1 a.3 a.2 a.4 inc/footer.html > $@
+ rm a.[1-4]
+
+.htin.html:
+ m4 -P -DACTIVE=$* inc/header.html $< inc/footer.html > $@
+
+SOURCES=\
+ index.htin\
+ download.htin\
+ examples.htin
+
+HTMLFILES=$(MANPAGES1:.1=.html) $(MANPAGES5:.5=.html) $(SOURCES:.htin=.html)
+
+all: $(HTMLFILES)
+
+archive: all
+ tar zcf eclat-webdoc.tar.gz $(HTMLFILES) *.css graphics
+
+clean:; rm -f *.html a.[1-4] *~
+
+$(HTMLFILES): Makefile postproc.awk inc/header.html inc/footer.html
+
diff --git a/download.htin b/download.htin
new file mode 100644
index 0000000..254a337
--- /dev/null
+++ b/download.htin
@@ -0,0 +1,62 @@
+<h3>Latest release</h3>
+<p>
+The latest alpha release of <b>Eclat</b> is available from the following
+locations:
+</p>
+<table class="download">
+ <thead>
+ <tr>
+ <td>Archive</td>
+ <td>Size</td>
+ <td>MD5</td>
+ <td>Signature</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a href="ftp://download.gnu.org.ua/pub/alpha/eclat/eclat-0.1.tar.gz">eclat-0.1.tar.gz</a></td>
+ <td>541K</td>
+ <td>7a6a6bd4ab1739604e429e288b13b38e</td>
+ <td><a href="ftp://download.gnu.org.ua/pub/alpha/eclat/eclat-0.1.tar.gz.sig">eclat-0.1.tar.gz.sig</a></td>
+ </tr>
+ <tr>
+ <td><a href="ftp://download.gnu.org.ua/pub/alpha/eclat/eclat-0.1.tar.xz">eclat-0.1.tar.xz</a></td>
+ <td>293K</td>
+ <td>95edca338514d2ae267e6bec0d92164f</td>
+ <td><a href="ftp://download.gnu.org.ua/pub/alpha/eclat/eclat-0.1.tar.xz.sig">eclat-0.1.tar.xz.sig</a></td>
+ </tr>
+ </tbody>
+</table>
+<p>
+You can use the signature file to verify that
+the corresponding file (without the .sig suffix) is intact. First,
+be sure to download both the <i>.sig</i> file and the corresponding tarball.
+Then, run a command like this:
+</p>
+
+<pre>
+ gpg --verify eclat-0.1.tar.gz.sig
+</pre>
+
+<p>
+If that command fails because you don't have the required public key,
+then run this command to import it:
+</p>
+
+<pre>
+ gpg --keyserver keys.gnupg.net --recv-keys 55D0C732
+</pre>
+<p>
+and rerun the <code>gpg --verify</code> command.
+</p>
+
+<h3>Other alphas</h3>
+<p>
+ This and older versions of <b>Eclat</b> can be downloaded from
+<a href="ftp://download.gnu.org.ua/pub/alpha/eclat">its ftp home</a>.
+</p>
+<p>
+ You can keep track of the news and updates at the
+<a href="http://puszcza.gnu.org.ua/projects/eclat">project's
+development page</a>.
+</p>
diff --git a/examples.htin b/examples.htin
new file mode 100644
index 0000000..5f927ea
--- /dev/null
+++ b/examples.htin
@@ -0,0 +1 @@
+FIXME: EXAMPLES PAGE
diff --git a/graphics/bwd.png b/graphics/bwd.png
new file mode 100644
index 0000000..0142be8
--- /dev/null
+++ b/graphics/bwd.png
Binary files differ
diff --git a/graphics/ctx.png b/graphics/ctx.png
new file mode 100644
index 0000000..4a86f08
--- /dev/null
+++ b/graphics/ctx.png
Binary files differ
diff --git a/graphics/fwd.png b/graphics/fwd.png
new file mode 100644
index 0000000..2e63647
--- /dev/null
+++ b/graphics/fwd.png
Binary files differ
diff --git a/graphics/idx.png b/graphics/idx.png
new file mode 100644
index 0000000..fd9356b
--- /dev/null
+++ b/graphics/idx.png
Binary files differ
diff --git a/graphics/left.png b/graphics/left.png
new file mode 100644
index 0000000..1eeebee
--- /dev/null
+++ b/graphics/left.png
Binary files differ
diff --git a/graphics/right.png b/graphics/right.png
new file mode 100644
index 0000000..0d1c199
--- /dev/null
+++ b/graphics/right.png
Binary files differ
diff --git a/graphics/top.png b/graphics/top.png
new file mode 100644
index 0000000..6544b17
--- /dev/null
+++ b/graphics/top.png
Binary files differ
diff --git a/graphics/up.png b/graphics/up.png
new file mode 100644
index 0000000..65a1897
--- /dev/null
+++ b/graphics/up.png
Binary files differ
diff --git a/gray.css b/gray.css
new file mode 100644
index 0000000..12526a9
--- /dev/null
+++ b/gray.css
@@ -0,0 +1,267 @@
+/* Basic settings */
+html, body, table, form {
+ margin: 0em;
+ padding: 0em;
+ height: 100%;
+}
+
+body {
+ font-family: sans-serif;
+ font-size: 120%;
+ color: #333;
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 960px;
+ background-color: silver;
+ padding: 1em;
+}
+
+div {
+ background-color: white;
+}
+
+div#content {
+ border: 1px solid black;
+ min-height: 800px;
+ position: relative;
+}
+
+a {
+ color: blue;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+img {
+ border: none 0;
+ vertical-align: top;
+}
+
+table {
+ border-collapse: collapse;
+}
+
+.right {
+ text-align: right;
+}
+
+div#header {
+ padding: 1em;
+}
+
+/* Header table */
+table#header {
+ width: 100%;
+ margin-bottom: 1em;
+}
+
+table#header td.logo {
+ width: 140px;
+}
+
+table#header td.main {
+ padding-left: 10px;
+ white-space: nowrap;
+ margin: 0px;
+}
+
+table#header td.main h1 {
+ margin: 0px;
+ font-style: normal;
+ font-weight: normal;
+ font-stretch: normal;
+ font-variant: normal;
+}
+
+table#header td.main h1 a {
+ color: black;
+}
+
+table#header td.sub {
+ color: #777;
+ border-top: solid 1px #ccc;
+ padding-left: 10px;
+ vertical-align: top;
+}
+
+table#header td.sub h2 {
+ font-style: normal;
+ font-weight: normal;
+ font-stretch: normal;
+ font-variant: normal;
+ font-size: 100%;
+ margin: 0px;
+}
+
+/* Main menu (tabs) */
+ul.tabs {
+ list-style-type: none;
+ width: 100%;
+ border-bottom: solid 2px #ccc;
+ border-collapse: collapse;
+ display: table;
+ margin: 0;
+}
+
+ul.tabs li {
+ width: 20%;
+ margin-left: 5%;
+ display: block;
+ float: left;
+ vertical-align: bottom;
+ padding: 0;
+ color: #777;
+ font-size: 100%;
+}
+
+ul.tabs li a {
+ color: #777;
+ font-size: 100%;
+ text-decoration: none;
+ padding: 2px 0.75em;
+}
+
+ul.tabs li a.active {
+ color: #000;
+ background-color: #ccc;
+}
+
+ul.tabs li a:hover {
+ text-decoration: underline;
+}
+
+/* Ditto, table version */
+table.tabs {
+ border-bottom: solid 2px #ccc;
+ border-collapse: collapse;
+ margin-top: 2em;
+ margin-bottom: 0px;
+ width: 100%;
+}
+
+table.tabs td {
+ padding: 0px 1em;
+ vertical-align: bottom;
+}
+
+table.tabs td a {
+ padding: 2px 0.75em;
+ color: #777;
+ font-size: 110%;
+}
+
+table.tabs td a.active {
+ color: #000;
+ background-color: #ccc;
+}
+
+/* Main text */
+div#main {
+ margin-top: 2em;
+ margin-bottom: 2em;
+ margin-left: 5%;
+ margin-right: 5%;
+ padding-bottom: 10em;
+}
+
+/* Copyright section */
+#copyright {
+ border-top: solid 2px #ccc;
+ font-size: 80%;
+ position: absolute;
+ height: 12em;
+ width: 100%;
+ bottom: 0;
+}
+
+/* Download table */
+table.download {
+ border: 1px black solid;
+}
+
+table.download td {
+ border: 1px black solid;
+ padding: 0.3em;
+}
+
+table.download tbody.previous {
+ color: silver;
+}
+
+table.download tbody.previous a {
+ color: lightblue;
+}
+
+/* Example output */
+span.comment {
+ color: red;
+ font-style: italic;
+}
+
+span.var {
+ color: #b8860b;
+}
+
+span.lit {
+ color: #bc8f8f;
+}
+
+span.kw {
+ color: #0000ff;
+}
+
+table.examples td {
+ padding: 0.3em;
+}
+
+/* Generator output */
+div.generator {
+ display: none;
+}
+
+/* Release table */
+tbody.previous {
+ color: silver;
+}
+
+tbody.previous a {
+ color: lightblue;
+}
+
+div.inner {
+ padding: 1em;
+}
+
+table.comparison {
+ margin-left: auto;
+ margin-right: auto;
+ border: 1px solid black;
+}
+
+table.comparison td {
+ border: 1px solid black;
+ padding: 4px;
+}
+
+table.comparison thead td.action {
+ text-align: center;
+}
+
+table.comparison thead td {
+ text-align: center;
+}
+
+table.comparison td.instance-type {
+ text-align: center;
+}
+
+table.comparison td.action {
+ text-align: left;
+}
+
+table.comparison td {
+ text-align: right;
+}
diff --git a/inc/footer.html b/inc/footer.html
new file mode 100644
index 0000000..06f7063
--- /dev/null
+++ b/inc/footer.html
@@ -0,0 +1,37 @@
+</div>
+<div id="copyright">
+<div class="inner">
+m4_ifelse(`<p>
+ Return to <a href="http://www.gnu.org">GNU's home page</a>.
+</p>
+')
+<p>
+ Return to the <a href="http://puszcza.gnu.org.ua">Puszcza home page</a>.
+</p>
+
+<p>
+ Return to <a href="http://gray.gnu.org.ua">Sergey Poznyakoff home page</a>.
+</p>
+
+<p>
+Please send broken links and other corrections (or suggestions) to
+<a href="mailto:webmaster@gnu.org.ua"><em>webmaster at gnu dot org dot ua</em></a>.
+</p>
+
+<!--
+<p>
+Copyright &copy; 2011 Sergey Poznyakoff
+<br />
+Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.
+</p>
+-->
+<!--
+Updated: $Date: 2009/10/16 19:40:24 $ $Author: gray $
+-->
+</div>
+</div>
+</div>
+</body>
+</html>
+
diff --git a/inc/header.html b/inc/header.html
new file mode 100644
index 0000000..0f9a277
--- /dev/null
+++ b/inc/header.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+ <title>Eclat</title>
+ <link rev="made" href="mailto:gray@gnu.org.ua" />
+ <link rel="stylesheet" type="text/css" href="gray.css" />
+ <link rel="icon" type="image/png" href="/graphics/gnu-head-icon.png" />
+</head>
+<body>
+<div id="content">
+<div id="header">
+<table id="header">
+ <tr>
+ <td class="logo" rowspan="3">
+ <img src="/graphics/gnu-head-sm.jpg"
+ alt=" [image of the Head of a GNU] " width="129" height="122" />
+ </td>
+ <td class="main">
+ <h1><a href="/software/eclat">Eclat</a></h1>
+ </td>
+ </tr>
+ <tr>
+ <td class="sub">
+ <h2>EC2 Command Line Administrator Tool</h2>
+ </td>
+ <td class='sub right'>
+ <a href="http://gray.gnu.org.ua">Sergey Poznyakoff</a>
+ </td>
+ </tr>
+</table>
+<ul class='tabs'>
+ <li><a m4_ifelse(ACTIVE,`index',`class="active" ')href="index.html">Main</a></li>
+m4_dnl <li><a m4_ifelse(ACTIVE,`examples',`class="active" ')href="examples.html">Examples</a></li>
+ <li><a m4_ifelse(ACTIVE,`download',`class="active" ')href="download.html">Downloads</a></li>
+ <li><a m4_ifelse(ACTIVE,`documentation',`class="active" ')href="manual.html">Documentation</a></li>
+</ul>
+</div>
+<div id="main">
+
diff --git a/index.htin b/index.htin
new file mode 100644
index 0000000..3355139
--- /dev/null
+++ b/index.htin
@@ -0,0 +1,220 @@
+<h3>What's Eclat</h3>
+<p>
+<b>Eclat</b> stands for EC2 Command Line Administrator Tool. It allows you to
+manage Amazon EC2 services from the command line, fast and easy. It does
+not require any resource-consuming libraries. It is written in plain C,
+depends only on libraries which are always installed on any decent system,
+and has a tiny memory footprint.
+</p>
+
+<h3>Why use it?</h3>
+<p>Amazon provides similar command line utilities in its
+<code>ec2-api-tools</code> package. So why use Eclat instead? The answer is
+simple: Eclat performs about 100 times faster, uses 10 times less CPU
+and requires 32 times less memory than <code>ec2-api-tools</code>.</p>
+<p>
+The table below summarizes the results of running various <code>describe</code>
+commands on two distinct classes of Amazon instances.
+</p>
+
+<table class="comparison">
+<thead>
+<tr>
+ <td rowspan="2" class="action">Action</td>
+ <td colspan="3">Real time</td>
+ <td colspan="3">CPU usage (%)</td>
+ <td colspan="3">Memory usage</td>
+</tr>
+<tr>
+ <td>EC2</td>
+ <td>Eclat</td>
+ <td>%</td>
+ <td>EC2</td>
+ <td>Eclat</td>
+ <td>%</td>
+ <td>EC2</td>
+ <td>Eclat</td>
+ <td>%</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td colspan="10" class="instance-type">t1.micro</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+ <td class="action">describe-addresses</td>
+ <td>0:07.73</td>
+ <td>0:00.25</td>
+ <td> 3.2</td>
+ <td> 93</td>
+ <td> 4</td>
+ <td> 4.3</td>
+ <td>541.3</td>
+ <td>19.4</td>
+ <td> 3.6</td>
+</tr>
+<tr>
+ <td class="action">describe-instance-status</td>
+ <td>0:31.78</td>
+ <td>0:00.39</td>
+ <td> 1.2</td>
+ <td> 98</td>
+ <td> 28</td>
+ <td>28.6</td>
+ <td>538.3</td>
+ <td>19.7</td>
+ <td> 3.7</td>
+</tr>
+<tr>
+ <td class="action">describe-instances</td>
+ <td>1:00.99</td>
+ <td>0:00.25</td>
+ <td> 0.4</td>
+ <td> 98</td>
+ <td> 9</td>
+ <td> 9.2</td>
+ <td>420.8</td>
+ <td>21.3</td>
+ <td> 5.1</td>
+</tr>
+<tr>
+ <td class="action">describe-tags</td>
+ <td>0:12.26</td>
+ <td>0:00.45</td>
+ <td> 3.7</td>
+ <td> 98</td>
+ <td> 51</td>
+ <td>52.0</td>
+ <td>541.6</td>
+ <td>20.2</td>
+ <td> 3.7</td>
+</tr>
+<tr>
+ <td class="action">describe-volumes</td>
+ <td>1:01.46</td>
+ <td>0:00.39</td>
+ <td> 0.6</td>
+ <td> 90</td>
+ <td> 5</td>
+ <td> 5.6</td>
+ <td>378.6</td>
+ <td>20.2</td>
+ <td> 5.3</td>
+</tr>
+<tr>
+ <td class="action">Average</td>
+ <td>0:34.84</td>
+ <td>0:00.35</td>
+ <td> 1.0</td>
+ <td> 95</td>
+ <td> 19</td>
+ <td>20.3</td>
+ <td>484.1</td>
+ <td>20.2</td>
+ <td> 4.2</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+ <td colspan="10" class="instance-type">m1.large</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+ <td class="action">describe-addresses</td>
+ <td>0:06.87</td>
+ <td>0:00.11</td>
+ <td> 1.6</td>
+ <td>140</td>
+ <td> 14</td>
+ <td>10.0</td>
+ <td>589.9</td>
+ <td>19.2</td>
+ <td> 3.3</td>
+</tr>
+<tr>
+ <td class="action">describe-instance-status</td>
+ <td>0:06.75</td>
+ <td>0:00.12</td>
+ <td> 1.8</td>
+ <td>143</td>
+ <td> 12</td>
+ <td> 8.4</td>
+ <td>611.8</td>
+ <td>19.5</td>
+ <td> 3.2</td>
+</tr>
+<tr>
+ <td class="action">describe-instances</td>
+ <td>0:07.47</td>
+ <td>0:00.11</td>
+ <td> 1.5</td>
+ <td>143</td>
+ <td> 21</td>
+ <td>14.7</td>
+ <td>643.8</td>
+ <td>21.1</td>
+ <td> 3.3</td>
+</tr>
+<tr>
+ <td class="action">describe-tags</td>
+ <td>0:07.82</td>
+ <td>0:00.10</td>
+ <td> 1.3</td>
+ <td>139</td>
+ <td> 19</td>
+ <td>13.7</td>
+ <td>654.7</td>
+ <td>20.1</td>
+ <td> 3.1</td>
+</tr>
+<tr>
+ <td class="action">describe-volumes</td>
+ <td>0:08.26</td>
+ <td>0:00.10</td>
+ <td> 1.2</td>
+ <td>129</td>
+ <td> 18</td>
+ <td>14.0</td>
+ <td>654.0</td>
+ <td>20.1</td>
+ <td> 3.1</td>
+</tr>
+<tr>
+ <td class="action">Average</td>
+ <td>0:07.43</td>
+ <td>0:00.11</td>
+ <td> 1.5</td>
+ <td>138</td>
+ <td> 16</td>
+ <td>12.1</td>
+ <td>630.8</td>
+ <td>20.0</td>
+ <td> 3.2</td>
+</tr>
+</tbody>
+</table>
+<p>The columns <code>EC2</code> and <code>Eclat</code> contain measurements shown by
+<code>ec2-api-tools</code> and Eclat correspondingly. Each <code>%</code> column
+shows the resource usage by Eclat relative to that of <code>ec2-api-tools</code>.</p>
+<h3>Requirements and Build Prerequisites</h3>
+<p>
+There are no special requirements for the system where Eclat is to be run.
+As the above table shows, it feels itself quite comfortably even in
+conditions of extreme scarcity of resources, such as on <code>t1.micro</code>
+instances.
+</p>
+<p>There are only two prerequisites for building the package:
+<a href="http://curl.haxx.se">Curl</a> and
+<a href="http://www.libexpat.org">Expat</a> libraries.</p>
+<h3>ID Mapping</h3>
+One of the unique features of Eclat is <i>ID mapping</i>, which
+allows you to identify EC2 resources by arbitrary symbolic names,
+instead of Amazon resource identifiers. Tables that map symbolic
+names to identifiers can be stored in several formats, such as
+plain text files, <a href="http://www.gnu.org/software/gdbm/">GDBM</a>
+or <a href="http://www.openldap.org">LDAP</a> databases.
+
+
diff --git a/postproc.awk b/postproc.awk
new file mode 100644
index 0000000..c0c347a
--- /dev/null
+++ b/postproc.awk
@@ -0,0 +1,81 @@
+BEGIN {
+ if (!filename)
+ filename = "a";
+}
+function out(text) {
+ print text >> (filename "." state)
+}
+function downh(num) {
+ num=substr($0, 3, 1)
+ sub(/<h[0-9]>/,("<h" (num+1) ">"))
+ sub(/<\/h[0-9]>/,("</h" (num+1) ">"))
+}
+state == 0 && /<body>/ { state = 1; next }
+state == 0 { next }
+
+state == 1 && /<h1>/ {
+ gsub(/\\-/,"-")
+ downh()
+ out($0);
+ next
+}
+state == 1 && /<hr>/ {
+ out("<hr>");
+ state = 2;
+ next
+}
+state == 1 { next }
+
+state == 2 && /<h2>Index<\/h2>/ {
+ state = 3;
+ out($0);
+ next
+}
+# man2html is unable to handle commands like:
+# .IP \n[step].
+# Instead of evaluating \n[step], it strips "\n[" and leaves the rest
+# untouched. The klugde below is based on the assumption that we always
+# use step as the name of the variable.
+state == 2 && /<dl/ { counter=1 }
+state == 2 && /<dt>step\]\./ {
+ sub(/<dt>step\]\./,("<dt>" counter "."))
+ ++counter
+}
+
+state == 2 && /<h2>COMMANDS<\/h2>/ { command_links=1; out($0); next }
+state == 2 && /<h2>/ { command_links=0 }
+state == 2 && command_links == 1 && /^<b>.*<\/b>[,.]$/ {
+ punct=substr($0,length($0))
+ sub(/<b>/,"")
+ sub(/<\/b>[,.]/,"")
+ out("<b><a href=\"eclat-" $0 ".html\">" $0 "</a></b>" punct)
+ if (punct == ".")
+ command_links=0
+ next
+}
+
+state == 3 && /<hr>/ {
+ out($0);
+ state = 4;
+ next
+}
+
+state == 4 {
+ out("<p>This document was created by <a href=\"http://primates.ximian.com/~flucifredi/man/\">man2html</a> and postprocessed by postproc.awk.</p>")
+ out("<p>" strftime("%c", systime()) "</p>")
+ exit
+}
+
+/<h[0-9]>/ { downh() }
+
+{
+ s=gensub(/HREF="\.\.\/man[1-8n]\/(eclat[a-z.-]*)\.[1-8n]\.html/,
+ "href=\"\\1.html", "g")
+ s=gensub(/HREF="\.\.\/man[1-8n]\/(forlan[a-z.-]*)\.[1-8n]\.html/,
+ "href=\"\\1.html", "g",s)
+ s=gensub(/HREF="\.\.\/man([1-8n])\/(.+)\.[1-8n]\.html/,
+ "href=\"http://www.manpagez.com/man/\\1/\\2/","g",s)
+ out(s)
+}
+
+ \ No newline at end of file

Return to:

Send suggestions and report system problems to the System administrator.