3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-23 12:29:27 +01:00
pbot/doc/PBot.html

1260 lines
95 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="keywords" content="PBot,Category IRC">
<link rel="shortcut icon" href="http://www.iso-9899.info/favicon.ico">
<link rel="search" type="application/opensearchdescription+xml" href="http://www.iso-9899.info/wiki/opensearch_desc.php" title="C (English)">
<title>PBot - C</title>
<style type="text/css" media="screen, projection">/*<![CDATA[*/
@import "/wiki/skins/common/shared.css?97";
@import "/wiki/skins/monobook/main.css?97";
/*]]>*/</style>
<link rel="stylesheet" type="text/css" media="print" href="PBot_files/commonPrint.css">
<!--[if lt IE 5.5000]><style type="text/css">@import "/wiki/skins/monobook/IE50Fixes.css?97";</style><![endif]-->
<!--[if IE 5.5000]><style type="text/css">@import "/wiki/skins/monobook/IE55Fixes.css?97";</style><![endif]-->
<!--[if IE 6]><style type="text/css">@import "/wiki/skins/monobook/IE60Fixes.css?97";</style><![endif]-->
<!--[if IE 7]><style type="text/css">@import "/wiki/skins/monobook/IE70Fixes.css?97";</style><![endif]-->
<!--[if lt IE 7]><script type="text/javascript" src="/wiki/skins/common/IEFixes.js?97"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<script type="text/javascript">/*<![CDATA[*/
var skin = "monobook";
var stylepath = "/wiki/skins";
var wgArticlePath = "/wiki/$1";
var wgScriptPath = "/wiki";
var wgScript = "/wiki";
var wgServer = "http://www.iso-9899.info";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "PBot";
var wgTitle = "PBot";
var wgAction = "view";
var wgRestrictionEdit = ["sysop"];
var wgRestrictionMove = ["sysop"];
var wgArticleId = "935";
var wgIsArticle = true;
var wgUserName = "Pragma";
var wgUserGroups = ["sysop", "*", "user", "autoconfirmed"];
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "8668";
var wgAjaxWatch = {"watchMsg": "Watch", "unwatchMsg": "Unwatch", "watchingMsg": "Watching...", "unwatchingMsg": "Unwatching..."};
/*]]>*/</script>
<script type="text/javascript" src="PBot_files/wikibits.js"><!-- wikibits js --></script>
<script type="text/javascript" src="PBot_files/wiki"><!-- site js --></script>
<style type="text/css">/*<![CDATA[*/
@import "/wiki?title=MediaWiki:Common.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000";
@import "/wiki?title=MediaWiki:Monobook.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000";
@import "/wiki?title=-&action=raw&gen=css&maxage=18000&smaxage=0";
/*]]>*/</style>
<!-- Head Scripts -->
<script type="text/javascript" src="PBot_files/ajax.js"></script>
<script type="text/javascript" src="PBot_files/ajaxwatch.js"></script>
</head><body class="mediawiki ns-0 ltr page-PBot">
<div id="globalWrapper">
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<h1 class="firstHeading">PBot</h1>
<div id="bodyContent">
<h3 id="siteSub">From C</h3>
<div id="contentSub"></div>
<!-- start content -->
<table id="toc" class="toc" summary="Contents"><tbody><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="#PBot"><span class="tocnumber">1</span> <span class="toctext">PBot</span></a>
<ul>
<li class="toclevel-2"><a href="#About_PBot"><span class="tocnumber">1.1</span> <span class="toctext">About PBot</span></a></li>
<li class="toclevel-2"><a href="#Source"><span class="tocnumber">1.2</span> <span class="toctext">Source</span></a></li>
<li class="toclevel-2"><a href="#Directing_output_to_a_user"><span class="tocnumber">1.3</span> <span class="toctext">Directing output to a user</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="#Factoids"><span class="tocnumber">2</span> <span class="toctext">Factoids</span></a>
<ul>
<li class="toclevel-2"><a href="#List_of_factoids"><span class="tocnumber">2.1</span> <span class="toctext">List of factoids</span></a></li>
<li class="toclevel-2"><a href="#Adding_a_factoid"><span class="tocnumber">2.2</span> <span class="toctext">Adding a factoid</span></a>
<ul>
<li class="toclevel-3"><a href="#factadd"><span class="tocnumber">2.2.1</span> <span class="toctext">factadd</span></a></li>
<li class="toclevel-3"><a href="#global_channel"><span class="tocnumber">2.2.2</span> <span class="toctext">global channel</span></a></li>
<li class="toclevel-3"><a href="#Special_commands"><span class="tocnumber">2.2.3</span> <span class="toctext">Special commands</span></a>
<ul>
<li class="toclevel-4"><a href="#.2Fsay"><span class="tocnumber">2.2.3.1</span> <span class="toctext">/say</span></a></li>
<li class="toclevel-4"><a href="#.2Fme"><span class="tocnumber">2.2.3.2</span> <span class="toctext">/me</span></a></li>
<li class="toclevel-4"><a href="#.2Fcall"><span class="tocnumber">2.2.3.3</span> <span class="toctext">/call</span></a></li>
<li class="toclevel-4"><a href="#.2Fmsg"><span class="tocnumber">2.2.3.4</span> <span class="toctext">/msg</span></a></li>
</ul>
</li>
<li class="toclevel-3"><a href="#Special_variables"><span class="tocnumber">2.2.4</span> <span class="toctext">Special variables</span></a>
<ul>
<li class="toclevel-4"><a href="#.24nick"><span class="tocnumber">2.2.4.1</span> <span class="toctext">$nick</span></a></li>
<li class="toclevel-4"><a href="#.24args"><span class="tocnumber">2.2.4.2</span> <span class="toctext">$args</span></a></li>
</ul>
</li>
<li class="toclevel-3"><a href="#adlib_list_variables"><span class="tocnumber">2.2.5</span> <span class="toctext">adlib list variables</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Deleting_a_factoid"><span class="tocnumber">2.3</span> <span class="toctext">Deleting a factoid</span></a>
<ul>
<li class="toclevel-3"><a href="#factrem"><span class="tocnumber">2.3.1</span> <span class="toctext">factrem</span></a></li>
<li class="toclevel-3"><a href="#forget"><span class="tocnumber">2.3.2</span> <span class="toctext">forget</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Viewing.2Ftriggering_a_factoid"><span class="tocnumber">2.4</span> <span class="toctext">Viewing/triggering a factoid</span></a></li>
<li class="toclevel-2"><a href="#Viewing.2Ftriggering_anotits_channel.27s_factoid"><span class="tocnumber">2.5</span> <span class="toctext">Viewing/triggering anotits channel's factoid</span></a>
<ul>
<li class="toclevel-3"><a href="#fact"><span class="tocnumber">2.5.1</span> <span class="toctext">fact</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Aliasing_a_factoid"><span class="tocnumber">2.6</span> <span class="toctext">Aliasing a factoid</span></a>
<ul>
<li class="toclevel-3"><a href="#factalias"><span class="tocnumber">2.6.1</span> <span class="toctext">factalias</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Changing_a_factoid"><span class="tocnumber">2.7</span> <span class="toctext">Changing a factoid</span></a>
<ul>
<li class="toclevel-3"><a href="#factchange"><span class="tocnumber">2.7.1</span> <span class="toctext">factchange</span></a></li>
<li class="toclevel-3"><a href="#factset"><span class="tocnumber">2.7.2</span> <span class="toctext">factset</span></a></li>
<li class="toclevel-3"><a href="#factunset"><span class="tocnumber">2.7.3</span> <span class="toctext">factunset</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Finding_a_factoid"><span class="tocnumber">2.8</span> <span class="toctext">Finding a factoid</span></a>
<ul>
<li class="toclevel-3"><a href="#factfind"><span class="tocnumber">2.8.1</span> <span class="toctext">factfind</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Information_about_a_factoid"><span class="tocnumber">2.9</span> <span class="toctext">Information about a factoid</span></a>
<ul>
<li class="toclevel-3"><a href="#factinfo"><span class="tocnumber">2.9.1</span> <span class="toctext">factinfo</span></a></li>
<li class="toclevel-3"><a href="#factshow"><span class="tocnumber">2.9.2</span> <span class="toctext">factshow</span></a></li>
<li class="toclevel-3"><a href="#factset_2"><span class="tocnumber">2.9.3</span> <span class="toctext">factset</span></a></li>
<li class="toclevel-3"><a href="#count"><span class="tocnumber">2.9.4</span> <span class="toctext">count</span></a></li>
<li class="toclevel-3"><a href="#histogram"><span class="tocnumber">2.9.5</span> <span class="toctext">histogram</span></a></li>
<li class="toclevel-3"><a href="#top10"><span class="tocnumber">2.9.6</span> <span class="toctext">top10</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1"><a href="#Commands"><span class="tocnumber">3</span> <span class="toctext">Commands</span></a>
<ul>
<li class="toclevel-2"><a href="#Quotegrabs"><span class="tocnumber">3.1</span> <span class="toctext">Quotegrabs</span></a>
<ul>
<li class="toclevel-3"><a href="#Table_of_quotegrabs"><span class="tocnumber">3.1.1</span> <span class="toctext">Table of quotegrabs</span></a></li>
<li class="toclevel-3"><a href="#grab"><span class="tocnumber">3.1.2</span> <span class="toctext">grab</span></a></li>
<li class="toclevel-3"><a href="#getq"><span class="tocnumber">3.1.3</span> <span class="toctext">getq</span></a></li>
<li class="toclevel-3"><a href="#rq"><span class="tocnumber">3.1.4</span> <span class="toctext">rq</span></a></li>
<li class="toclevel-3"><a href="#delq"><span class="tocnumber">3.1.5</span> <span class="toctext">delq</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Modules"><span class="tocnumber">3.2</span> <span class="toctext">Modules</span></a>
<ul>
<li class="toclevel-3"><a href="#cc"><span class="tocnumber">3.2.1</span> <span class="toctext">cc</span></a>
<ul>
<li class="toclevel-4"><a href="#Usage"><span class="tocnumber">3.2.1.1</span> <span class="toctext">Usage</span></a></li>
<li class="toclevel-4"><a href="#Supported_Languages"><span class="tocnumber">3.2.1.2</span> <span class="toctext">Supported Languages</span></a></li>
<li class="toclevel-4"><a href="#Default_Language"><span class="tocnumber">3.2.1.3</span> <span class="toctext">Default Language</span></a></li>
<li class="toclevel-4"><a href="#C_and_C.2B.2B_Functionality"><span class="tocnumber">3.2.1.4</span> <span class="toctext">C and C++ Functionality</span></a>
<ul>
<li class="toclevel-5"><a href="#main.28.29_Function_Unnecessary"><span class="tocnumber">3.2.1.4.1</span> <span class="toctext">main() Function Unnecessary</span></a></li>
</ul>
</li>
<li class="toclevel-4"><a href="#Embedding_Newlines"><span class="tocnumber">3.2.1.5</span> <span class="toctext">Embedding Newlines</span></a></li>
<li class="toclevel-4"><a href="#Interactive_Editing"><span class="tocnumber">3.2.1.6</span> <span class="toctext">Interactive Editing</span></a>
<ul>
<li class="toclevel-5"><a href="#show"><span class="tocnumber">3.2.1.6.1</span> <span class="toctext">show</span></a></li>
<li class="toclevel-5"><a href="#paste"><span class="tocnumber">3.2.1.6.2</span> <span class="toctext">paste</span></a></li>
<li class="toclevel-5"><a href="#run"><span class="tocnumber">3.2.1.6.3</span> <span class="toctext">run</span></a></li>
<li class="toclevel-5"><a href="#undo"><span class="tocnumber">3.2.1.6.4</span> <span class="toctext">undo</span></a></li>
<li class="toclevel-5"><a href="#s.2F.2F"><span class="tocnumber">3.2.1.6.5</span> <span class="toctext">s//</span></a></li>
<li class="toclevel-5"><a href="#replace"><span class="tocnumber">3.2.1.6.6</span> <span class="toctext">replace</span></a></li>
<li class="toclevel-5"><a href="#append"><span class="tocnumber">3.2.1.6.7</span> <span class="toctext">append</span></a></li>
<li class="toclevel-5"><a href="#prepend"><span class="tocnumber">3.2.1.6.8</span> <span class="toctext">prepend</span></a></li>
<li class="toclevel-5"><a href="#remove"><span class="tocnumber">3.2.1.6.9</span> <span class="toctext">remove</span></a></li>
</ul>
</li>
<li class="toclevel-4"><a href="#Some_Examples"><span class="tocnumber">3.2.1.7</span> <span class="toctext">Some Examples</span></a></li>
</ul>
</li>
<li class="toclevel-3"><a href="#cc2"><span class="tocnumber">3.2.2</span> <span class="toctext">cc2</span></a>
<ul>
<li class="toclevel-4"><a href="#Usage_2"><span class="tocnumber">3.2.2.1</span> <span class="toctext">Usage</span></a></li>
<li class="toclevel-4"><a href="#Supported_Languages_2"><span class="tocnumber">3.2.2.2</span> <span class="toctext">Supported Languages</span></a></li>
<li class="toclevel-4"><a href="#Default_Language_2"><span class="tocnumber">3.2.2.3</span> <span class="toctext">Default Language</span></a></li>
</ul>
</li>
<li class="toclevel-3"><a href="#cc3"><span class="tocnumber">3.2.3</span> <span class="toctext">cc3</span></a></li>
<li class="toclevel-3"><a href="#faq"><span class="tocnumber">3.2.4</span> <span class="toctext">faq</span></a></li>
<li class="toclevel-3"><a href="#cstd"><span class="tocnumber">3.2.5</span> <span class="toctext">cstd</span></a></li>
<li class="toclevel-3"><a href="#man"><span class="tocnumber">3.2.6</span> <span class="toctext">man</span></a></li>
<li class="toclevel-3"><a href="#google"><span class="tocnumber">3.2.7</span> <span class="toctext">google</span></a></li>
<li class="toclevel-3"><a href="#define.2Fdict"><span class="tocnumber">3.2.8</span> <span class="toctext">define/dict</span></a></li>
<li class="toclevel-3"><a href="#gdict"><span class="tocnumber">3.2.9</span> <span class="toctext">gdict</span></a></li>
<li class="toclevel-3"><a href="#udict"><span class="tocnumber">3.2.10</span> <span class="toctext">udict</span></a></li>
<li class="toclevel-3"><a href="#wdict"><span class="tocnumber">3.2.11</span> <span class="toctext">wdict</span></a></li>
<li class="toclevel-3"><a href="#acronym"><span class="tocnumber">3.2.12</span> <span class="toctext">acronym</span></a></li>
<li class="toclevel-3"><a href="#weatits"><span class="tocnumber">3.2.13</span> <span class="toctext">weatits</span></a></li>
<li class="toclevel-3"><a href="#map"><span class="tocnumber">3.2.14</span> <span class="toctext">map</span></a></li>
<li class="toclevel-3"><a href="#gspy"><span class="tocnumber">3.2.15</span> <span class="toctext">gspy</span></a></li>
<li class="toclevel-3"><a href="#math"><span class="tocnumber">3.2.16</span> <span class="toctext">math</span></a></li>
<li class="toclevel-3"><a href="#compliment"><span class="tocnumber">3.2.17</span> <span class="toctext">compliment</span></a></li>
<li class="toclevel-3"><a href="#insult"><span class="tocnumber">3.2.18</span> <span class="toctext">insult</span></a></li>
<li class="toclevel-3"><a href="#excuse"><span class="tocnumber">3.2.19</span> <span class="toctext">excuse</span></a></li>
<li class="toclevel-3"><a href="#horoscope"><span class="tocnumber">3.2.20</span> <span class="toctext">horoscope</span></a></li>
<li class="toclevel-3"><a href="#quote"><span class="tocnumber">3.2.21</span> <span class="toctext">quote</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Informative"><span class="tocnumber">3.3</span> <span class="toctext">Informative</span></a>
<ul>
<li class="toclevel-3"><a href="#list"><span class="tocnumber">3.3.1</span> <span class="toctext">list</span></a></li>
<li class="toclevel-3"><a href="#info"><span class="tocnumber">3.3.2</span> <span class="toctext">info</span></a></li>
<li class="toclevel-3"><a href="#version"><span class="tocnumber">3.3.3</span> <span class="toctext">version</span></a></li>
<li class="toclevel-3"><a href="#source"><span class="tocnumber">3.3.4</span> <span class="toctext">source</span></a></li>
<li class="toclevel-3"><a href="#help"><span class="tocnumber">3.3.5</span> <span class="toctext">help</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Administrative"><span class="tocnumber">3.4</span> <span class="toctext">Administrative</span></a>
<ul>
<li class="toclevel-3"><a href="#login"><span class="tocnumber">3.4.1</span> <span class="toctext">login</span></a></li>
<li class="toclevel-3"><a href="#logout"><span class="tocnumber">3.4.2</span> <span class="toctext">logout</span></a></li>
<li class="toclevel-3"><a href="#ignore"><span class="tocnumber">3.4.3</span> <span class="toctext">ignore</span></a></li>
<li class="toclevel-3"><a href="#unignore"><span class="tocnumber">3.4.4</span> <span class="toctext">unignore</span></a></li>
<li class="toclevel-3"><a href="#ban"><span class="tocnumber">3.4.5</span> <span class="toctext">ban</span></a></li>
<li class="toclevel-3"><a href="#unban"><span class="tocnumber">3.4.6</span> <span class="toctext">unban</span></a></li>
<li class="toclevel-3"><a href="#kick"><span class="tocnumber">3.4.7</span> <span class="toctext">kick</span></a></li>
<li class="toclevel-3"><a href="#export"><span class="tocnumber">3.4.8</span> <span class="toctext">export</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1"><a href="#Flood_control"><span class="tocnumber">4</span> <span class="toctext">Flood control</span></a>
<ul>
<li class="toclevel-2"><a href="#Message_flood"><span class="tocnumber">4.1</span> <span class="toctext">Message flood</span></a></li>
<li class="toclevel-2"><a href="#Join_flood"><span class="tocnumber">4.2</span> <span class="toctext">Join flood</span></a></li>
<li class="toclevel-2"><a href="#Notification_message"><span class="tocnumber">4.3</span> <span class="toctext">Notification message</span></a>
<ul>
<li class="toclevel-3"><a href="#Chat_flooding"><span class="tocnumber">4.3.1</span> <span class="toctext">Chat flooding</span></a></li>
<li class="toclevel-3"><a href="#Join_flooding"><span class="tocnumber">4.3.2</span> <span class="toctext">Join flooding</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Opping.2FDeopping"><span class="tocnumber">4.4</span> <span class="toctext">Opping/Deopping</span></a></li>
</ul>
</li>
</ul>
</td></tr></tbody></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="PBot"></a><h2><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=1" title="Edit section: PBot">edit</a>]</span> <span class="mw-headline">PBot</span></h2>
<a name="About_PBot"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=2" title="Edit section: About PBot">edit</a>]</span> <span class="mw-headline">About PBot</span></h3>
<p>PBot is an IRC bot written in Perl in _pragma's spare time.
</p><p>All of <b>PBot'</b>s commands may begin with its name or&nbsp;!, or be followed by its name.
</p><p>Note that commands need not be submitted to the channel; you can /msg its instead. If you /msg <b>PBot</b>, she will respond with a private message in return. Also, you do not need to specify its name or one of the trigger symbols.
</p>
<a name="Source"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=3" title="Edit section: Source">edit</a>]</span> <span class="mw-headline">Source</span></h3>
<p>PBot's source may be found at <a href="http://code.google.com/p/pbot2-pl/" class="external free" title="http://code.google.com/p/pbot2-pl/" rel="nofollow">http://code.google.com/p/pbot2-pl/</a>. It can be browsed at <a href="http://code.google.com/p/pbot2-pl/source/browse/#svn/trunk/PBot" class="external free" title="http://code.google.com/p/pbot2-pl/source/browse/#svn/trunk/PBot" rel="nofollow">http://code.google.com/p/pbot2-pl/source/browse/#svn/trunk/PBot</a>.<br>
The URL for the source of any loaded modules may be found by using the 'info' command:
</p>
<pre> &lt;pragma_&gt; info faq
&lt;PBot&gt; faq: Module loaded by pragma_ on Fri Dec 31 02:34:04 2004 -&gt;
<a href="http://code.google.com/p/pbot2-pl/source/browse/trunk/modules/cfaq.pl" class="external free" title="http://code.google.com/p/pbot2-pl/source/browse/trunk/modules/cfaq.pl" rel="nofollow">http://code.google.com/p/pbot2-pl/source/browse/trunk/modules/cfaq.pl</a>, used 512 times (last by ecrane)
</pre>
<a name="Directing_output_to_a_user"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=4" title="Edit section: Directing output to a user">edit</a>]</span> <span class="mw-headline">Directing output to a user</span></h3>
<p>You may have <b>PBot</b> send the output of a command to a specific person via a /msg (opposed to in the channel), by using the
'tell &lt;nick&gt; about &lt;command&gt;' syntax:
</p>
<pre> &lt;pragma_&gt;&nbsp;!tell prec about man fork
&lt;pragma_&gt; PBot, tell Major-Willard about faq fflush
</pre>
<p>You may also direct PBot to prepend the nickname of a specific
person to a factoid in the channel by stating the nickname after the
factoid:
</p>
<pre> &lt;pragma_&gt;&nbsp;!help defrost
&lt;PBot&gt; defrost: To learn all about me, see <a href="http://www.iso-9899.info/wiki/PBot" class="external free" title="http://www.iso-9899.info/wiki/PBot" rel="nofollow">http://www.iso-9899.info/wiki/PBot</a>
</pre>
<a name="Factoids"></a><h2><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=5" title="Edit section: Factoids">edit</a>]</span> <span class="mw-headline">Factoids</span></h2>
<a name="List_of_factoids"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=6" title="Edit section: List of factoids">edit</a>]</span> <span class="mw-headline">List of factoids</span></h3>
<p>The most recent exported list of factoids can be found itse:
<a href="http://blackshell.com/%7Emsmud/PBot/factoids.html" class="external free" title="http://blackshell.com/~msmud/PBot/factoids.html" rel="nofollow">http://blackshell.com/~msmud/PBot/factoids.html</a>.
</p>
<a name="Adding_a_factoid"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=7" title="Edit section: Adding a factoid">edit</a>]</span> <span class="mw-headline">Adding a factoid</span></h3>
<p>Titse are two ways to add a factoid. The first is:
</p>
<pre> &nbsp;!&lt;factoid&gt; is &lt;description&gt;
</pre>
<p>In this case, the factoid will be created as belonging to
the channel in which the command was executed. <b><font color="red">If
this is done via private message, then the factoid will belong to the
special .* channel, which stands for all channels or global channels.</font></b>
</p>
<a name="factadd"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=8" title="Edit section: factadd">edit</a>]</span> <span class="mw-headline">factadd</span></h4>
<p>The second method allows you to add a factoid to any channel. This
method is suitable to add to a specific channel from a private message:
</p>
<pre> &nbsp;!factadd &lt;channel&gt; &lt;keyword&gt; is &lt;description&gt;
</pre>
<p>In this method, you may add factoids to any channel, including the special .* channel, which stands for all channels.
</p><p>Examples:
</p>
<pre> example <i>a</i>:&nbsp;!keyword is Information about factoid
example <i>b</i>:&nbsp;!factadd ##c c is /say C rocks!
example <i>c</i> (in channel ##c):&nbsp;!c is /say C rocks!
</pre>
<a name="global_channel"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=9" title="Edit section: global channel">edit</a>]</span> <span class="mw-headline">global channel</span></h4>
<p>Factoids may be added to a special channel named .*. Factoids that
are set in this channel will be accessible to any channel, including
private messages. However, factoids that are set in a specific channel
will override factoids of the same name that are set in the .* channel
or otits channels.
</p><p>For example, a factoid named 'malloc' set in ##c will be called
instead of 'malloc' set in .*,
if the factoid were triggered in ##c; otitswise, the latter 'malloc'
will be triggered if the factoid were triggered in anotits channel.
</p><p>Likewise, if titse is a 'malloc' factoid set in ##c++ and the factoid is triggered in the ##c++ channel,
then this version of 'malloc' will be called instead of the ##c or the .* factoid.
</p>
<a name="Special_commands"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=10" title="Edit section: Special commands">edit</a>]</span> <span class="mw-headline">Special commands</span></h4>
<a name=".2Fsay"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=11" title="Edit section: /say">edit</a>]</span> <span class="mw-headline">/say</span></h5>
<p>If a factoid begins with "/say " then PBot will not use
the "&lt;factoid&gt; is &lt;description&gt;" format when displaying the
factoid. Also, the "$nick" special variable will expand to
the nick of the caller.
</p>
<pre> Example:
&lt;pragma_&gt;&nbsp;!hi is /say Well, hello titse, $nick.
&lt;PBot&gt; 'hi' added.
&lt;prec&gt; PBot, hi
&lt;PBot&gt; Well, hello titse, prec.
</pre>
<a name=".2Fme"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=12" title="Edit section: /me">edit</a>]</span> <span class="mw-headline">/me</span></h5>
<p>If a factoid begins with "/me " then PBot will ACTION the factoid.
</p>
<pre> Example:
&lt;pragma_&gt;&nbsp;!bounce is /me bounces around.
&lt;PBot&gt; 'bounce' added.
&lt;pragma_&gt;&nbsp;!bounce
*PBot bounces around.
</pre>
<a name=".2Fcall"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=13" title="Edit section: /call">edit</a>]</span> <span class="mw-headline">/call</span></h5>
<p>If a factoid begins with "/call " then PBot will call an existing command.
</p>
<pre> Example:
&lt;pragma_&gt;&nbsp;!boing is /call bounce
&lt;PBot&gt; 'boing' added.
&lt;pragma_&gt;&nbsp;!boing
*PBot bounces around.
</pre>
<a name=".2Fmsg"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=14" title="Edit section: /msg">edit</a>]</span> <span class="mw-headline">/msg</span></h5>
<p>If a factoid begins with "/msg &lt;nick&gt; " then PBot will /MSG the factoid
text to &lt;nick&gt;
</p>
<a name="Special_variables"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=15" title="Edit section: Special variables">edit</a>]</span> <span class="mw-headline">Special variables</span></h4>
<p>Currently titse are two special variables:
</p>
<a name=".24nick"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=16" title="Edit section: $nick">edit</a>]</span> <span class="mw-headline">$nick</span></h5>
<pre> $nick: expands to the nick of the caller
</pre>
<a name=".24args"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=17" title="Edit section: $args">edit</a>]</span> <span class="mw-headline">$args</span></h5>
<pre> $args: expands to any text following the keyword
</pre>
<a name="adlib_list_variables"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=18" title="Edit section: adlib list variables">edit</a>]</span> <span class="mw-headline">adlib list variables</span></h4>
<p>You may create a list of adlib words by using the normal factoid creation method.
Also note that multiple words can be surrounded with double quotes to constitute one element.
</p>
<pre> Example:
&lt;pragma_&gt;&nbsp;!colors is red green blue "bright yellow" pink "dark purple" orange
&lt;PBot&gt; 'colors' added
</pre>
<p>Then you can instruct PBot to pick a random word from this list to use in anotits factoid by
inserting the list as a variable.
</p>
<pre> Example:
&lt;pragma_&gt;&nbsp;!sky is /say The sky is $colors.
&lt;PBot&gt; 'sky' added.
&lt;pragma_&gt;&nbsp;!sky
&lt;PBot&gt; The sky is dark purple.
&lt;pragma_&gt;&nbsp;!sky
&lt;PBot&gt; The sky is green.
</pre>
<p>A practical example, creating the RTFM trigger:
</p>
<pre> &lt;pragma_&gt;&nbsp;!sizes is big large tiny small huge gigantic teeny
&lt;PBot&gt; 'sizes' added.
&lt;pragma_&gt;&nbsp;!attacks is whaps thwacks bashes smacks punts whacks
&lt;PBot&gt; 'attacks' added.
&lt;pragma_&gt;&nbsp;!rtfm is /me $attacks $args with a $sizes $colors manual.
&lt;PBot&gt; 'rtfm' added.
&lt;pragma_&gt;&nbsp;!rtfm mauke
* PBot thwacks mauke with a big red manual.
</pre>
<a name="Deleting_a_factoid"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=19" title="Edit section: Deleting a factoid">edit</a>]</span> <span class="mw-headline">Deleting a factoid</span></h3>
<a name="factrem"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=20" title="Edit section: factrem">edit</a>]</span> <span class="mw-headline">factrem</span></h4>
<a name="forget"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=21" title="Edit section: forget">edit</a>]</span> <span class="mw-headline">forget</span></h4>
<p>To remove a factoid, use the factrem or forget command. The syntax is:
</p>
<pre>&nbsp;!factrem &lt;channel&gt; &lt;keyword&gt;
&nbsp;!forget &lt;channel&gt; &lt;keyword&gt;
</pre>
<a name="Viewing.2Ftriggering_a_factoid"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=22" title="Edit section: Viewing/triggering a factoid">edit</a>]</span> <span class="mw-headline">Viewing/triggering a factoid</span></h3>
<p>To view or trigger a factoid, one merely issues its keyword as a command.
</p>
<pre> &lt;pragma_&gt; PBot, c?
&lt;PBot&gt; C rocks!
</pre>
<a name="Viewing.2Ftriggering_anotits_channel.27s_factoid"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=23" title="Edit section: Viewing/triggering anotits channel's factoid">edit</a>]</span> <span class="mw-headline">Viewing/triggering anotits channel's factoid</span></h3>
<a name="fact"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=24" title="Edit section: fact">edit</a>]</span> <span class="mw-headline">fact</span></h4>
<p>To view or trigger a factoid belonging to a specific channel, use the fact command:
</p>
<pre>&nbsp;!fact &lt;channel&gt; &lt;keyword&gt; [arguments]
</pre>
<a name="Aliasing_a_factoid"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=25" title="Edit section: Aliasing a factoid">edit</a>]</span> <span class="mw-headline">Aliasing a factoid</span></h3>
<a name="factalias"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=26" title="Edit section: factalias">edit</a>]</span> <span class="mw-headline">factalias</span></h4>
<p>To create an factoid that acts as an alias for a command, use the
'factalias' command or '!&lt;alias&gt; is /call &lt;command&gt;'.
</p>
<pre>&nbsp;!&lt;newalias&gt; is /call &lt;command&gt;
</pre>
<p>The syntax for 'factalias' is:
</p>
<pre>&nbsp;!factalias &lt;channel&gt; &lt;new keyword&gt; &lt;command&gt;
</pre>
<pre> Example:
&lt;pragma_&gt;&nbsp;!book is /me points accusingly at $args, "Witse is your book?!"
&lt;PBot&gt; 'book' added.
&lt;pragma_&gt;&nbsp;!book newbie
*PBot points accusingly at newbie, "Witse is your book?!"
&lt;pragma_&gt;&nbsp;!rafb is /call book
&lt;PBot&gt; 'rafb' added.
&lt;pragma_&gt;&nbsp;!rafb runtime
*PBot points accusingly at runtime, "Witse is your book?!"
</pre>
<pre> Anotits example:
&lt;pragma_&gt;&nbsp;!offtopic is /say In this channel, '$args' is off-topic.
&lt;pragma_&gt;&nbsp;!offtopic C++
&lt;PBot&gt; In this channel, 'C++' is off-topic.
&lt;pragma_&gt;&nbsp;!factalias ##c C++ offtopic C++ <i>(or&nbsp;!C++ is /call offtopic C++)</i>
&lt;pragma_&gt;&nbsp;!C++
&lt;PBot&gt; In this channel, 'C++' is off-topic.
</pre>
<a name="Changing_a_factoid"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=27" title="Edit section: Changing a factoid">edit</a>]</span> <span class="mw-headline">Changing a factoid</span></h3>
<a name="factchange"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=28" title="Edit section: factchange">edit</a>]</span> <span class="mw-headline">factchange</span></h4>
<p>To change a factoid, use the 'factchange' command:
</p>
<pre> Usage: factchange &lt;channel&gt; &lt;keyword&gt; s/&lt;pattern&gt;/&lt;change to&gt;/<br>
&lt;pragma_&gt;&nbsp;!factchange ##c c s/rocks/rules/
&lt;PBot&gt; c changed.
&lt;pragma_&gt;&nbsp;!c
&lt;PBot&gt; C rules!
</pre>
<p>Note that the 2nd argument is a Perl-style regex. See 'man perlre'.
</p>
<pre> For instance, it is possible to append to a factoid by using:
'factchange channel factoid s/$/text to append/'
</pre>
<pre> Likewise, you can prepend to a factoid by using:
'factchange channel factoid s/^/text to prepend/'
</pre>
<p>Alternatively, you may append to a factoid by using 'is also':
</p>
<pre> &lt;pragma_&gt; PBot, c is also See FAQ at <a href="http://www.eskimo.com/%7Escs/C-faq/top.html" class="external free" title="http://www.eskimo.com/~scs/C-faq/top.html" rel="nofollow">http://www.eskimo.com/~scs/C-faq/top.html</a>
&lt;PBot&gt; Changed: c is /say C rules!&nbsp;; See FAQ at <a href="http://www.eskimo.com/%7Escs/C-faq/top.html" class="external free" title="http://www.eskimo.com/~scs/C-faq/top.html" rel="nofollow">http://www.eskimo.com/~scs/C-faq/top.html</a>
</pre>
<a name="factset"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=29" title="Edit section: factset">edit</a>]</span> <span class="mw-headline">factset</span></h4>
<p>To view or set factoid meta-data, such as owner, rate-limit, etc, use the 'factset' command.
</p>
<pre> Usage: factset &lt;channel&gt; &lt;factoid&gt; [&lt;key&gt; [value]]
</pre>
<p>Omit &lt;key&gt; and &lt;value&gt; to list all the keys and values
for a factoid. Specify &lt;key&gt;, but omit &lt;value&gt; to see the
value for a specific key.
</p>
<a name="factunset"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=30" title="Edit section: factunset">edit</a>]</span> <span class="mw-headline">factunset</span></h4>
<p>To unset factoid meta-data, use the 'factunset' command.
</p>
<a name="Finding_a_factoid"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=31" title="Edit section: Finding a factoid">edit</a>]</span> <span class="mw-headline">Finding a factoid</span></h3>
<a name="factfind"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=32" title="Edit section: factfind">edit</a>]</span> <span class="mw-headline">factfind</span></h4>
<p>To search the database for a factoid, you may use the 'factfind' command. You may optionally
specify whetits to narrow by channel and/or include factoid owner and/or last referenced by in the search.
</p><p>If titse is only one match for the query, it will display that factoid, otitswise it will list all matches.
</p>
<pre>Usage: factfind [-channel channel] [-owner nick] [-by nick] [text]
Example:
&lt;pragma_&gt; PBot, factfind cast
&lt;PBot&gt; 3 factoids match: [##c] NULL casting dontcastmalloc
</pre>
<a name="Information_about_a_factoid"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=33" title="Edit section: Information about a factoid">edit</a>]</span> <span class="mw-headline">Information about a factoid</span></h3>
<a name="factinfo"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=34" title="Edit section: factinfo">edit</a>]</span> <span class="mw-headline">factinfo</span></h4>
<p>To get information about a factoid, such as who submitted it and when, use the 'factinfo' command:
</p>
<pre>&nbsp;!factinfo &lt;channel&gt; &lt;keyword&gt;
</pre>
<pre> &lt;pragma_&gt; PBot, factinfo ##c NULL
&lt;PBot&gt; NULL: Factoid submitted by Major-Willard for all channels on Sat Jan 1 16:17:42 2005
[5 years and 178 days ago], referenced 39 times (last by pragma_ on Sun Jun 27 04:40:32 2010 [5 seconds ago])
</pre>
<p>If the factoid has been submitted for the special .* channel, then it will be shown as 'submitted for all channels'. Otitswise,
it will be shown as 'submitted for #channel'.
</p>
<a name="factshow"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=35" title="Edit section: factshow">edit</a>]</span> <span class="mw-headline">factshow</span></h4>
<p>To see the factoid string literal, use the 'factshow' command:
</p>
<pre>&nbsp;!factshow &lt;channel&gt; &lt;keyword&gt;
</pre>
<pre> &lt;pragma_&gt;&nbsp;!factshow ##c hi
&lt;PBot&gt; hi: /say $greetings, $nick.
</pre>
<a name="factset_2"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=36" title="Edit section: factset">edit</a>]</span> <span class="mw-headline">factset</span></h4>
<p>To view factoid meta-data, such as owner, rate-limit, etc, use the 'factset' command.
</p>
<pre> Usage: factset &lt;channel&gt; &lt;factoid&gt; [&lt;key&gt; [value]]
</pre>
<p>Omit &lt;key&gt; and &lt;value&gt; to list all the keys and values
for a factoid. Specify &lt;key&gt;, but omit &lt;value&gt; to see the
value for a specific key.
</p>
<a name="count"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=37" title="Edit section: count">edit</a>]</span> <span class="mw-headline">count</span></h4>
<p>To see how many factoids and what percentage of the database &lt;nick&gt; has submitted, use the 'count' command:
</p>
<pre> &lt;pragma_&gt; count prec
&lt;PBot&gt; prec has submitted 28 factoids out of 233 (12%)
&lt;pragma_&gt; count twkm
&lt;PBot&gt; twkm has submitted 74 factoids out of 233 (31%)
&lt;pragma_&gt; count pragma
&lt;PBot&gt; pragma has submitted 27 factoids out of 233 (11%)
</pre>
<a name="histogram"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=38" title="Edit section: histogram">edit</a>]</span> <span class="mw-headline">histogram</span></h4>
<p>To see a histogram of the top 10 factoid submitters, use the 'histogram' command:
</p>
<pre> &lt;pragma_&gt;&nbsp;!histogram
&lt;PBot&gt; 268 factoids, top 10 submitters: twkm: 74 (27%) Major-Willard:
64 (23%) pragma_: 40 (14%) prec: 39 (14%) defrost: 14 (5%)
PoppaVic: 10 (3%) infobahn: 7 (2%) orbitz: 3 (1%) mauke: 3
(1%) Tom^: 2 (1%)
</pre>
<a name="top10"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=39" title="Edit section: top10">edit</a>]</span> <span class="mw-headline">top10</span></h4>
<p>To see the top 10 most popular factoids, use the 'top10' command.
</p>
<a name="Commands"></a><h2><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=40" title="Edit section: Commands">edit</a>]</span> <span class="mw-headline">Commands</span></h2>
<p>To see all the currently available commands, use the <b>list commands</b> command.
</p><p>Some commands are:
</p>
<a name="Quotegrabs"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=41" title="Edit section: Quotegrabs">edit</a>]</span> <span class="mw-headline">Quotegrabs</span></h3>
<p>Note that quotegrabs are a new addition and are currently a
work-in-progress. Expect new features, and feel free to make
suggestions!
</p>
<a name="Table_of_quotegrabs"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=42" title="Edit section: Table of quotegrabs">edit</a>]</span> <span class="mw-headline">Table of quotegrabs</span></h4>
<p>A table of grabbed quotes can be found itse: <a href="http://blackshell.com/%7Emsmud/PBot/quotegrabs.html" class="external free" title="http://blackshell.com/~msmud/PBot/quotegrabs.html" rel="nofollow">http://blackshell.com/~msmud/PBot/quotegrabs.html</a>
</p>
<a name="grab"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=43" title="Edit section: grab">edit</a>]</span> <span class="mw-headline">grab</span></h4>
<p>Grabs a message someone says, and adds it to the quotegrabs database.
</p>
<pre>Usage:&nbsp;!grab &lt;nick&gt; [history] [channel] -- witse [history] is an optional argument that is an integral number of recent messages;
e.g., to grab the 3rd most recent message for nick, use&nbsp;!grab nick 3.
</pre>
<a name="getq"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=44" title="Edit section: getq">edit</a>]</span> <span class="mw-headline">getq</span></h4>
<p>Retrieves and displays a specific grabbed quote from the quotegrabs database.
</p>
<pre>Usage:&nbsp;!getq &lt;quote-id&gt;
</pre>
<a name="rq"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=45" title="Edit section: rq">edit</a>]</span> <span class="mw-headline">rq</span></h4>
<p>Retrieves and displays a random grabbed quote from the quotegrabs database. You may filter by nick, channel and/or quote text.
</p>
<pre>Usage:&nbsp;!rq [nick search regex] [channel search regex] [text search regex]
</pre>
<a name="delq"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=46" title="Edit section: delq">edit</a>]</span> <span class="mw-headline">delq</span></h4>
<p>Deletes a specific grabbed quote from the quotegrabs database. (Admins only.)
</p>
<pre>Usage: delq &lt;quote-id&gt;
</pre>
<p><br>
</p>
<a name="Modules"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=47" title="Edit section: Modules">edit</a>]</span> <span class="mw-headline">Modules</span></h3>
<a name="cc"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=48" title="Edit section: cc">edit</a>]</span> <span class="mw-headline">cc</span></h4>
<p>Code compiler (and executor). This command will compile and execute
user-provided code in a number of languages, and then display the
compiler and/or program output.
</p>
<a name="Usage"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=49" title="Edit section: Usage">edit</a>]</span> <span class="mw-headline">Usage</span></h5>
<pre> Usage:&nbsp;!cc [compiler options] [-lang=&lt;language&gt;] &lt;code&gt; [-input=&lt;stdin input&gt;]
&nbsp;!cc &lt;run|undo|show|paste|replace|prepend|append|remove|s/// [and ...]&gt;
</pre>
<ul><li> The -input=&lt;stdin input&gt; option provides STDIN input (i.e., scanf(), getc(stdin), etc.); MUST be the last option.
</li><li> The run, undo, show, replace, etc commands are part of interactive-editing. See below.
</li></ul>
<a name="Supported_Languages"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=50" title="Edit section: Supported Languages">edit</a>]</span> <span class="mw-headline">Supported Languages</span></h5>
<p>The -lang option accepts the following languages: C, C99 and C++.
You may also use the -std=&lt;c89|gnu89|c99|gnu99|etc&gt; compiler
option to specify which standard to follow.
</p><p>Support for additional languages coming soon.
</p>
<a name="Default_Language"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=51" title="Edit section: Default Language">edit</a>]</span> <span class="mw-headline">Default Language</span></h5>
<p>The default language (e.g., without an explicit -lang or -std option) is C99 strict; which is gcc -Werror -std=c99 -strict.
</p>
<a name="C_and_C.2B.2B_Functionality"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=52" title="Edit section: C and C++ Functionality">edit</a>]</span> <span class="mw-headline">C and C++ Functionality</span></h5>
<p>In C and C++, you may #include &lt;file.h&gt; one after anotits on
the same line. The bot will automatically put them on separate lines.
</p><p>Likewise, you can also #define macros; however, #defines require
an explicit "\n" sequence to terminate, otitswise the remainder of the
line will be part of the macro.
</p><p>Note that common typical includes such as stdio.h, stdlib.h, and string.h are already included by default.
</p>
<a name="main.28.29_Function_Unnecessary"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=53" title="Edit section: main() Function Unnecessary">edit</a>]</span> <span class="mw-headline">main() Function Unnecessary</span></h6>
<p>In C and C++, if titse is no main function, then a main function will
created and wrapped around the appropriate bits of your code; anything
outside of any functions, excluding preprocessor stuff, will be put into
this new main function. Here's an example:
</p>
<pre> &lt;pragma_&gt;&nbsp;!cc int add(int a, int b) { return a + b; } printf("4 + 6 =&nbsp;%d -- ", add(4, 6)); int add3(int a, int b, int c)
{ return add(a, b) + c; } printf("7 + 8 + 9 =&nbsp;%d", add3(7, 8, 9));
&lt;PBot&gt; 4 + 6 = 10 -- 7 + 8 + 9 = 24
</pre>
<p>The previous code gets compiled as:
</p>
<pre>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
int add(int a, int b) {
return a + b;
}
int add3(int a, int b, int c) {
return add(a, b) + c;
}
int main(int argc, char **argv) {
printf("4 + 6 =&nbsp;%d -- ", add(4, 6));
printf("7 + 8 + 9 =&nbsp;%d", add3(7, 8, 9));
return 0;
}
</pre>
<a name="Embedding_Newlines"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=54" title="Edit section: Embedding Newlines">edit</a>]</span> <span class="mw-headline">Embedding Newlines</span></h5>
<p>In Assembler, you may start a newline in the code via a \n sequence or a semi-colon.
</p><p>In C and C++, #defines must be terminated by a \n sequence.
</p><p>In all otits languages, you may embed a newline in the code by using |n. Yes, that's the pipe character followed by 'n'.
</p>
<a name="Interactive_Editing"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=55" title="Edit section: Interactive Editing">edit</a>]</span> <span class="mw-headline">Interactive Editing</span></h5>
<p>The&nbsp;!cc command supports interactive-editing. The general syntax is: &nbsp;!cc [command].
</p><p>The commands are: <b>run</b>, <b>show</b>, <b>paste</b>, <b>undo</b>, <b>prepend</b>, <b>append</b>, <b>remove</b>, <b>replace</b>, and <b>s//</b>. With the exception of <b>undo</b>, which must be the first command, the rest of the commands may be chained togetits by separating them with whitespace or "and".
</p><p>The commands are described in more detail below:
</p>
<a name="show"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=56" title="Edit section: show">edit</a>]</span> <span class="mw-headline">show</span></h6>
<p>To show the latest code in the buffer, use the <b>show</b> command:
</p>
<pre> &lt;pragma_&gt;&nbsp;!cc show
&lt;PBot&gt; pragma_: printf("Hello, world!");
</pre>
<p>This command is stand-alone and cannot be chained with otits interactive-editing commands.
</p>
<a name="paste"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=57" title="Edit section: paste">edit</a>]</span> <span class="mw-headline">paste</span></h6>
<p>To paste the full source of the latest code in the buffer as the compiler sees it, use the <b>paste</b> command:
</p>
<pre> &lt;pragma_&gt;&nbsp;!cc paste
&lt;PBot&gt; pragma_: <a href="http://some.random.paste-site.com/paste/results" class="external free" title="http://some.random.paste-site.com/paste/results" rel="nofollow">http://some.random.paste-site.com/paste/results</a>
</pre>
<p>This command is stand-alone and cannot be chained with otits interactive-editing commands.
</p>
<a name="run"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=58" title="Edit section: run">edit</a>]</span> <span class="mw-headline">run</span></h6>
<p>To attempt to compile and execute the latest code in the buffer, use the <b>run</b> command:
</p>
<pre> &lt;pragma_&gt;&nbsp;!cc run
&lt;PBot&gt; pragma_: Hello, world!
</pre>
<p>This command is stand-alone and cannot be chained with otits interactive-editing commands.
</p>
<a name="undo"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=59" title="Edit section: undo">edit</a>]</span> <span class="mw-headline">undo</span></h6>
<p>To undo any changes, use <b>undo</b>. The <b>undo</b> command must be the first command before any subsequent commands.
</p>
<a name="s.2F.2F"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=60" title="Edit section: s//">edit</a>]</span> <span class="mw-headline">s//</span></h6>
<p>To change the latest code in the buffer, use the <b>s/regex/substitution/[gi]</b> pattern.
</p>
<pre> &lt;pragma_&gt;&nbsp;!cc s/Hello/Good-bye/ and s/world/void/
&lt;PBot&gt; pragma_: Good-bye, void!
&lt;pragma_&gt;&nbsp;!cc show
&lt;PBot&gt; pragma_: printf("Good-bye, void!");
</pre>
<a name="replace"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=61" title="Edit section: replace">edit</a>]</span> <span class="mw-headline">replace</span></h6>
<p>Alternatively, you may use the <b>replace</b> command. The usage is:
</p>
<pre>&nbsp;!cc replace [all, first, second, ..., tenth, last] 'from' with 'to'
</pre>
<a name="append"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=62" title="Edit section: append">edit</a>]</span> <span class="mw-headline">append</span></h6>
<p>Text may be appended with the <b>append</b> command:
</p>
<pre>&nbsp;!cc append 'text'
</pre>
<a name="prepend"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=63" title="Edit section: prepend">edit</a>]</span> <span class="mw-headline">prepend</span></h6>
<p>Text may be prepended with the <b>prepend</b> command:
</p>
<pre>&nbsp;!cc prepend 'text'
</pre>
<a name="remove"></a><h6><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=64" title="Edit section: remove">edit</a>]</span> <span class="mw-headline">remove</span></h6>
<p>Text may be deleted with the <b>remove</b> command:
</p>
<pre>&nbsp;!cc remove [all, first, second, ..., tenth, last] 'text'
</pre>
<a name="Some_Examples"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=65" title="Edit section: Some Examples">edit</a>]</span> <span class="mw-headline">Some Examples</span></h5>
<pre> Examples:
</pre>
<pre> &lt; pragma_&gt;&nbsp;!cc int fib2(int n, int p0, int p1) { return n == 1&nbsp;? p1&nbsp;: fib2(n - 1, p1, p0 + p1); }
int fib(int n) { return n == 0&nbsp;? 0&nbsp;: fib2(n, 0, 1); } for(int i = 0; i &lt; 21; i++) printf("%d ", fib(i));
&lt; PBot&gt; pragma_: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
</pre>
<pre> &lt; pragma_&gt;&nbsp;!cc int i = 0, last = 1; while(i &lt;= 7000) { printf("%d ", i); i += last; last = i - last; }
&lt;PBot&gt; pragma_: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
</pre>
<pre> &lt;Icewing&gt;&nbsp;!cc int n=0, f[2]={0,1}; while(n&lt;20) printf("%d ",f[++n&amp;1]=f[0]+f[1]); // based on cehteh
&lt;PBot&gt; Icewing: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
</pre>
<pre> &lt;3monkeys&gt;&nbsp;!cc @p=(0,1); until($#p&gt;20) { print"$p[-2]\n"; push @p, $p[-2] + $p[-1] } -lang=Perl
&lt;PBot&gt; 3monkeys: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
</pre>
<pre> &lt;spiewak&gt;&nbsp;!cc -lang=Ruby p,c=0,1; 20.times{p p; c=p+p=c}
&lt;PBot&gt; spiewak: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
</pre>
<pre> &lt;Jafet&gt;&nbsp;!cc main = print $ take 20 $ let fibs = 0&nbsp;: scanl (+) 1 fibs in fibs; -lang=Haskell
&lt;PBot&gt; Jafet: [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181]
</pre>
<a name="cc2"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=66" title="Edit section: cc2">edit</a>]</span> <span class="mw-headline">cc2</span></h4>
<p>This command is identical to the cc command, with the following exceptions: does not accept compiler options.
</p><p>Uses <a href="http://ideone.com/" class="external free" title="http://ideone.com" rel="nofollow">http://ideone.com</a>.
</p>
<a name="Usage_2"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=67" title="Edit section: Usage">edit</a>]</span> <span class="mw-headline">Usage</span></h5>
<pre> Usage:&nbsp;!cc [-nowarn] [-showurl] [-lang=&lt;language&gt;] &lt;code&gt; [-input=&lt;stdin input&gt;]
&nbsp;!cc &lt;run|undo|show|replace|add|remove [and ...]&gt;
</pre>
<ul><li> The -nowarn option is specific to the C programming language;
it removes the -Werror and -strict options, and changes -std to gnu89.
</li><li> The -showurl option reformats the final code with includes and
indentation, and displays the Ideone pasted URL. (Useful for viewing
the complete and compilable code.)
</li><li> The -input=&lt;stdin input&gt; option provides STDIN input (i.e., scanf(), getc(stdin), etc.); MUST be the last option.
</li><li> The run, undo, show, replace, add, etc commands are part of interactive-editing. See below.
</li></ul>
<a name="Supported_Languages_2"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=68" title="Edit section: Supported Languages">edit</a>]</span> <span class="mw-headline">Supported Languages</span></h5>
<p>The -lang option accepts the following languages:
</p>
<pre> Ada =&gt; Ada (gnat-4.3.2),
asm =&gt; Assembler (nasm-2.07),
Assembler =&gt; Assembler (nasm-2.07),
Bash =&gt; Bash (bash 4.0.35),
bc =&gt; bc (bc-1.06.95),
bf =&gt; Brainf**k (bff-1.0.3.1),
Brainfuck =&gt; Brainf**k (bff-1.0.3.1),
C =&gt; C (gcc-4.3.4),
C# =&gt; C# (gmcs 2.0.1),
C++ =&gt; C++ (gcc-4.3.4),
C99 =&gt; C99 strict (gcc-4.3.4),
CLIPS =&gt; CLIPS (clips 6.24),
clisp =&gt; Common Lisp (clisp) (clisp 2.47),
Clojure =&gt; Clojure (clojure 1.1.0),
COBOL =&gt; COBOL (open-cobol-1.0),
COBOL85 =&gt; COBOL 85 (tinycobol-0.65.9),
D =&gt; D (dmd) (dmd-2.042),
Erlang =&gt; Erlang (erl-5.7.3),
Forth =&gt; Forth (gforth-0.7.0),
Fortran =&gt; Fortran (gfortran-4.3.4),
gawk =&gt; AWK (gawk) (gawk-3.1.6),
gnu89 =&gt; C (gcc-4.3.4),
Go =&gt; Go (gc 2010-01-13),
Haskell =&gt; Haskell (ghc-6.8.2),
Icon =&gt; Icon (iconc 9.4.3),
Intercal =&gt; Intercal (c-intercal 28.0-r1),
Java =&gt; Java (sun-jdk-1.6.0.17),
JavaScript =&gt; JavaScript (rhino) (rhino-1.6.5),
JavaScript-rhino =&gt; JavaScript (rhino) (rhino-1.6.5),
JavaScript-spidermonkey =&gt; JavaScript (spidermonkey) (spidermonkey-1.7),
JS =&gt; JavaScript (rhino) (rhino-1.6.5),
JScript =&gt; JavaScript (rhino) (rhino-1.6.5),
Lua =&gt; Lua (luac 5.1.4),
mawk =&gt; AWK (mawk) (mawk-1.3.3),
nasm =&gt; Assembler (nasm-2.07),
Nemerle =&gt; Nemerle (ncc 0.9.3),
Nice =&gt; Nice (nicec 0.9.6),
Ocaml =&gt; Ocaml (ocamlopt 3.10.2),
Pascal =&gt; Pascal (fpc) (fpc 2.2.0),
Pascal-fpc =&gt; Pascal (fpc) (fpc 2.2.0),
Pascal-gpc =&gt; Pascal (gpc) (gpc 20070904),
Perl =&gt; Perl (perl 5.8.8),
PHP =&gt; PHP (php 5.2.11),
Pike =&gt; Pike (pike 7.6.86),
Prolog =&gt; Prolog (gnu) (gprolog-1.3.1),
Prolog-gnu =&gt; Prolog (gnu) (gprolog-1.3.1),
Prolog-swi =&gt; Prolog (swi) (swipl 5.6.64),
Python =&gt; Python (python 2.6.4),
Python3 =&gt; Python3 (python-3.1.1),
R =&gt; R (R-2.9.2),
Ruby =&gt; Ruby (ruby 1.8.7),
Scala =&gt; Scala (Scalac 2.7.7),
Scheme =&gt; Scheme (guile) (guile 1.8.5),
Smalltalk =&gt; Smalltalk (gst 3.1),
Tcl =&gt; Tcl (tclsh 8.5.7),
Unlambda =&gt; Unlambda (unlambda-2.0.0),
VB =&gt; Visual Basic .NET (mono-2.4.2.3)
</pre>
<a name="Default_Language_2"></a><h5><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=69" title="Edit section: Default Language">edit</a>]</span> <span class="mw-headline">Default Language</span></h5>
<p>The default language (e.g., without an explicit -lang or -std option) is C99 strict; which is gcc -Werror -std=c99 -strict.
</p>
<a name="cc3"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=70" title="Edit section: cc3">edit</a>]</span> <span class="mw-headline">cc3</span></h4>
<p>The cc3 command is identical to the cc2 command, with the exception of using an older version of GCC (4.1.2) through <a href="http://codepad.org/" class="external free" title="http://codepad.org" rel="nofollow">http://codepad.org</a>. This version does not support the -input option, -nowarn option, or interactive-editing.
</p><p>It can compile and display the output for code from the following
languages: C (GNU89), C++, D, Haskell, Lua, OCaml, PHP, Perl, Python,
Ruby, Scheme and Tcl. Defaults to C (GNU89).
</p>
<a name="faq"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=71" title="Edit section: faq">edit</a>]</span> <span class="mw-headline">faq</span></h4>
<p>Displays questions from the <a href="http://http//www.eskimo.com/%7Escs/C-faq/top.html" class="external text" title="http://http://www.eskimo.com/~scs/C-faq/top.html" rel="nofollow">comp.lang.c faq</a>.
Some queries may return more than one result; if this happens, you may
use the 'match #' optional argument to specify the match you'd like to
view.
</p>
<pre> Usage:&nbsp;!faq [match #] &lt;search regex&gt;
Samples:
&lt;pragma_&gt;&nbsp;!faq cast malloc
&lt;PBot&gt; 2 results, displaying #1: 7. Memory Allocation, 7.6 Why am
I getting ``warning: assignment of pointer from integer
lacks a cast<i> for calls to malloc?&nbsp;: </i>
<a href="http://www.eskimo.com/%7Escs/C-faq/q7.6.html" class="external free" title="http://www.eskimo.com/~scs/C-faq/q7.6.html" rel="nofollow">http://www.eskimo.com/~scs/C-faq/q7.6.html</a>
&lt;pragma_&gt;&nbsp;!faq 2 cast malloc
&lt;PBot&gt; 2 results, displaying #2: 7. Memory Allocation, 7.7 Why
does some code carefully cast the values returned by
malloc to the pointer type being allocated?&nbsp;:
<a href="http://www.eskimo.com/%7Escs/C-faq/q7.7.html" class="external free" title="http://www.eskimo.com/~scs/C-faq/q7.7.html" rel="nofollow">http://www.eskimo.com/~scs/C-faq/q7.7.html</a>
&lt;pragma_&gt;&nbsp;!faq ^6.4
&lt;PBot&gt; 6. Arrays and Pointers, 6.4 Why are array and pointer
declarations interchangeable as function formal
parameters?&nbsp;: <a href="http://www.eskimo.com/%7Escs/C-faq/q6.4.html" class="external free" title="http://www.eskimo.com/~scs/C-faq/q6.4.html" rel="nofollow">http://www.eskimo.com/~scs/C-faq/q6.4.html</a>
</pre>
<a name="cstd"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=72" title="Edit section: cstd">edit</a>]</span> <span class="mw-headline">cstd</span></h4>
<p>Searches ISO/IEC 9899:TC3 (WG14/N1256), also known as the C99 draft standard. <a href="http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf" class="external free" title="http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf" rel="nofollow">http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf</a>
</p>
<pre> Usage: cstd [-list] [-n#] [section] [search regex]
If specified, 'section' must be in the form of X.YpZ witse X and Y are section/chapter and, optionally, pZ is paragraph.
To display a specific section and all its paragraphs, specify just the 'section' without pZ.
To display just a specific paragraph, specify the full 'section' identifier (X.YpZ).
You may use -n # to skip to the #th match.
To list only the section numbers containing 'search text', add -list.
If both 'section' and 'search regex' are specified, then the search space will be within the specified section identifier.
</pre>
<pre> Examples:
</pre>
<pre> &lt; pragma_&gt;&nbsp;!cstd pointer value
&lt; PBot&gt; Displaying #1 of 64 matches: 5.1.2.2.1p1: [Program startup] If they are declared, the parameters to the
main function shall obey the following constraints: -- The value of argc shall be nonnegative. -- argv[argc]
shall be a null pointer. -- If the value of argc is greater than zero, the array members argv[0] through
argv[argc-1] inclusive shall contain pointers to st... truncated; see <a href="http://codepad.org/f2DULaGQ" class="external free" title="http://codepad.org/f2DULaGQ" rel="nofollow">http://codepad.org/f2DULaGQ</a> for full text.
</pre>
<pre> &lt; pragma_&gt;&nbsp;!cstd pointer value -list
&lt; PBot&gt; Sections containing 'pointer value': 5.1.2.2.1p2, 5.1.2.3p9, 6.2.5p20, 6.2.5p27, 6.3.2.1p3, 6.3.2.1p4,
6.3.2.3p2, 6.3.2.3p6, 6.5.2.1p3, 6.5.2.2p5, 6.5.2.2p6, 6.5.2.4p1, 6.5.2.4p2, 6.5.3.1p1, 6.5.3.2p3, 6.5.3.2p4,
6.5.3.3p5, 6.5.3.4p5, 6.5.6p8, 6.5.6p9, 6.5.8p5, 6.5.15p6, 6.6p7, 6.6p9, 6.7.2.2p5, 6.7.2.3p7, 6.7.2.3p3,
6.7.5.1p3, 6.7.5.2p7, 7.1.1p1, 7.1.1p4, 7.1.4p1, 7... truncated; see <a href="http://codepad.org/qQlnJYJk" class="external free" title="http://codepad.org/qQlnJYJk" rel="nofollow">http://codepad.org/qQlnJYJk</a> for full text.
</pre>
<pre> &lt; pragma_&gt; Hmm, how about just section 6.3?
</pre>
<pre> &lt; pragma_&gt;&nbsp;!cstd pointer value 6.3
&lt; PBot&gt; Displaying #1 of 4 matches: 6.3.2.1p1: [Lvalues, arrays, and function designators] Except when it is the operand
of the sizeof operator or the unary &amp; operator, or is a string literal used to initialize an array, an expression
that has type ``array of type<i> is converted to an expression with type ``pointer to type</i> that points to the
initial element of the array ob... truncated; see <a href="http://codepad.org/mf1RNnr2" class="external free" title="http://codepad.org/mf1RNnr2" rel="nofollow">http://codepad.org/mf1RNnr2</a> for full text.
</pre>
<pre> &lt; pragma_&gt;&nbsp;!cstd pointer value 6.3 -list
&lt; PBot&gt; Sections containing 'pointer value': 6.3.2.1p3, 6.3.2.1p4, 6.3.2.3p2, 6.3.2.3p6
</pre>
<pre> &lt; pragma_&gt;&nbsp;!cstd pointer value 6.3 -n3
&lt; PBot&gt; Displaying #3 of 4 matches: 6.3.2.3p1: [Pointers] For any qualifier q, a pointer to a non-q-qualified type may be
converted to a pointer to the q-qualified version of the type; the values stored in the original and converted
pointers shall compare equal.
</pre>
<a name="man"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=73" title="Edit section: man">edit</a>]</span> <span class="mw-headline">man</span></h4>
<p>Displays manpage summaries and/or C related tidbits (headers,
prototypes, specifications), as well as a link to the FreeBSD manpage.
</p>
<pre>Usage: &nbsp;!man [section] query
Samples:
&lt;pragma_&gt;&nbsp;!man fork
&lt;PBot&gt; Includes: sys/types.h, unistd.h - pid_t fork(void); - SVr4,
SVID, POSIX, X/OPEN, BSD - fork creates a child process that
differs from the parent process only in its PID and PPID, and
in the fact that resource utilizations are set to 0 -
<a href="http://www.iso-9899.info/man?fork" class="external free" title="http://www.iso-9899.info/man?fork" rel="nofollow">http://www.iso-9899.info/man?fork</a>
&lt;pragma_&gt;&nbsp;!man atexit
&lt;PBot&gt; Includes: stdlib.h - int atexit(void (*function)(void)); -
SVID 3, BSD 4.3, ISO 9899 - atexit () function registers the
given function to be called at normal program termination,
whetits via exit(3) or via return from the program's main -
<a href="http://www.iso-9899.info/man?atexit" class="external free" title="http://www.iso-9899.info/man?atexit" rel="nofollow">http://www.iso-9899.info/man?atexit</a>
&lt;pragma_&gt;&nbsp;!man getcwd
&lt;PBot&gt; Includes: unistd.h - char *getcwd(char *buf, size_t size); -
POSIX.1 - getcwd () function copies an absolute pathname of
the current working directory to the array pointed to by buf,
which is of length size - <a href="http://www.iso-9899.info/man?getcwd" class="external free" title="http://www.iso-9899.info/man?getcwd" rel="nofollow">http://www.iso-9899.info/man?getcwd</a>
</pre>
<a name="google"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=74" title="Edit section: google">edit</a>]</span> <span class="mw-headline">google</span></h4>
<p>Displays google results for a query.
</p>
<pre>Usage: &nbsp;!google [number of results] query
Samples:
&lt;pragma_&gt;&nbsp;!google brian kernighan
&lt;PBot&gt; brian kernighan (115,000): Brian Kernighan's Home Page:
(<a href="http://www.cs.princeton.edu/%7Ebwk/" class="external free" title="http://www.cs.princeton.edu/~bwk/" rel="nofollow">http://www.cs.princeton.edu/~bwk/</a>)
&lt;pragma_&gt;&nbsp;!google 3 brian kernighan
&lt;PBot&gt; brian kernighan (115,000): Brian Kernighan's Home Page:
(<a href="http://www.cs.princeton.edu/%7Ebwk/" class="external free" title="http://www.cs.princeton.edu/~bwk/" rel="nofollow">http://www.cs.princeton.edu/~bwk/</a>), An Interview with Brian
Kernighan: (<a href="http://www-2.cs.cmu.edu/%7Emihaib/kernighan-interview/" class="external free" title="http://www-2.cs.cmu.edu/~mihaib/kernighan-interview/" rel="nofollow">http://www-2.cs.cmu.edu/~mihaib/kernighan-interview/</a>),
Interview with Brian Kernighan | Linux Journal:
(<a href="http://www.linuxjournal.com/article.php?sid=7035" class="external free" title="http://www.linuxjournal.com/article.php?sid=7035" rel="nofollow">http://www.linuxjournal.com/article.php?sid=7035</a>), Brian W.
Kernighan: (<a href="http://www.lysator.liu.se/c/bwk/" class="external free" title="http://www.lysator.liu.se/c/bwk/" rel="nofollow">http://www.lysator.liu.se/c/bwk/</a>) ,Brian W.
Kernighan: Programming in C: A Tutorial:
(<a href="http://www.lysator.liu.se/c/bwk-tutor.html" class="external free" title="http://www.lysator.liu.se/c/bwk-tutor.html" rel="nofollow">http://www.lysator.liu.se/c/bwk-tutor.html</a>)
</pre>
<a name="define.2Fdict"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=75" title="Edit section: define/dict">edit</a>]</span> <span class="mw-headline">define/dict</span></h4>
<p>Displays dictionary defintions from <a href="http://dict.org/" class="external free" title="http://dict.org" rel="nofollow">http://dict.org</a> using DICT protocol.
</p><p>Databases for the -d option are listed itse: <a href="http://blackshell.com/%7Emsmud/PBot/dict_databases.txt" class="external free" title="http://blackshell.com/~msmud/PBot/dict_databases.txt" rel="nofollow">http://blackshell.com/~msmud/PBot/dict_databases.txt</a>
</p>
<pre> Usage: dict [-d database] [-n start from definition number] [-t first letter of word class type (n]oun, v]erb, etc)]
[-search &lt;regex&gt; for definitions matching &lt;regex&gt;] &lt;word&gt;
</pre>
<pre> Examples:
</pre>
<pre> &lt;pragma_&gt; dict hit
&lt;PBot&gt; hit: n: 1) (baseball) a successful stroke in an athletic contest (especially in baseball);
"he came all the way around on Williams' hit", 2) the act of contacting one thing with anotits;
"repeated hitting raised a large bruise"; "after three misses she finally got a hit" [syn: hitting,
striking], 3) a conspicuous success; "that song was his first hit and marked the beginning of his
career"; "that new Broadway show is a real smasits"
</pre>
<pre> &lt;pragma_&gt; dict -n 4 hit
&lt;PBot&gt; hit: n: 4) (physics) an brief event in which two or more bodies come togetits; "the collision of the
particles resulted in an exchange of energy and a change of direction" [syn: collision], 5) a dose
of a narcotic drug, 6) a murder carried out by an underworld syndicate; "it has all the earmarks of
a Mafia hit", 7) a connection made via the internet to anotits website; "WordNet gets many hits from
users worldwide"
</pre>
<pre> &lt;pragma_&gt; dict -t v hit
&lt;PBot&gt; hit: v: 1) cause to move by striking; "hit a ball", 2) hit against; come into sudden contact with;
"The car hit a tree"; "He struck the table with his elbow" [syn: strike, impinge on, run into,
collide with] [ant: miss], 3) affect or afflict suddenly, usually adversely; "We were hit by really
bad weatits"; "He was stricken with cancer when he was still a teenager"; "The earthquake struck at
midnight" [syn: strike], 4) deal a blow to
</pre>
<pre> &lt;pragma_&gt; dict -search ball hit
&lt;PBot&gt; hit: n: 1) (baseball) a successful stroke in an athletic contest (especially in baseball); "he came all
the way around on Williams' hit", v: 1) cause to move by striking; "hit a ball"
</pre>
<pre> &lt;pragma_&gt; dict -d eng-fra hit
&lt;PBot&gt; hit: 1) [hit] battre, frapper, heurter frapper, heurter atteindre, frapper, parvenir, saisir
</pre>
<a name="gdict"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=76" title="Edit section: gdict">edit</a>]</span> <span class="mw-headline">gdict</span></h4>
<p>Displays dictionary definitions from <a href="http://google.com%27s/" class="external free" title="http://google.com's" rel="nofollow">http://google.com's</a> define:&lt;entry&gt; search.
</p>
<pre>Usage:&nbsp;!gdict query
</pre>
<a name="udict"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=77" title="Edit section: udict">edit</a>]</span> <span class="mw-headline">udict</span></h4>
<p>Displays dictionary definitions from <a href="http://urbandictionary.com/" class="external free" title="http://urbandictionary.com" rel="nofollow">http://urbandictionary.com</a>.
</p>
<pre>Usage:&nbsp;!udict query
</pre>
<a name="wdict"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=78" title="Edit section: wdict">edit</a>]</span> <span class="mw-headline">wdict</span></h4>
<p>Displays Wikipedia article abstracts (first paragraph). Note: case-sensitive and very picky.
</p>
<pre>Usage:&nbsp;!wdict query
</pre>
<a name="acronym"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=79" title="Edit section: acronym">edit</a>]</span> <span class="mw-headline">acronym</span></h4>
<p>Displays expanded acronyms.
</p>
<pre>Usage: &nbsp;!acronym query
Samples:
&lt;pragma_&gt;&nbsp;!acronym posix
&lt;PBot&gt; posix (3 entries): Portable Operating System for
Information Exchange, Portable Operating System Interface
Extensions (IBM), Portable Operating System Interface for
Unix
&lt;pragma_&gt;&nbsp;!acronym linux
&lt;PBot&gt; linux (1 entries): Linux Is Not UniX
</pre>
<a name="weatits"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=80" title="Edit section: weatits">edit</a>]</span> <span class="mw-headline">weatits</span></h4>
<p>Displays current conditions and forecasts. (Note: currently half-broken.)
</p>
<pre>Usage: &nbsp;!weatits zipcode or &nbsp;!weatits city, state, country
Samples:
&lt;pragma_&gt;&nbsp;!weatits chicago, il
&lt;PBot&gt; United States, Illinois, Chicago (Updated 9:53 pm CST):
Temp: 9F/-12C (Feels like: -2F/-18C), High: 9F/-12C, Low:
9F/-12C, Sky: Mostly Cloudy, Humidity: 48%, Wind: W 8 mph,
Sunrise: 7:16 am, Sunset: 4:44 pm, Tonight: Partly cloudy
skies. Cold. Low around 5F. Winds WNW at 5 to 10 mph.
</pre>
<a name="map"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=81" title="Edit section: map">edit</a>]</span> <span class="mw-headline">map</span></h4>
<p>Displays nearby locations to provided location (for use with .weatits).
</p>
<pre>Usage: &nbsp;!map zipcode or .map city, state, country
Samples:
&lt;pragma_&gt;&nbsp;!map chicago, il
&lt;PBot&gt; United States, Illinois, Chicago - Nearby Locations: Fox
Valley, Chicago/Meigs Field, Cicero, Chicago/Midway Arpt,
Berwyn, Oak Park,
</pre>
<a name="gspy"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=82" title="Edit section: gspy">edit</a>]</span> <span class="mw-headline">gspy</span></h4>
<p>Displays recent search queries for a popular search engine.
</p>
<pre>Usage: &nbsp;!gspy
Samples:
&lt;pragma_&gt;&nbsp;!gspy
&lt;PBot&gt; Recent search queries: cranberry mall, westminster,
architectural styles in glens falls, architectural styles
in glens falls, cameras, dayh-f036n090a, virgin valley art
association, spacemaker heat shield, calvinist, video
capture software, subaru wrx performance modifications
</pre>
<a name="math"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=83" title="Edit section: math">edit</a>]</span> <span class="mw-headline">math</span></h4>
<p>Extremely basic calculations.
</p>
<pre>Usage: &nbsp;!math expression
Samples:
&lt;pragma_&gt;&nbsp;!math 5 + 5
&lt;PBot&gt; 5 + 5 = 10
</pre>
<a name="compliment"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=84" title="Edit section: compliment">edit</a>]</span> <span class="mw-headline">compliment</span></h4>
<p>Displays a random Markov-chain compliment/insult.
</p>
<pre>Usage:&nbsp;!compliment [nick]
</pre>
<a name="insult"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=85" title="Edit section: insult">edit</a>]</span> <span class="mw-headline">insult</span></h4>
<p>Displays a random insult.
</p>
<pre>Usage:&nbsp;!insult [nick]
</pre>
<a name="excuse"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=86" title="Edit section: excuse">edit</a>]</span> <span class="mw-headline">excuse</span></h4>
<p>Displays a random excuse.
</p>
<pre>Usage:&nbsp;!excuse [nick]
</pre>
<a name="horoscope"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=87" title="Edit section: horoscope">edit</a>]</span> <span class="mw-headline">horoscope</span></h4>
<p>Displays a horoscope for a Zodiac sign (google this if you don't know your sign).
</p>
<pre>Usage:&nbsp;!horoscope &lt;sign&gt;
</pre>
<a name="quote"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=88" title="Edit section: quote">edit</a>]</span> <span class="mw-headline">quote</span></h4>
<p>Displays quotes from a popular quotation database. If you
use&nbsp;!quote without arguments, it returns a random quote; if you use
it
with an argument, it searches for quotes containing that text; if you
add --author &lt;name&gt; at the end, it searches for a quote by
that author; if you specify text and --author, it searches for quotes by
that author, containing that text.
</p>
<pre>Usage:&nbsp;!quote [search text] [--author &lt;author name&gt;]
Samples:
&lt;pragma_&gt;&nbsp;!quote
&lt;PBot&gt; "Each success only buys an admission ticket to a more difficult problem." -- Henry Kissinger (1923 - ). Discuss!
&lt;pragma_&gt;&nbsp;!quote --author lao tzu
&lt;PBot&gt; 41 matching quotes found. "A journey of a thousand miles begins with a single step." -- Lao-tzu (604 BC - 531 BC). Discuss!
&lt;pragma_&gt;&nbsp;!quote butterfly
&lt;PBot&gt; 11 matching quotes found. "A chinese philosopits once had a dream that he was a butterfly. From that day on, he
was never quite certain that he was not a butterfly, dreaming that he was a man." -- Unknown. Discuss!
</pre>
<a name="Informative"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=89" title="Edit section: Informative">edit</a>]</span> <span class="mw-headline">Informative</span></h3>
<a name="list"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=90" title="Edit section: list">edit</a>]</span> <span class="mw-headline">list</span></h4>
<p>Lists information about specified argument
</p>
<pre>Usage: .list &lt;modules|factoids|commands|admins&gt;
</pre>
<a name="info"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=91" title="Edit section: info">edit</a>]</span> <span class="mw-headline">info</span></h4>
<p>Shows detailed information about a module or a factoid
</p>
<pre> Usage: .info &lt;module|factoid&gt;
</pre>
<a name="version"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=92" title="Edit section: version">edit</a>]</span> <span class="mw-headline">version</span></h4>
<p>Shows version information
</p>
<a name="source"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=93" title="Edit section: source">edit</a>]</span> <span class="mw-headline">source</span></h4>
<p>Shows PBot's source information.<br>Source for PBot: <a href="http://pragma.homeip.net/stuff/scripts/pbot2.pl" class="external free" title="http://pragma.homeip.net/stuff/scripts/pbot2.pl" rel="nofollow">http://pragma.homeip.net/stuff/scripts/pbot2.pl</a>.
</p>
<a name="help"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=94" title="Edit section: help">edit</a>]</span> <span class="mw-headline">help</span></h4>
<p>Shows link to this page.
</p>
<a name="Administrative"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=95" title="Edit section: Administrative">edit</a>]</span> <span class="mw-headline">Administrative</span></h3>
<a name="login"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=96" title="Edit section: login">edit</a>]</span> <span class="mw-headline">login</span></h4>
<p>You cannot use any of the admin commands unless you login first
</p>
<pre> Usage: login &lt;password&gt;
</pre>
<p>Note that login requires that your nick and hostmask match PBot's records.
</p>
<a name="logout"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=97" title="Edit section: logout">edit</a>]</span> <span class="mw-headline">logout</span></h4>
<p>Logs out of PBot.
</p>
<a name="ignore"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=98" title="Edit section: ignore">edit</a>]</span> <span class="mw-headline">ignore</span></h4>
<p>Ignore a user
</p>
<pre>Usage: &nbsp;!ignore &lt;hostmask&gt; [channel] [timeout]
</pre>
<a name="unignore"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=99" title="Edit section: unignore">edit</a>]</span> <span class="mw-headline">unignore</span></h4>
<p>Unignores a user
</p>
<pre>Usage: &nbsp;!unignore &lt;hostmask&gt; [channel]
</pre>
<a name="ban"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=100" title="Edit section: ban">edit</a>]</span> <span class="mw-headline">ban</span></h4>
<p>Bans a user
</p>
<pre> Usage: &nbsp;!ban &lt;hostmask&gt; [timeout seconds]
</pre>
<p>If timeout is omitted, PBot will ban the user for one hour. Timeout is in seconds.
</p>
<a name="unban"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=101" title="Edit section: unban">edit</a>]</span> <span class="mw-headline">unban</span></h4>
<p>Unbans a user
</p>
<pre> Usage:
&nbsp;!unban &lt;hostmask&gt;
</pre>
<p>Note that &lt;hostmask&gt; must EXACTLY match the hostmask in the ban list for the channel.
</p>
<a name="kick"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=102" title="Edit section: kick">edit</a>]</span> <span class="mw-headline">kick</span></h4>
<p>Removes a nick from the channel
</p>
<pre> Usage: &nbsp;!kick &lt;nick&gt; &lt;reason&gt;
</pre>
<p>Must be used in the channel.
</p>
<a name="export"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=103" title="Edit section: export">edit</a>]</span> <span class="mw-headline">export</span></h4>
<p>exports specified list to web page
</p>
<pre>Usage: &nbsp;!export &lt;commands|factoids|admins|channels&gt;
</pre>
<a name="Flood_control"></a><h2><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=104" title="Edit section: Flood control">edit</a>]</span> <span class="mw-headline">Flood control</span></h2>
<p>PBot can monitor the channel for excessive rapid traffic
originating from an individual and automatically ban the offender for a
certain length of time.
</p>
<a name="Message_flood"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=105" title="Edit section: Message flood">edit</a>]</span> <span class="mw-headline">Message flood</span></h3>
<p>If four (4) or more messages are sent within ten (10) seconds, the
flood control is triggered. The offender will be quieted for 30 seconds
for the first offense. Each additional offense will result in the
offender being quieted for much longer period. For example, the first
offense will result in 30 seconds, the 2nd offense will be 5 minutes,
the 3rd will be 1 hour, and so on.
</p>
<a name="Join_flood"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=106" title="Edit section: Join flood">edit</a>]</span> <span class="mw-headline">Join flood</span></h3>
<p>If four (4) or more JOINs are observed within thirty (30) minutes <b>without any messages in between joins</b>, the offender will be forwarded to anotits channel for a limited time: 2^(number_of_offenses + 2) hours.
</p><p>In addition to private instructions from PBot, this channel
will have a /topic and ChanServ on-join message with instructions
explaining to the offender how to remove the forwarding. The
instructions are to message PBot with: unbanme &lt;channel&gt;.
</p><p>(Any messages sent to the public channel by the user at any time will reset their JOIN counter back to zero.)
</p>
<a name="Notification_message"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=107" title="Edit section: Notification message">edit</a>]</span> <span class="mw-headline">Notification message</span></h3>
<p>PBot will send the following message to the offender each offense.
</p>
<a name="Chat_flooding"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=108" title="Edit section: Chat flooding">edit</a>]</span> <span class="mw-headline">Chat flooding</span></h4>
<p>"You have been quieted due to flooding. Please use a web paste service such as <a href="http://codepad.org/" class="external free" title="http://codepad.org" rel="nofollow">http://codepad.org</a> for lengthy pastes. You will be allowed to speak again in ### seconds."
</p>
<a name="Join_flooding"></a><h4><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=109" title="Edit section: Join flooding">edit</a>]</span> <span class="mw-headline">Join flooding</span></h4>
<p>"You have been banned from $channel for $timeout due to join
flooding. If your connection issues have been resolved, or this was an
accident, you may request an unban at any time by responding to this
message with: unbanme $channel"
</p>
<a name="Opping.2FDeopping"></a><h3><span class="editsection">[<a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit&amp;section=110" title="Edit section: Opping/Deopping">edit</a>]</span> <span class="mw-headline">Opping/Deopping</span></h3>
<p>ChanServ will automagically op and deop PBot when necessary.
PBot will wait until about 5 minutes have elapsed before requesting a
deop from ChanServ.
</p>
<hr>
<p><a href="http://www.iso-9899.info/wiki/Category_IRC" title="Category IRC">Category IRC</a>
</p>
<!-- Saved in parser cache with key wikidb:pcache:idhash:935-0!1!0!!en! and timestamp 20110126001929 -->
<div class="printfooter">
Retrieved from "<a href="http://www.iso-9899.info/wiki/PBot">http://www.iso-9899.info/wiki/PBot</a>"</div>
<!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
<div id="column-one">
<div id="p-cactions" class="portlet">
<h5>Views</h5>
<div class="pBody">
<ul>
<li id="ca-nstab-main" class="selected"><a href="http://www.iso-9899.info/wiki/PBot" title="View the content page [c]" accesskey="c">Article</a></li>
<li id="ca-talk"><a href="http://www.iso-9899.info/wiki/Talk:PBot" title="Discussion about the content page [t]" accesskey="t">Discussion</a></li>
<li id="ca-edit"><a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=edit" title="You can edit this page. Please use the preview button before saving. [e]" accesskey="e">Edit</a></li>
<li id="ca-history"><a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=history" title="Past versions of this page. [h]" accesskey="h">History</a></li>
<li id="ca-unprotect"><a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=unprotect">unprotect</a></li>
<li id="ca-delete"><a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=delete" title="Delete this page [d]" accesskey="d">Delete</a></li>
<li id="ca-move"><a href="http://www.iso-9899.info/wiki/Special:Movepage/PBot" title="Move this page [m]" accesskey="m">Move</a></li>
<li id="ca-watch"><a href="http://www.iso-9899.info/wiki?title=PBot&amp;action=watch" title="Add this page to your watchlist [w]" accesskey="w">Watch</a></li>
</ul>
</div>
</div>
<div class="portlet" id="p-personal">
<h5>Personal tools</h5>
<div class="pBody">
<ul>
<li id="pt-userpage"><a href="http://www.iso-9899.info/wiki/User:Pragma" title="My user page [.]" accesskey="." class="new">Pragma</a></li>
<li id="pt-mytalk"><a href="http://www.iso-9899.info/wiki/User_talk:Pragma" title="My talk page [n]" accesskey="n">My talk</a></li>
<li id="pt-preferences"><a href="http://www.iso-9899.info/wiki/Special:Preferences" title="My preferences">My preferences</a></li>
<li id="pt-watchlist"><a href="http://www.iso-9899.info/wiki/Special:Watchlist" title="The list of pages you're monitoring for changes [l]" accesskey="l">My watchlist</a></li>
<li id="pt-mycontris"><a href="http://www.iso-9899.info/wiki/Special:Contributions/Pragma" title="List of my contributions [y]" accesskey="y">My contributions</a></li>
<li id="pt-logout"><a href="http://www.iso-9899.info/wiki?title=Special:Userlogout&amp;returnto=PBot" title="Log out">Log out</a></li>
</ul>
</div>
</div>
<div class="portlet" id="p-logo">
<a style="background-image: url(&quot;/wiki.png&quot;);" href="http://www.iso-9899.info/wiki/Main_Page" title="Visit the Main Page [z]" accesskey="z"></a>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<div class="portlet" id="p-navigation">
<h5>Navigation</h5>
<div class="pBody">
<ul>
<li id="n-mainpage"><a href="http://www.iso-9899.info/wiki/Main_Page" title="Visit the Main Page [z]" accesskey="z">Main Page</a></li>
<li id="n-portal"><a href="http://www.iso-9899.info/wiki/C:Community_Portal" title="About the project, what you can do, witse to find things">Community portal</a></li>
<li id="n-currentevents"><a href="http://www.iso-9899.info/wiki/Current_events" title="Find background information on current events">Current events</a></li>
<li id="n-recentchanges"><a href="http://www.iso-9899.info/wiki/Special:Recentchanges" title="The list of recent changes in the wiki. [r]" accesskey="r">Recent changes</a></li>
<li id="n-randompage"><a href="http://www.iso-9899.info/wiki/Special:Random" title="Load a random page [x]" accesskey="x">Random page</a></li>
<li id="n-help"><a href="http://www.iso-9899.info/wiki/Help:Contents" title="The place to find out.">Help</a></li>
</ul>
</div>
</div>
<div id="p-search" class="portlet">
<h5><label for="searchInput">Search</label></h5>
<div id="searchBody" class="pBody">
<form action="/wiki/Special:Search" id="searchform"><div>
<input id="searchInput" name="search" title="Search C [f]" accesskey="f" type="text">
<input name="go" class="searchButton" id="searchGoButton" value="Go" type="submit">&nbsp;
<input name="fulltext" class="searchButton" id="mw-searchButton" value="Search" type="submit">
</div></form>
</div>
</div>
<div class="portlet" id="p-tb">
<h5>Toolbox</h5>
<div class="pBody">
<ul>
<li id="t-whatlinksitse"><a href="http://www.iso-9899.info/wiki/Special:Whatlinksitse/PBot" title="List of all wiki pages that link itse [j]" accesskey="j">What links itse</a></li>
<li id="t-recentchangeslinked"><a href="http://www.iso-9899.info/wiki/Special:Recentchangeslinked/PBot" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
<li id="t-specialpages"><a href="http://www.iso-9899.info/wiki/Special:Specialpages" title="List of all special pages [q]" accesskey="q">Special pages</a></li>
<li id="t-print"><a href="http://www.iso-9899.info/wiki?title=PBot&amp;printable=yes" title="Printable version of this page [p]" accesskey="p">Printable version</a></li> <li id="t-permalink"><a href="http://www.iso-9899.info/wiki?title=PBot&amp;oldid=8668" title="Permanent link to this version of the page">Permanent link</a></li> </ul>
</div>
</div>
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
<div id="footer">
<div id="f-poweredbyico"><a href="http://www.mediawiki.org/"><img src="PBot_files/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki"></a></div>
<ul id="f-list">
<li id="lastmod"> This page was last modified 00:13, 26 January 2011.</li>
<li id="viewcount">This page has been accessed 10,018 times.</li>
<li id="privacy"><a href="http://www.iso-9899.info/wiki/C:Privacy_policy" title="C:Privacy policy">Privacy policy</a></li>
<li id="about"><a href="http://www.iso-9899.info/wiki/C:About" title="C:About">About C</a></li>
<li id="disclaimer"><a href="http://www.iso-9899.info/wiki/C:General_disclaimer" title="C:General disclaimer">Disclaimers</a></li>
</ul>
</div>
<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>
<!-- Served in 0.191 secs. --></body></html>