mirror of
				https://github.com/pragma-/pbot.git
				synced 2025-10-30 22:27:24 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			1559 lines
		
	
	
		
			95 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1559 lines
		
	
	
		
			95 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 | |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en"><head>
 | |
| 		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | |
| 	</head>
 | |
| <body class="mediawiki ns-0 ltr page-Candide">
 | |
| 	<div id="globalWrapper">
 | |
| 		<div id="column-content">
 | |
| 	<div id="content">
 | |
| 		<a name="top" id="top"></a>
 | |
| 				<h1 class="firstHeading">Candide</h1>
 | |
| 		<div id="bodyContent">
 | |
|                   <table id="toc" class="toc" summary="Contents"><tbody><tr><td><div id="toctitle"><h2>Contents</h2> </div>
 | |
| <ul>
 | |
| <li class="toclevel-1"><a href="#Candide"><span class="tocnumber">1</span> <span class="toctext">Candide</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-2"><a href="#About_Candide"><span class="tocnumber">1.1</span> <span class="toctext">About Candide</span></a></li>
 | |
| <li class="toclevel-2"><a href="#Trigger"><span class="tocnumber">1.2</span> <span class="toctext">Trigger</span></a></li>
 | |
| <li class="toclevel-2"><a href="#Source"><span class="tocnumber">1.3</span> <span class="toctext">Source</span></a></li>
 | |
| <li class="toclevel-2"><a href="#Bot_Channel"><span class="tocnumber">1.4</span> <span class="toctext">Bot Channel</span></a></li>
 | |
| <li class="toclevel-2"><a href="#Directing_output_to_a_user"><span class="tocnumber">1.5</span> <span class="toctext">Directing output to a user</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-3"><a href="#tell"><span class="tocnumber">1.5.1</span> <span class="toctext">tell</span></a></li>
 | |
| </ul>
 | |
| </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>
 | |
| <ul>
 | |
| <li class="toclevel-3"><a href="#Channel_namespaces"><span class="tocnumber">2.1.1</span> <span class="toctext">Channel namespaces</span></a></li>
 | |
| </ul>
 | |
| </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="#Special_commands"><span class="tocnumber">2.2.2</span> <span class="toctext">Special commands</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-4"><a href="#.2Fsay"><span class="tocnumber">2.2.2.1</span> <span class="toctext">/say</span></a></li>
 | |
| <li class="toclevel-4"><a href="#.2Fme"><span class="tocnumber">2.2.2.2</span> <span class="toctext">/me</span></a></li>
 | |
| <li class="toclevel-4"><a href="#.2Fcall"><span class="tocnumber">2.2.2.3</span> <span class="toctext">/call</span></a></li>
 | |
| <li class="toclevel-4"><a href="#.2Fmsg"><span class="tocnumber">2.2.2.4</span> <span class="toctext">/msg</span></a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li class="toclevel-3"><a href="#Special_variables"><span class="tocnumber">2.2.3</span> <span class="toctext">Special variables</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-4"><a href="#.24nick"><span class="tocnumber">2.2.3.1</span> <span class="toctext">$nick</span></a></li>
 | |
| <li class="toclevel-4"><a href="#.24args"><span class="tocnumber">2.2.3.2</span> <span class="toctext">$args</span></a></li>
 | |
| <li class="toclevel-4"><a href="#.24channel"><span class="tocnumber">2.2.3.3</span> <span class="toctext">$channel</span></a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li class="toclevel-3"><a href="#adlib_list_variables"><span class="tocnumber">2.2.4</span> <span class="toctext">adlib list variables</span></a></li>
 | |
| <li class="toclevel-3"><a href="#action_with_args"><span class="tocnumber">2.2.5</span> <span class="toctext">action_with_args</span></a></li>
 | |
| <li class="toclevel-3"><a href="#add_nick"><span class="tocnumber">2.2.6</span> <span class="toctext">add_nick</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_another_channel.27s_factoid"><span class="tocnumber">2.5</span> <span class="toctext">Viewing/triggering another 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="#top20"><span class="tocnumber">2.9.6</span> <span class="toctext">top20</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="#recall"><span class="tocnumber">3.1.3</span> <span class="toctext">recall</span></a></li>
 | |
| <li class="toclevel-3"><a href="#getq"><span class="tocnumber">3.1.4</span> <span class="toctext">getq</span></a></li>
 | |
| <li class="toclevel-3"><a href="#rq"><span class="tocnumber">3.1.5</span> <span class="toctext">rq</span></a></li>
 | |
| <li class="toclevel-3"><a href="#delq"><span class="tocnumber">3.1.6</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="#.7B.7D"><span class="tocnumber">3.2.1</span> <span class="toctext">{}</span></a></li>
 | |
| <li class="toclevel-3"><a href="#cc"><span class="tocnumber">3.2.2</span> <span class="toctext">cc</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-4"><a href="#Usage"><span class="tocnumber">3.2.2.1</span> <span class="toctext">Usage</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Supported_Languages"><span class="tocnumber">3.2.2.2</span> <span class="toctext">Supported Languages</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Default_Language"><span class="tocnumber">3.2.2.3</span> <span class="toctext">Default Language</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Disallowed_system_calls"><span class="tocnumber">3.2.2.4</span> <span class="toctext">Disallowed system calls</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Program_termination_with_no_output"><span class="tocnumber">3.2.2.5</span> <span class="toctext">Program termination with no output</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Abnormal_program_termination"><span class="tocnumber">3.2.2.6</span> <span class="toctext">Abnormal program termination</span></a></li>
 | |
| <li class="toclevel-4"><a href="#C_and_C.2B.2B_Functionality"><span class="tocnumber">3.2.2.7</span> <span class="toctext">C and C++ Functionality</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Using_the_preprocessor"><span class="tocnumber">3.2.2.8</span> <span class="toctext">Using the preprocessor</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-5"><a href="#Default_.23includes"><span class="tocnumber">3.2.2.8.1</span> <span class="toctext">Default #includes</span></a></li>
 | |
| <li class="toclevel-5"><a href="#Using_.23include"><span class="tocnumber">3.2.2.8.2</span> <span class="toctext">Using #include</span></a></li>
 | |
| <li class="toclevel-5"><a href="#Using_.23define"><span class="tocnumber">3.2.2.8.3</span> <span class="toctext">Using #define</span></a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li class="toclevel-4"><a href="#main.28.29_Function_Unnecessary"><span class="tocnumber">3.2.2.9</span> <span class="toctext">main() Function Unnecessary</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Embedding_Newlines"><span class="tocnumber">3.2.2.10</span> <span class="toctext">Embedding Newlines</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Printing_in_binary.2Fbase2"><span class="tocnumber">3.2.2.11</span> <span class="toctext">Printing in binary/base2</span></a></li>
 | |
| <li class="toclevel-4"><a href="#Using_the_GDB_debugger"><span class="tocnumber">3.2.2.12</span> <span class="toctext">Using the GDB debugger</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-5"><a href="#print"><span class="tocnumber">3.2.2.12.1</span> <span class="toctext">print</span></a></li>
 | |
| <li class="toclevel-5"><a href="#ptype"><span class="tocnumber">3.2.2.12.2</span> <span class="toctext">ptype</span></a></li>
 | |
| <li class="toclevel-5"><a href="#watch"><span class="tocnumber">3.2.2.12.3</span> <span class="toctext">watch</span></a></li>
 | |
| <li class="toclevel-5"><a href="#trace"><span class="tocnumber">3.2.2.12.4</span> <span class="toctext">trace</span></a></li>
 | |
| <li class="toclevel-5"><a href="#gdb"><span class="tocnumber">3.2.2.12.5</span> <span class="toctext">gdb</span></a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li class="toclevel-4"><a href="#Interactive_Editing"><span class="tocnumber">3.2.2.13</span> <span class="toctext">Interactive Editing</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-5"><a href="#copy"><span class="tocnumber">3.2.2.13.1</span> <span class="toctext">copy</span></a></li>
 | |
| <li class="toclevel-5"><a href="#show"><span class="tocnumber">3.2.2.13.2</span> <span class="toctext">show</span></a></li>
 | |
| <li class="toclevel-5"><a href="#diff"><span class="tocnumber">3.2.2.13.3</span> <span class="toctext">diff</span></a></li>
 | |
| <li class="toclevel-5"><a href="#paste"><span class="tocnumber">3.2.2.13.4</span> <span class="toctext">paste</span></a></li>
 | |
| <li class="toclevel-5"><a href="#run"><span class="tocnumber">3.2.2.13.5</span> <span class="toctext">run</span></a></li>
 | |
| <li class="toclevel-5"><a href="#undo"><span class="tocnumber">3.2.2.13.6</span> <span class="toctext">undo</span></a></li>
 | |
| <li class="toclevel-5"><a href="#s.2F.2F"><span class="tocnumber">3.2.2.13.7</span> <span class="toctext">s//</span></a></li>
 | |
| <li class="toclevel-5"><a href="#replace"><span class="tocnumber">3.2.2.13.8</span> <span class="toctext">replace</span></a></li>
 | |
| <li class="toclevel-5"><a href="#prepend"><span class="tocnumber">3.2.2.13.9</span> <span class="toctext">prepend</span></a></li>
 | |
| <li class="toclevel-5"><a href="#append"><span class="tocnumber">3.2.2.13.10</span> <span class="toctext">append</span></a></li>
 | |
| <li class="toclevel-5"><a href="#remove"><span class="tocnumber">3.2.2.13.11</span> <span class="toctext">remove</span></a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li class="toclevel-4"><a href="#Some_Examples"><span class="tocnumber">3.2.2.14</span> <span class="toctext">Some Examples</span></a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li class="toclevel-3"><a href="#english"><span class="tocnumber">3.2.3</span> <span class="toctext">english</span></a></li>
 | |
| <li class="toclevel-3"><a href="#expand"><span class="tocnumber">3.2.4</span> <span class="toctext">expand</span></a></li>
 | |
| <li class="toclevel-3"><a href="#prec"><span class="tocnumber">3.2.5</span> <span class="toctext">prec</span></a></li>
 | |
| <li class="toclevel-3"><a href="#paren"><span class="tocnumber">3.2.6</span> <span class="toctext">paren</span></a></li>
 | |
| <li class="toclevel-3"><a href="#faq"><span class="tocnumber">3.2.7</span> <span class="toctext">faq</span></a></li>
 | |
| <li class="toclevel-3"><a href="#c99std"><span class="tocnumber">3.2.8</span> <span class="toctext">c99std</span></a></li>
 | |
| <li class="toclevel-3"><a href="#c11std"><span class="tocnumber">3.2.9</span> <span class="toctext">c11std</span></a></li>
 | |
| <li class="toclevel-3"><a href="#man"><span class="tocnumber">3.2.10</span> <span class="toctext">man</span></a></li>
 | |
| <li class="toclevel-3"><a href="#google"><span class="tocnumber">3.2.11</span> <span class="toctext">google</span></a></li>
 | |
| <li class="toclevel-3"><a href="#define"><span class="tocnumber">3.2.12</span> <span class="toctext">define</span></a></li>
 | |
| <li class="toclevel-3"><a href="#dict"><span class="tocnumber">3.2.13</span> <span class="toctext">dict</span></a></li>
 | |
| <li class="toclevel-3"><a href="#foldoc"><span class="tocnumber">3.2.14</span> <span class="toctext">foldoc</span></a></li>
 | |
| <li class="toclevel-3"><a href="#vera"><span class="tocnumber">3.2.15</span> <span class="toctext">vera</span></a></li>
 | |
| <li class="toclevel-3"><a href="#udict"><span class="tocnumber">3.2.16</span> <span class="toctext">udict</span></a></li>
 | |
| <li class="toclevel-3"><a href="#wdict"><span class="tocnumber">3.2.17</span> <span class="toctext">wdict</span></a></li>
 | |
| <li class="toclevel-3"><a href="#acronym"><span class="tocnumber">3.2.18</span> <span class="toctext">acronym</span></a></li>
 | |
| <li class="toclevel-3"><a href="#math"><span class="tocnumber">3.2.19</span> <span class="toctext">math</span></a></li>
 | |
| <li class="toclevel-3"><a href="#compliment"><span class="tocnumber">3.2.20</span> <span class="toctext">compliment</span></a></li>
 | |
| <li class="toclevel-3"><a href="#insult"><span class="tocnumber">3.2.21</span> <span class="toctext">insult</span></a></li>
 | |
| <li class="toclevel-3"><a href="#excuse"><span class="tocnumber">3.2.22</span> <span class="toctext">excuse</span></a></li>
 | |
| <li class="toclevel-3"><a href="#horoscope"><span class="tocnumber">3.2.23</span> <span class="toctext">horoscope</span></a></li>
 | |
| <li class="toclevel-3"><a href="#horrorscope"><span class="tocnumber">3.2.24</span> <span class="toctext">horrorscope</span></a></li>
 | |
| <li class="toclevel-3"><a href="#quote"><span class="tocnumber">3.2.25</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>
 | |
| <li class="toclevel-2"><a href="#.23.23c"><span class="tocnumber">3.5</span> <span class="toctext">##c</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-3"><a href="#C-Aphorisms"><span class="tocnumber">3.5.1</span> <span class="toctext">C-Aphorisms</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="#Enter_key_abuse"><span class="tocnumber">4.3</span> <span class="toctext">Enter key abuse</span></a></li>
 | |
| <li class="toclevel-2"><a href="#Notification_message"><span class="tocnumber">4.4</span> <span class="toctext">Notification message</span></a>
 | |
| <ul>
 | |
| <li class="toclevel-3"><a href="#Message_flooding"><span class="tocnumber">4.4.1</span> <span class="toctext">Message flooding</span></a></li>
 | |
| <li class="toclevel-3"><a href="#Join_flooding"><span class="tocnumber">4.4.2</span> <span class="toctext">Join flooding</span></a></li>
 | |
| <li class="toclevel-3"><a href="#Enter_key_abuse_2"><span class="tocnumber">4.4.3</span> <span class="toctext">Enter key abuse</span></a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li class="toclevel-2"><a href="#Opping.2FDeopping"><span class="tocnumber">4.5</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="Candide"></a><h2> <span class="mw-headline">Candide</span></h2>
 | |
| <a name="About_Candide"></a><h3> <span class="mw-headline">About Candide</span></h3>
 | |
| <p>Candide is an IRC bot written in Perl in pragma_'s spare time.
 | |
| </p>
 | |
| <a name="Trigger"></a><h3> <span class="mw-headline">Trigger</span></h3>
 | |
| <p>All of <b>candide'</b>s commands may begin with its name or its trigger, or be followed by its name.
 | |
| </p><p>The trigger character defaults to exclaimation mark [!]; <b>the freenode instance uses a comma [,]</b>.
 | |
| </p><p>Note that commands need not be submitted to the channel; you can /msg it instead.  If you /msg <b>candide</b>,
 | |
|  it will respond with a private message in return.  In private message, 
 | |
| you do not need to specify its name or one of the trigger symbols.
 | |
| </p>
 | |
| <pre>Examples:
 | |
|  <pragma_> !hi (or ,hi if on freenode)
 | |
|  <pragma_> hi, candide
 | |
|  <pragma_> candide: hi
 | |
| </pre>
 | |
| <a name="Source"></a><h3> <span class="mw-headline">Source</span></h3>
 | |
| <p>Candide'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/" class="external free" title="http://code.google.com/p/pbot2-pl/source/browse/#svn/trunk/" rel="nofollow">http://code.google.com/p/pbot2-pl/source/browse/#svn/trunk/</a>.<br>
 | |
| The URL for the source of any loaded modules may be found by using the <a href="#factinfo" title="">factinfo</a> command:
 | |
| </p>
 | |
| <pre> <pragma_> factinfo ##c faq
 | |
|  <candide> faq: Module loaded by pragma_ on Fri Dec 31 02:34:04 2004 -> 
 | |
|            <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="Bot_Channel"></a><h3> <span class="mw-headline">Bot Channel</span></h3>
 | |
| <p>You may test/play with the bot in the #pbot2 channel on irc.freenode.net.
 | |
| </p>
 | |
| <a name="Directing_output_to_a_user"></a><h3> <span class="mw-headline">Directing output to a user</span></h3>
 | |
| <p>You may direct candide to prepend the nickname of a specific person 
 | |
| to a factoid in the channel by stating the nickname after the factoid 
 | |
| (if the factoid doesn't take arguments):
 | |
| </p>
 | |
| <pre> <pragma_> candide: version defrost
 | |
|  <candide> defrost: PBot revision 387 2012-10-07
 | |
| </pre>
 | |
| <a name="tell"></a><h5> <span class="mw-headline">tell</span></h5>
 | |
| <p>You may also use the `tell <nick> about <command>` syntax (which is necessary if the factoid does take arguments):
 | |
| </p>
 | |
| <pre> <pragma_> candide: tell defrost about help cc
 | |
|  <candide> defrost: To learn all about cc, see <a href="http://www.iso-9899.info/wiki/Candide#cc" class="external free" title="http://www.iso-9899.info/wiki/Candide#cc" rel="nofollow">http://www.iso-9899.info/wiki/Candide#cc</a>
 | |
| </pre>
 | |
| <a name="Factoids"></a><h2> <span class="mw-headline">Factoids</span></h2>
 | |
| <a name="List_of_factoids"></a><h3> <span class="mw-headline">List of factoids</span></h3>
 | |
| <p>The most recent exported list of factoids can be found here:
 | |
| <a href="http://www.iso-9899.info/candide/factoids.html" class="external free" title="http://www.iso-9899.info/candide/factoids.html" rel="nofollow">http://www.iso-9899.info/candide/factoids.html</a>.
 | |
| </p>
 | |
| <a name="Channel_namespaces"></a><h4> <span class="mw-headline">Channel namespaces</span></h4>
 | |
| <p>Factoids added in one channel may be called/triggered in another 
 | |
| channel or in private message, providing that the other channel doesn't 
 | |
| already have a factoid of the same name.
 | |
| </p><p>Factoids may also 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 other 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; otherwise, the latter 'malloc' 
 | |
| will be triggered if the factoid were triggered in another channel.  
 | |
| </p><p>Similiarily, if there were no 'malloc' factoid in the .* 
 | |
| namespace, but only in ##c and you attempted to use this factoid in a 
 | |
| channel other than ##c, that channel will invoke ##c's version of 
 | |
| 'malloc', providing that channel doesn't have its own 'malloc' factoid.
 | |
| </p><p>Likewise, if there 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><p>However, if you are in a channel that doesn't have a 'malloc' 
 | |
| factoid and there is no 'malloc' factoid in the global .* channel, and 
 | |
| you attempt to call 'malloc' then the bot will display a message 
 | |
| notifying you that 'malloc' is ambiguous and which channels it belongs 
 | |
| to so that you may use the <a href="#fact" title="">fact</a> command to call the correct factoid.
 | |
| </p>
 | |
| <a name="Adding_a_factoid"></a><h3> <span class="mw-headline">Adding a factoid</span></h3>
 | |
| <p>There are two ways to add a factoid.  The first is:
 | |
| </p>
 | |
| <pre>  <factoid> is <description>
 | |
| </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.</font></b>
 | |
| </p>
 | |
| <a name="factadd"></a><h4> <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>  factadd <channel> <keyword> is <description>
 | |
| </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>  <pragma_> factadd ##c c is /say C rocks!
 | |
|   <pragma_> c is /say C rocks!
 | |
| </pre>
 | |
| <a name="Special_commands"></a><h4> <span class="mw-headline">Special commands</span></h4>
 | |
| <a name=".2Fsay"></a><h5> <span class="mw-headline">/say</span></h5>
 | |
| <p>If a factoid begins with "/say " then candide will not use
 | |
| the "<factoid> is <description>" format when displaying the
 | |
| factoid.  
 | |
| </p>
 | |
| <pre> Example:
 | |
|    <pragma_> hi is /say Well, hello there, $nick.
 | |
|    <candide> 'hi' added.
 | |
|    <prec> candide, hi
 | |
|    <candide> Well, hello there, prec.
 | |
| </pre>
 | |
| <a name=".2Fme"></a><h5> <span class="mw-headline">/me</span></h5>
 | |
| <p>If a factoid begins with "/me " then candide will ACTION the factoid.
 | |
| </p>
 | |
| <pre> Example:
 | |
|    <pragma_> bounce is /me bounces around.
 | |
|    <candide> 'bounce' added.
 | |
|    <pragma_> bounce
 | |
|    *candide bounces around.
 | |
| </pre>
 | |
| <a name=".2Fcall"></a><h5> <span class="mw-headline">/call</span></h5>
 | |
| <p>If a factoid begins with "/call " then candide will call an existing command.
 | |
| </p>
 | |
| <pre> Example:
 | |
|    <pragma_> boing is /call bounce
 | |
|    <candide> 'boing' added.
 | |
|    <pragma_> boing
 | |
|    *candide bounces around.
 | |
| </pre>
 | |
| <a name=".2Fmsg"></a><h5> <span class="mw-headline">/msg</span></h5>
 | |
| <p>If a factoid begins with "/msg <nick> " then candide will /MSG the factoid
 | |
| text to <nick>
 | |
| </p>
 | |
| <a name="Special_variables"></a><h4> <span class="mw-headline">Special variables</span></h4>
 | |
| <p>Currently there are three special variables:
 | |
| </p>
 | |
| <a name=".24nick"></a><h5> <span class="mw-headline">$nick</span></h5>
 | |
| <pre> $nick:  expands to the nick of the caller
 | |
| </pre>
 | |
| <a name=".24args"></a><h5> <span class="mw-headline">$args</span></h5>
 | |
| <pre> $args:  expands to any text following the keyword
 | |
| </pre>
 | |
| <a name=".24channel"></a><h5> <span class="mw-headline">$channel</span></h5>
 | |
| <pre> $channel:  expands to the name of the channel in which the command is used
 | |
| </pre>
 | |
| <a name="adlib_list_variables"></a><h4> <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:
 | |
|    <pragma_> colors is red green blue "bright yellow" pink "dark purple" orange
 | |
|    <candide> 'colors' added
 | |
| </pre>
 | |
| <p>Then you can instruct candide to pick a random word from this list to use in another factoid by 
 | |
| inserting the list as a variable.
 | |
| </p>
 | |
| <pre> Example:
 | |
|    <pragma_> sky is /say The sky is $colors.
 | |
|    <candide> 'sky' added.
 | |
|    <pragma_> sky
 | |
|    <candide> The sky is dark purple.
 | |
|    <pragma_> sky
 | |
|    <candide> The sky is green.
 | |
| </pre>
 | |
| <p>A practical example, creating the RTFM trigger:
 | |
| </p>
 | |
| <pre> <pragma_> sizes is big large tiny small huge gigantic teeny
 | |
|  <candide> 'sizes' added.
 | |
|  <pragma_> attacks is whaps thwacks bashes smacks punts whacks
 | |
|  <candide> 'attacks' added.
 | |
|  <pragma_> rtfm is /me $attacks $args with a $sizes $colors manual.
 | |
|  <candide> 'rtfm' added.
 | |
|  <pragma_> rtfm mauke
 | |
|  * candide thwacks mauke with a big red manual.
 | |
| </pre>
 | |
| <a name="action_with_args"></a><h4> <span class="mw-headline">action_with_args</span></h4>
 | |
| <p>You can use the <a href="#factset" title="">factset</a> command to 
 | |
| set a special factoid meta-data key named "action_with_args" to trigger 
 | |
| an alternate message if an argument has been supplied.
 | |
| </p>
 | |
| <pre> Example:
 | |
|    <pragma_> snack is /me eats a cookie.
 | |
|    <candide> 'snack' added.
 | |
|    <pragma_> factset #channel snack action_with_args /me gives $args a cookie.
 | |
|    <candide> [Factoids] (#channel) snack: 'action_with_args' set to '/me gives $args a cookie.'
 | |
|    <pragma_> snack
 | |
|    * candide eats a cookie.
 | |
|    <pragma_> snack orbitz
 | |
|    * candide gives orbitz a cookie.
 | |
| </pre>
 | |
| <a name="add_nick"></a><h4> <span class="mw-headline">add_nick</span></h4>
 | |
| <p>You can use the <a href="#factset" title="">factset</a> command to 
 | |
| set a special factoid meta-data key named "add_nick" to prepend the nick
 | |
|  of the caller to the output.  This is mostly useful for modules.
 | |
| </p>
 | |
| <a name="Deleting_a_factoid"></a><h3> <span class="mw-headline">Deleting a factoid</span></h3>
 | |
| <a name="factrem"></a><h4> <span class="mw-headline">factrem</span></h4>
 | |
| <a name="forget"></a><h4> <span class="mw-headline">forget</span></h4>
 | |
| <p>To remove a factoid, use the factrem or forget command.  The syntax is:
 | |
| </p>
 | |
| <pre> factrem <channel> <keyword>
 | |
|  forget <channel> <keyword>
 | |
| </pre>
 | |
| <a name="Viewing.2Ftriggering_a_factoid"></a><h3> <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>  <pragma_> candide, c?
 | |
|   <candide> C rocks!
 | |
| </pre>
 | |
| <a name="Viewing.2Ftriggering_another_channel.27s_factoid"></a><h3> <span class="mw-headline">Viewing/triggering another channel's factoid</span></h3>
 | |
| <a name="fact"></a><h4> <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> fact <channel> <keyword> [arguments]
 | |
| </pre>
 | |
| <a name="Aliasing_a_factoid"></a><h3> <span class="mw-headline">Aliasing a factoid</span></h3>
 | |
| <a name="factalias"></a><h4> <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 '<alias> is /call <command>'.
 | |
| </p>
 | |
| <pre> <newalias> is /call <command>
 | |
| </pre>
 | |
| <p>The syntax for 'factalias' is:
 | |
| </p>
 | |
| <pre> factalias <channel> <new keyword> <command>
 | |
| </pre>
 | |
| <pre> Example:
 | |
|    <pragma_> book is /me points accusingly at $args, "Where is your book?!"
 | |
|    <candide> 'book' added.
 | |
|    <pragma_> book newbie
 | |
|    *candide points accusingly at newbie, "Where is your book?!"
 | |
|    <pragma_> rafb is /call book
 | |
|    <candide> 'rafb' added.
 | |
|    <pragma_> rafb runtime
 | |
|    *candide points accusingly at runtime, "Where is your book?!"
 | |
| </pre>
 | |
| <pre> Another example:
 | |
|    <pragma_> offtopic is /say In this channel, '$args' is off-topic.
 | |
|    <pragma_> offtopic C++
 | |
|    <candide> In this channel, 'C++' is off-topic.
 | |
|    <pragma_> factalias ##c C++ offtopic C++ <i>(or: C++ is /call offtopic C++)</i>
 | |
|    <pragma_> C++
 | |
|    <candide> In this channel, 'C++' is off-topic.
 | |
| </pre>
 | |
| <a name="Changing_a_factoid"></a><h3> <span class="mw-headline">Changing a factoid</span></h3>
 | |
| <a name="factchange"></a><h4> <span class="mw-headline">factchange</span></h4>
 | |
| <p>To change a factoid, use the 'factchange' command:
 | |
| </p>
 | |
| <pre> Usage:  factchange <channel> <keyword> s/<pattern>/<change to>/<br>
 | |
|   <pragma_> c
 | |
|   <candide> C rocks!
 | |
|   <pragma_> factchange ##c c s/rocks/rules/
 | |
|   <candide> c changed.
 | |
|   <pragma_> c
 | |
|   <candide> C rules!
 | |
| </pre>
 | |
| <p>Note that the final argument is a Perl-style substitution 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>  <pragma_> candide, 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>
 | |
|   <candide> Changed: c is /say C rules! ; 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="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 <channel> <factoid> [<key> [value]]
 | |
| </pre>
 | |
| <p>Omit <key> and <value> to list all the keys and values 
 | |
| for a factoid.  Specify <key>, but omit <value> to see the 
 | |
| value for a specific key.
 | |
| </p>
 | |
| <a name="factunset"></a><h4> <span class="mw-headline">factunset</span></h4>
 | |
| <p>To unset factoid meta-data, use the 'factunset' command.
 | |
| </p>
 | |
| <pre> Usage: factunset <channel> <factoid> <key>
 | |
| </pre>
 | |
| <a name="Finding_a_factoid"></a><h3> <span class="mw-headline">Finding a factoid</span></h3>
 | |
| <a name="factfind"></a><h4> <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 whether to narrow by channel and/or include factoid owner and/or last referenced by in the search.
 | |
| </p><p>If there is only one match for the query, it will display that factoid, otherwise it will list all matches.
 | |
| </p>
 | |
| <pre>Usage: factfind [-channel channel] [-owner nick] [-by nick] [text]
 | |
| Example:
 | |
|  <pragma_> candide, factfind cast
 | |
|  <candide> 3 factoids match: [##c] NULL casting dontcastmalloc
 | |
| </pre>
 | |
| <a name="Information_about_a_factoid"></a><h3> <span class="mw-headline">Information about a factoid</span></h3>
 | |
| <a name="factinfo"></a><h4> <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> factinfo <channel> <keyword>
 | |
| </pre>
 | |
| <pre> <pragma_> candide, factinfo ##c NULL
 | |
|  <candide> 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'.  Otherwise,
 | |
| it will be shown as 'submitted for #channel'.
 | |
| </p>
 | |
| <a name="factshow"></a><h4> <span class="mw-headline">factshow</span></h4>
 | |
| <p>To see the factoid string literal, use the 'factshow' command:
 | |
| </p>
 | |
| <pre> factshow <channel> <keyword>
 | |
| </pre>
 | |
| <pre> <pragma_> factshow ##c hi
 | |
|  <candide> hi: /say $greetings, $nick.
 | |
| </pre>
 | |
| <a name="factset_2"></a><h4> <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 <channel> <factoid> [<key> [value]]
 | |
| </pre>
 | |
| <p>Omit <key> and <value> to list all the keys and values 
 | |
| for a factoid.  Specify <key>, but omit <value> to see the 
 | |
| value for a specific key.
 | |
| </p>
 | |
| <a name="count"></a><h4> <span class="mw-headline">count</span></h4>
 | |
| <p>To see how many factoids and what percentage of the database <nick> has submitted, use the 'count' command:
 | |
| </p>
 | |
| <pre> <pragma_> count prec
 | |
|  <candide> prec has submitted 28 factoids out of 233 (12%)
 | |
|  <pragma_> count twkm
 | |
|  <candide> twkm has submitted 74 factoids out of 233 (31%)
 | |
|  <pragma_> count pragma
 | |
|  <candide> pragma has submitted 27 factoids out of 233 (11%)
 | |
| </pre>
 | |
| <a name="histogram"></a><h4> <span class="mw-headline">histogram</span></h4>
 | |
| <p>To see a histogram of the top 10 factoid submitters, use the 'histogram' command:
 | |
| </p>
 | |
| <pre> <pragma_> histogram
 | |
|  <candide> 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="top20"></a><h4> <span class="mw-headline">top20</span></h4>
 | |
| <p>To see the top 20 most popular factoids, use the 'top20' command.
 | |
| </p>
 | |
| <a name="Commands"></a><h2> <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="mw-headline">Quotegrabs</span></h3>
 | |
| <a name="Table_of_quotegrabs"></a><h4> <span class="mw-headline">Table of quotegrabs</span></h4>
 | |
| <p>A table of grabbed quotes can be found here: <a href="http://www.iso-9899.info/candide/quotegrabs.html" class="external free" title="http://www.iso-9899.info/candide/quotegrabs.html" rel="nofollow">http://www.iso-9899.info/candide/quotegrabs.html</a>
 | |
| </p>
 | |
| <a name="grab"></a><h4> <span class="mw-headline">grab</span></h4>
 | |
| <p>Grabs a message someone says, and adds it to the quotegrabs database.
 | |
|   You may grab multiple nicks/messages in one quotegrab by separating 
 | |
| the arguments with a plus sign (the nicks need not be different -- you 
 | |
| can grab multiple messages by the same nick by specifying a different 
 | |
| history for each grab).
 | |
| </p><p>You can use the <a href="#recall" title="">recall</a> command to test the arguments before grabbing (please use a private message).
 | |
| </p>
 | |
| <pre>Usage: grab <nick> [history [channel]]
 | |
|          where [history] is an optional argument that is an integral index into the recent messages OR a regular expression used to search message contents;
 | |
|          e.g., to grab the 3rd most recent message for nick, use: grab nick 3
 | |
|          OR to grab a message containing the text "pizza", use: grab nick pizza
 | |
| </pre>
 | |
| <pre>Examples:
 | |
| </pre>
 | |
| <pre>   <bob> Clowns are scary.
 | |
|    <pragma-> grab bob clowns
 | |
|    <candide> Quote grabbed: 1: <bob> Clowns are scary.
 | |
| </pre>
 | |
| <pre>   <alice> Please put that in the right place.
 | |
|    <bob> That's what she said!
 | |
|    <pragma-> grab alice place + bob said
 | |
|    <candide> Quote grabbed 2: <alice> Please put that in the right place. <bob> That's what she said!
 | |
| </pre>
 | |
| <pre>   <charlie> I know a funny programming knock-knock joke.  
 | |
|    <charlie> Knock knock!
 | |
|    <charlie> Race condition.
 | |
|    <charlie> Who's there?
 | |
|    <pragma-> grab charlie knock + charlie race + charlie there
 | |
|    <candide> Quote grabbed 3: <charlie> Knock knock! <charlie> Race condition. <charlie> Who's there?
 | |
| </pre>
 | |
| <a name="recall"></a><h4> <span class="mw-headline">recall</span></h4>
 | |
| <p>Recalls messages from the chat history and displays them with a relative time-stamp.
 | |
| </p><p>Usage is identical to <a href="#grab" title="">grab</a>.
 | |
| </p>
 | |
| <pre> <pragma-> recall alice + bob
 | |
|  <candide> [20 seconds ago] <alice> Please put that in the right place. [8 seconds ago] <bob> That's what she said!
 | |
| </pre>
 | |
| <a name="getq"></a><h4> <span class="mw-headline">getq</span></h4>
 | |
| <p>Retrieves and displays a specific grabbed quote from the quotegrabs database.
 | |
| </p>
 | |
| <pre>Usage: getq <quote-id>
 | |
| </pre>
 | |
| <a name="rq"></a><h4> <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: rq [nick regex [channel regex [text regex]]]
 | |
|        rq <nick regex> [-channel <channel regex>] [-text <text regex>]
 | |
| </pre>
 | |
| <a name="delq"></a><h4> <span class="mw-headline">delq</span></h4>
 | |
| <p>Deletes a specific grabbed quote from the quotegrabs database.  You 
 | |
| can only delete quotes you have grabbed unless you are logged in as an 
 | |
| admin.
 | |
| </p>
 | |
| <pre>Usage: delq <quote-id>
 | |
| </pre>
 | |
| <a name="Modules"></a><h3> <span class="mw-headline">Modules</span></h3>
 | |
| <a name=".7B.7D"></a><h4> <span class="mw-headline">{}</span></h4>
 | |
| <p>This is just an alias for the <a href="#cc" title="">cc</a> command.  Can take an optional nick argument in front in order to address the output to said nick.
 | |
| </p>
 | |
| <pre> Example:
 | |
|    <pragma_> { puts("hello"); }
 | |
|    <candide> hello
 | |
|    <pragma_> somebody: { puts("hi"); }
 | |
|    <candide> somebody: hi
 | |
| </pre>
 | |
| <a name="cc"></a><h4> <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><p>The program is executed within a gdb debugger instance, which may
 | |
|  be interacted with via the gdb macros described below or with the 
 | |
| gdb("command") function.
 | |
| </p><p>The compiler and program are executed inside a virtual machine.  
 | |
| After each run, the virtual machine is restored to a previous state.  No
 | |
|  system calls have been disallowed.  You can write to and read from the 
 | |
| filesystem, provided you do it in the same program.  The network cable 
 | |
| has been unplugged.  You are free to write and test any code you like.  
 | |
| Have fun.
 | |
| </p><p>Uses gcc 4.9.0 and gdb 7.7.
 | |
| </p>
 | |
| <a name="Usage"></a><h5> <span class="mw-headline">Usage</span></h5>
 | |
| <pre> Usage: cc [compiler options] [-paste] [-nomain] [-lang=<language>] <code> [-input=<stdin input>]
 | |
|         cc <run|undo|show|paste|copy|replace|prepend|append|remove|s/// [and ...]>
 | |
|         cc <diff>
 | |
|         [nick] { <same as above without the cc in front> }
 | |
| </pre>
 | |
| <ul><li> You can pass any gcc compiler options.  By default, -Wall -Wextra -std=c11 -pedantic are passed unless an option is specified.
 | |
| </li><li> The -paste option will pretty-format and paste the code/output
 | |
|  to a paste site and display the URL (useful to preserve newlines in 
 | |
| output, and to refer to line-numbers).
 | |
| </li><li> The -nomain flag will prevent the code from being wrapped with a main() function.
 | |
| </li><li> The -input=<stdin input> option provides STDIN input 
 | |
| (i.e., scanf(), getc(stdin), etc.); MUST be the last option after any 
 | |
| code (otherwise the code will be considered to be input).
 | |
| </li><li> The run, undo, show, replace, etc commands are part of interactive-editing.  See below.
 | |
| </li><li> The diff command can be used to display the differences between the two most recent snippets.
 | |
| </li><li> You can use { } instead of cc; the options/flags/comments must
 | |
|  be inside the braces.  Can take an optional nick argument in front in 
 | |
| order to address the output to said nick.
 | |
| </li></ul>
 | |
| <a name="Supported_Languages"></a><h5> <span class="mw-headline">Supported Languages</span></h5>
 | |
| <p>The -lang option accepts the following languages: C, C99 and C11.  
 | |
| Alternatively, you may use the -std=<c89|gnu89|c99|gnu99|etc> 
 | |
| 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="mw-headline">Default Language</span></h5>
 | |
| <p>The default language (e.g., without an explicit -lang or -std option)
 | |
|  is C11 pedantic; which is gcc -Wall -Wextra -std=c11 -pedantic.
 | |
| </p>
 | |
| <a name="Disallowed_system_calls"></a><h5> <span class="mw-headline">Disallowed system calls</span></h5>
 | |
| <p>None.  The network cable has been unplugged.  Other than that, anything goes.  Have fun.
 | |
| </p>
 | |
| <a name="Program_termination_with_no_output"></a><h5> <span class="mw-headline">Program termination with no output</span></h5>
 | |
| <p>If there is no output, information about the local variables will be displayed.
 | |
| </p>
 | |
| <pre> <pragma_> cc int x = 5, y = 16; x ^= y, y ^= x, x ^= y;
 | |
|  <candide> pragma_: <no output: x = 16; y = 5>
 | |
| </pre>
 | |
| <pre> <pragma_> cc #include <sys/utsname.h> struct utsname u; uname(&u);
 | |
|  <candide> pragma_:  <no output: u = {sysname = "Linux", nodename = "compiler", release = "3.2.0-8-generic", version = "#15-Ubuntu SMP Wed Jan 11 13:57:44 UTC 2012", machine = "x86_64",  __domainname = "(none)"}>
 | |
| </pre>
 | |
| <a name="Abnormal_program_termination"></a><h5> <span class="mw-headline">Abnormal program termination</span></h5>
 | |
| <p>If a signal is detected, the bot will display useful information.
 | |
| </p><p>Example session:
 | |
| </p>
 | |
| <pre>< pragma_> ,cc char *p = 0; *p = 1;
 | |
| < candide> pragma_: Program received signal 11 (SIGSEGV) at statement: *p = 1; <local variables: p = 0x0>
 | |
| </pre>
 | |
| <pre>< pragma_> ,cc void bang() { char *p = 0, s[] = "lol"; strcpy(p, s); }  bang();
 | |
| < candide> pragma_: Program received signal 11 (SIGSEGV) in bang () at statement: strcpy(p, s); <local variables: p = 0x0, s = "lol">
 | |
| </pre>
 | |
| <pre>< pragma_> ,cc int a = 2 / 0;
 | |
| < candide> pragma_: [In function 'main': warning: division by zero] Program received signal 8 (SIGFPE) at statement: int a = 2 / 0;
 | |
| </pre>
 | |
| <a name="C_and_C.2B.2B_Functionality"></a><h5> <span class="mw-headline">C and C++ Functionality</span></h5>
 | |
| <a name="Using_the_preprocessor"></a><h5> <span class="mw-headline">Using the preprocessor</span></h5>
 | |
| <a name="Default_.23includes"></a><h6> <span class="mw-headline">Default #includes</span></h6>
 | |
| <p>These are the default includes for C11.  To get the most up-to-date list of #includes, use the `cc paste` command.
 | |
| </p>
 | |
| <pre>#define _XOPEN_SOURCE 9001
 | |
| #define __USE_XOPEN
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| #include <unistd.h>
 | |
| #include <math.h>
 | |
| #include <limits.h>
 | |
| #include <sys/types.h>
 | |
| #include <stdint.h>
 | |
| #include <stdbool.h>
 | |
| #include <stddef.h>
 | |
| #include <stdarg.h>
 | |
| #include <stdnoreturn.h>
 | |
| #include <stdalign.h>
 | |
| #include <ctype.h>
 | |
| #include <inttypes.h>
 | |
| #include <float.h>
 | |
| #include <errno.h>
 | |
| #include <time.h>
 | |
| #include <assert.h>
 | |
| #include <complex.h>
 | |
| </pre>
 | |
| <a name="Using_.23include"></a><h6> <span class="mw-headline">Using #include</span></h6>
 | |
| <p>In C and C++, you may #include <file.h> one after another on 
 | |
| the same line.  The bot will automatically put them on separate lines.  
 | |
| If you do use #include, the files you specify will replace the default 
 | |
| includes.  You do not need to append a \n after the #include.
 | |
| </p>
 | |
| <pre><pragma_> cc #include <sys/utsname.h> struct utsname u; uname(&u);
 | |
| <candide> pragma_:  <no output: u = {sysname = "Linux", nodename = "compiler", release = "3.2.0-8-generic", version = "#15-Ubuntu SMP Wed Jan 11 13:57:44 UTC 2012", machine = "x86_64",  __domainname = "(none)"}>
 | |
| </pre>
 | |
| <pre><pragma_> cc #include <stdio.h> #include <stdlib.h> void func(void) { puts("Hello, world"); } func();
 | |
| <candide> pragma_: Hello, World
 | |
| </pre>
 | |
| <p>In the previous examples, only the specified includes (e.g., 
 | |
| <sys/utsname.h> in the first example, <stdio.h> and 
 | |
| <stdlib.h> in the second, will be included instead of the default 
 | |
| includes.
 | |
| </p>
 | |
| <a name="Using_.23define"></a><h6> <span class="mw-headline">Using #define</span></h6>
 | |
| <p>You can also #define macros; however, #defines require an explicit 
 | |
| "\n" sequence to terminate, otherwise the remainder of the line will be 
 | |
| part of the macro. 
 | |
| </p>
 | |
| <pre><pragma_> cc #define GREETING "Hello, World"\n puts(GREETING);
 | |
| <candide> pragma_: Hello, World
 | |
| </pre>
 | |
| <a name="main.28.29_Function_Unnecessary"></a><h5> <span class="mw-headline">main() Function Unnecessary</span></h5>
 | |
| <p>In C and C++, if there is no main function, then a main function will
 | |
|  created and wrapped around the appropriate bits of your code (unless 
 | |
| the -nomain flag was specified); anything outside of any functions, 
 | |
| excluding preprocessor stuff, will be put into this new main function.  
 | |
| Here's an example:
 | |
| </p>
 | |
| <pre> <pragma_> cc -paste int add(int a, int b) { return a + b; } printf("4 + 6 = %d -- ", add(4, 6)); int add3(int a, int b, int c) 
 | |
|            { return add(a, b) + c; } printf("7 + 8 + 9 = %d", add3(7, 8, 9));
 | |
|  <candide> <a href="http://sprunge.us/ehRA?c" class="external free" title="http://sprunge.us/ehRA?c" rel="nofollow">http://sprunge.us/ehRA?c</a>
 | |
| </pre>
 | |
| <p>The -paste flag causes the code to be pretty-formatted and pasted 
 | |
| with output in comments to a paste site, which displays the following:
 | |
| </p>
 | |
| <pre>#define _XOPEN_SOURCE 9001
 | |
| #define __USE_XOPEN
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| #include <unistd.h>
 | |
| #include <math.h>
 | |
| #include <limits.h>
 | |
| #include <sys/types.h>
 | |
| #include <stdint.h>
 | |
| #include <stdbool.h>
 | |
| #include <stddef.h>
 | |
| #include <stdarg.h>
 | |
| #include <stdnoreturn.h>
 | |
| #include <stdalign.h>
 | |
| #include <ctype.h>
 | |
| #include <inttypes.h>
 | |
| #include <float.h>
 | |
| #include <errno.h>
 | |
| #include <time.h>
 | |
| #include <assert.h>
 | |
| #include <complex.h>
 | |
| #include <prelude.h>
 | |
| 
 | |
| 
 | |
| int add(int a, int b) {
 | |
|     return a + b;
 | |
| }
 | |
| 
 | |
| int add3(int a, int b, int c) {
 | |
|     return add(a, b) + c;
 | |
| }
 | |
| 
 | |
| int main(void) {
 | |
|     printf("4 + 6 = %d -- ", add(4, 6));
 | |
| 
 | |
|     printf("7 + 8 + 9 = %d", add3(7, 8, 9));
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| /************* OUTPUT *************
 | |
| 4 + 6 = 10 -- 7 + 8 + 9 = 24
 | |
| ************** OUTPUT *************/
 | |
| </pre>
 | |
| <a name="Embedding_Newlines"></a><h5> <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 other languages, you may embed a newline in the code by using |n.  Yes, that's the pipe character followed by 'n'.
 | |
| </p>
 | |
| <a name="Printing_in_binary.2Fbase2"></a><h5> <span class="mw-headline">Printing in binary/base2</span></h5>
 | |
| <p>A freenode ##c regular, Wulf, has provided a printf format specifier 'b' which can be used to print values in base2.
 | |
| </p>
 | |
| <pre>    <Wulf> cc printf("%b", 1234567);
 | |
|  <candide> 000100101101011010000111
 | |
| </pre>
 | |
| <pre>    <Wulf> cc printf("%#'b", 1234567);
 | |
|  <candide> 0001.0010.1101.0110.1000.0111
 | |
| </pre>
 | |
| <a name="Using_the_GDB_debugger"></a><h5> <span class="mw-headline">Using the GDB debugger</span></h5>
 | |
| <p>The program is executed within a gdb debugger instance, which may be interacted with via the following gdb macros.
 | |
| </p>
 | |
| <a name="print"></a><h6> <span class="mw-headline">print</span></h6>
 | |
| <p>The print() macro prints the values of expressions.  Useful for printing out structures and arrays.
 | |
| </p>
 | |
| <pre><pragma_> cc int a[] = { 1, 2, 3 }; print(a);
 | |
| <candide> pragma_: <a = {1, 2, 3}>
 | |
| </pre>
 | |
| <pre><pragma_> cc #include <sys/utsname.h> struct utsname u; uname(&u); print(u);
 | |
| <candide> pragma_: <u = {sysname = "Linux", nodename = "compiler", release = "3.2.0-8-generic", version = "#15-Ubuntu SMP Wed Jan 11 13:57:44 UTC 2012", machine = "x86_64",  __domainname = "(none)"}>
 | |
| </pre>
 | |
| <pre><pragma_> cc print(sizeof(int));
 | |
| <candide> pragma_: <sizeof(int) = 4>
 | |
| </pre>
 | |
| <pre><pragma_> cc print(2+2);
 | |
| <candide> pragma_: <2 + 2 = 4>
 | |
| </pre>
 | |
| <a name="ptype"></a><h6> <span class="mw-headline">ptype</span></h6>
 | |
| <p>The ptype() macro prints the types of expressions.
 | |
| </p>
 | |
| <pre> <pragma_> cc int *a[] = {0}; ptype(a); ptype(a[0]); ptype(*a[0]);
 | |
|  <candide> pragma_: <a = int *[1]> <a[0] = int *> <*a[0] = int>
 | |
| </pre>
 | |
| <a name="watch"></a><h6> <span class="mw-headline">watch</span></h6>
 | |
| <p>The watch() macro watches a variable and displays its value when it changes.
 | |
| </p>
 | |
| <pre><pragma_> cc int n = 0, last = 1; watch(n); while(n <= 7000) { n += last; last = n - last; } /* fibonacci */
 | |
| <candide> pragma_: <n = 1> <n = 2> <n = 3> <n = 5> <n = 8> <n = 13> <n = 21> <n = 34> <n = 55> <n = 89> <n = 144> <n = 233> <n = 377> <n = 610> <n = 987> <n = 1597> <n = 2584> <n = 4181> <n = 6765> <n = 10946>
 | |
| </pre>
 | |
| <a name="trace"></a><h6> <span class="mw-headline">trace</span></h6>
 | |
| <p>The trace() macro traces a function's calls, displaying passed and returned values.
 | |
| </p>
 | |
| <pre> <pragma_> ,cc trace(foo); char *foo(int n) { puts("Hello, world"); return "Good-bye, world"; } foo(42);
 | |
|  <candide> pragma_: <entered [1] foo (n=42)>
 | |
|                     Hello, world
 | |
|                     <leaving [1] foo (n=42), returned 0x401006 "Good-bye, world">
 | |
| </pre>
 | |
| <pre> <pragma_> ,cc int fib2(int n, int p0, int p1) { return n == 1 ? p1 : fib2(n  - 1, p1, p0 + p1); } 
 | |
|                int fib(int n) { return n == 0 ? 0 : fib2(n, 0, 1); } 
 | |
|                trace(fib); trace(fib2); for(int i = 0; i < 20; i++) printf("%d ", fib(i));
 | |
|  <candide> pragma_: <entered [1] fib (n=0)>
 | |
|                     <leaving [1] fib (n=0), returned 0>
 | |
|                     1
 | |
|                     <entered [1] fib (n=2)>
 | |
|                     <entered [2]  fib2 (n=2, p0=0, p1=1)>
 | |
|                     <entered [3]   fib2 (n=1, p0=1, p1=1)>
 | |
|                     <leaving [3]   fib2 (n=1, p0=1, p1=1), returned 1>
 | |
|                     <leaving [2]  fib2 (n=2, p0=0, p1=1), returned 1>
 | |
|                     <leaving [1] fib (n=2), returned 1>
 | |
|                     1
 | |
|                     <entered [1] fib (n=3)>
 | |
|                     <entered [2]  fib2 (n=3, p0=0, p1=1)>
 | |
|                     <entered [3]   fib2 (n=2, p0=1, p1=1)>
 | |
|                     <entered [4]    fib2 (n=1, p0=1, p1=2)>
 | |
|                     <leaving [4]    fib2 (n=1, p0=1, p1=2), returned 2>
 | |
|                     <leaving [3]   fib2 (n=2, p0=1, p1=1), returned 2>
 | |
|                     <leaving [2]  fib2 (n=3, p0=0, p1=1), returned 2>
 | |
|                     <leaving [1] fib (n=3), returned 2>
 | |
|                     2
 | |
|                     <entered [1] fib (n=4)>
 | |
|                     <entered [2]  fib2 (n=4, p0=0, p1=1)>
 | |
|                     <entered [3]   fib2 (n=3, p0=1, p1=1)>
 | |
|                     <entered [4]    fib2 (n=2, p0=1, p1=2)>
 | |
|                     <entered [5]     fib2 (n=1, p0=2, p1=3)>
 | |
|                     <leaving [5]     fib2 (n=1, p0=2, p1=3), returned 3>
 | |
|                     <leaving [4]    fib2 (n=2, p0=1, p1=2), returned 3>
 | |
|                     <leaving [3]   fib2 (n=3, p0=1, p1=1), returned 3>
 | |
|                     <leaving [2]  fib2 (n=4, p0=0, p1=1), returned 3>
 | |
|                     <leaving [1] fib (n=4), returned 3>
 | |
|                     3
 | |
|                     <entered [1] fib (n=5)>
 | |
|                     <entered [2]  fib2 (n=5, p0=0, p1=1)>
 | |
|                     <entered [3]   fib2 (n=4, p0=1, p1=1)>
 | |
|                     <entered [4]    fib2 (n=3, p0=1, p1=2)>
 | |
|                     <entered [5]     fib2 (n=2, p0=2, p1=3)>
 | |
|                     <entered [6]      fib2 (n=1, p0=3, p1=5)>
 | |
|                     <leaving [6]      fib2 (n=1, p0=3, p1=5), returned 5>
 | |
|                     <leaving [5]     fib2 (n=2, p0=2, p1=3), returned 5>
 | |
|                     <leaving [4]    fib2 (n=3, p0=1, p1=2), returned 5>
 | |
|                     <leaving [3]   fib2 (n=4, p0=1, p1=1), returned 5>
 | |
|                     <leaving [2]  fib2 (n=5, p0=0, p1=1), returned 5>
 | |
|                     <leaving [1] fib (n=5), returned 5>
 | |
|                     5
 | |
|                     <entered [1] fib (n=6)>
 | |
|                     <entered [2]  fib2 (n=6, p0=0, p1=1)>
 | |
|                     <entered [3]   fib2 (n=5, p0=1, p1=1)>
 | |
|                     <entered [4]    fib2 (n=4, p0=1, p1=2)>
 | |
|                     <entered [5]     fib2 (n=3, p0=2, p1=3)>
 | |
|                     <entered [6]      fib2 (n=2, p0=3, p1=5)>
 | |
|                     <entered [7]       fib2 (n=1, p0=5, p1=8)>
 | |
|                     <leaving [7]       fib2 (n=1, p0=5, p1=8), returned 8>
 | |
|                     <leaving [6]      fib2 (n=2, p0=3, p1=5), returned 8>
 | |
|                     <leaving [5]     fib2 (n=3, p0=2, p1=3), returned 8>
 | |
|                     <leaving [4]    fib2 (n=4, p0=1, p1=2), returned 8>
 | |
|                     <leaving [3]   fib2 (n=5, p0=1, p1=1), returned 8>
 | |
|                     <leaving [2]  fib2 (n=6, p0=0, p1=1), returned 8>
 | |
|                     <leaving [1] fib (n=6), returned 8>
 | |
|                     8
 | |
|                     ... etc ...
 | |
| </pre>
 | |
| <a name="gdb"></a><h6> <span class="mw-headline">gdb</span></h6>
 | |
| <p>The gdb() function takes a string argument which it passes to the gdb debugger and then displays the output if any.
 | |
| </p>
 | |
| <pre> <pragma_> ,cc gdb("info macro NULL");
 | |
|  <candide> pragma_: <Defined at /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h:402> <#define NULL ((void *)0)>
 | |
| </pre>
 | |
| <pre> <pragma_> ,cc void foo() { gdb("info frame"); } foo();
 | |
|  <candide> pragma_: <Stack level 1, frame at 0x7fffffffe660:> rip = 0x400e28 in foo (); saved rip 0x400e43 called by frame at 0x7fffffffe680, caller of frame at 0x7fffffffe650 source language
 | |
|                     c. Arglist at 0x7fffffffe650, args: Locals at 0x7fffffffe650, Previous frame's sp is 0x7fffffffe660 Saved registers: rbp at 0x7fffffffe650, rip at 0x7fffffffe658
 | |
| </pre>
 | |
| <a name="Interactive_Editing"></a><h5> <span class="mw-headline">Interactive Editing</span></h5>
 | |
| <p>The <a href="#cc" title="">cc</a> command supports interactive-editing.  The general syntax is:  cc [command].
 | |
| </p><p>Each cc snippet is saved in a buffer which is named after the channel or nick it was used in.  You can use <a href="#show" title="">show</a> or <a href="#diff" title="">diff</a> with a buffer argument to view that buffer; otherwise you can use the <a href="#copy" title="">copy</a>
 | |
|  command to copy the most recent snippet of another buffer into the 
 | |
| current buffer and optionally chain it with another command -- for 
 | |
| example, to copy the ##c buffer and paste it: <i>cc copy ##c and paste</i>.
 | |
| </p><p>The commands are:  <a href="#copy" title="">copy</a>, <a href="#show" title="">show</a>, <a href="#diff" title="">diff</a>, <a href="#paste" title="">paste</a>, <a href="#run" title="">run</a>, <a href="#undo" title="">undo</a>, <a href="#s.2F.2F" title="">s//</a>, <a href="#replace" title="">replace</a>, <a href="#prepend" title="">prepend</a>, <a href="#append" title="">append</a>, and <a href="#remove" title="">remove</a>.  Most of the commands may be chained together by separating them with whitespace or "and".
 | |
| </p><p>The commands are described in more detail below:
 | |
| </p>
 | |
| <a name="copy"></a><h6> <span class="mw-headline">copy</span></h6>
 | |
| <p>To copy a snippet from another buffer, use the <b>copy</b> command.  Other commands can optionally be chained after this command.
 | |
| </p>
 | |
| <pre> Usage: cc copy <buffer> [and ...]
 | |
| </pre>
 | |
| <a name="show"></a><h6> <span class="mw-headline">show</span></h6>
 | |
| <p>To show the latest code in the buffer, use the <b>show</b> command.  This command can take an optional buffer argument.
 | |
| </p>
 | |
| <pre> <pragma_> cc show
 | |
|  <candide> pragma_: printf("Hello, world!");
 | |
| </pre>
 | |
| <p>This command is stand-alone and cannot be chained with other interactive-editing commands.
 | |
| </p>
 | |
| <a name="diff"></a><h6> <span class="mw-headline">diff</span></h6>
 | |
| <p>To see the differences between the two most recent snippets, use the <b>diff</b> command.  This command can take an optional buffer argument.
 | |
| </p>
 | |
| <pre> <pragma_> cc diff
 | |
|  <candide> pragma: printf("<replaced `Hello` with `Good-bye`>, <replaced `world` with `void`>");
 | |
| </pre>
 | |
| <p>This command is stand-alone and cannot be chained with other interactive-editing commands.
 | |
| </p>
 | |
| <a name="paste"></a><h6> <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> <pragma_> cc paste
 | |
|  <candide> 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 other interactive-editing commands.
 | |
| </p>
 | |
| <a name="run"></a><h6> <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> <pragma_> cc run
 | |
|  <candide> pragma_: Hello, world!
 | |
| </pre>
 | |
| <p>This command is stand-alone and cannot be chained with other interactive-editing commands.
 | |
| </p>
 | |
| <a name="undo"></a><h6> <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="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> <pragma_> cc s/Hello/Good-bye/ and s/world/void/
 | |
|  <candide> pragma_: Good-bye, void!
 | |
|  <pragma_> cc show
 | |
|  <candide> pragma_: printf("Good-bye, void!");
 | |
| </pre>
 | |
| <a name="replace"></a><h6> <span class="mw-headline">replace</span></h6>
 | |
| <p>Alternatively, you may use the <b>replace</b> command.  The usage is (note the required single-quotes):
 | |
| </p>
 | |
| <pre> cc replace [all, first, second, ..., tenth, last] 'from' with 'to'
 | |
| </pre>
 | |
| <a name="prepend"></a><h6> <span class="mw-headline">prepend</span></h6>
 | |
| <p>Text may be prepended with the <b>prepend</b> command:
 | |
| </p>
 | |
| <pre> cc prepend 'text'
 | |
| </pre>
 | |
| <a name="append"></a><h6> <span class="mw-headline">append</span></h6>
 | |
| <p>Text may be appended with the <b>append</b> command:
 | |
| </p>
 | |
| <pre> cc append 'text'
 | |
| </pre>
 | |
| <a name="remove"></a><h6> <span class="mw-headline">remove</span></h6>
 | |
| <p>Text may be deleted with the <b>remove</b> command:
 | |
| </p>
 | |
| <pre> cc remove [all, first, second, ..., tenth, last] 'text'
 | |
| </pre>
 | |
| <a name="Some_Examples"></a><h5> <span class="mw-headline">Some Examples</span></h5>
 | |
| <pre> Examples:
 | |
| </pre>
 | |
| <pre>   < pragma_> cc int fib2(int n, int p0, int p1) { return n == 1 ? p1 : fib2(n  - 1, p1, p0 + p1); } 
 | |
|                int fib(int n) { return n == 0 ? 0 : fib2(n, 0, 1); } for(int i = 0; i < 21; i++) printf("%d ", fib(i));
 | |
|    < candide> pragma_: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
 | |
| </pre>
 | |
| <pre>   < pragma_> cc int i = 0, last = 1; while(i <= 7000) { printf("%d ", i); i += last; last = i - last; }
 | |
|     <candide> pragma_: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
 | |
| </pre>
 | |
| <pre>   <Icewing> cc int n=0, f[2]={0,1}; while(n<20) printf("%d ",f[++n&1]=f[0]+f[1]); // based on cehteh
 | |
|    <candide> Icewing: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
 | |
| </pre>
 | |
| <pre>  <3monkeys> cc @p=(0,1); until($#p>20) { print"$p[-2]\n"; push @p, $p[-2] + $p[-1] } -lang=Perl
 | |
|    <candide> 3monkeys: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
 | |
| </pre>
 | |
| <pre>   <spiewak> cc -lang=Ruby p,c=0,1; 20.times{p p; c=p+p=c}
 | |
|    <candide> spiewak: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
 | |
| </pre>
 | |
| <pre>     <Jafet> cc main = print $ take 20 $ let fibs = 0 : scanl (+) 1 fibs in fibs; -lang=Haskell
 | |
|    <candide> Jafet: [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181]
 | |
| </pre>
 | |
| <a name="english"></a><h4> <span class="mw-headline">english</span></h4>
 | |
| <p>Converts C code into English sentences.  Understands only C89 code.
 | |
| </p>
 | |
| <pre> Usage: english <C snippet>
 | |
| </pre>
 | |
| <pre> Examples:
 | |
|     <pragma_> english char (*a)[10];  char *b[10];
 | |
|     <candide> Let a be a pointer to an array of length 10 of type char. Let b be an array of length 10 of type pointer to char.
 | |
|     <pragma_> english for(;;);
 | |
|     <candide> Repeatedly compute nothing.
 | |
|     <pragma_> english typedef char Batman; char Bruce_Wayne; char superhero = (Batman) Bruce_Wayne;
 | |
|     <candide> Let Batman be another name for a character. Let Bruce_Wayne be a character. Let superhero be a character, with value being Bruce_Wayne cast to a Batman.
 | |
| </pre>
 | |
| <a name="expand"></a><h4> <span class="mw-headline">expand</span></h4>
 | |
| <p>Expands macros in C code and displays the resulting code.  Macros 
 | |
| must be terminated by a \n sequence.  You may #include headers to expand
 | |
|  macros defined within.
 | |
| </p>
 | |
| <pre> Usage: expand <C snippet>
 | |
| </pre>
 | |
| <pre> Example:
 | |
|     <pragma_> expand #define WHILE while ( \n #define DO ) { \n #define WEND } \n  int i = 5; WHILE --i DO puts("hi"); WEND
 | |
|     <candide> pragma_: int i = 5; while ( --i ) { puts("hi"); }
 | |
|     <pragma_> expand #include <stdlib.h> NULL
 | |
|     <candide> pragma_: ((void *)0)
 | |
| </pre>
 | |
| <a name="prec"></a><h4> <span class="mw-headline">prec</span></h4>
 | |
| <a name="paren"></a><h4> <span class="mw-headline">paren</span></h4>
 | |
| <p>Shows operator precedence in C99 expressions by adding parentheses.
 | |
| </p>
 | |
| <pre> Usage: prec <expression>
 | |
|         paren <expression>
 | |
| </pre>
 | |
| <pre> Examples:
 | |
|     <pragma_> prec *a++
 | |
|     <candide> pragma_: *(a++)
 | |
|     <pragma_> prec a = b & c
 | |
|     <candide> pragma_: a = (b & c)
 | |
|     <pragma_> prec token = strtok(s, d) != NULL
 | |
|     <candide> pragma_: token = (strtok(s, d) != NULL)
 | |
| </pre>
 | |
| <a name="faq"></a><h4> <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: faq [match #] <search regex>
 | |
|  Examples:
 | |
|    <pragma_> faq cast malloc
 | |
|    <candide> 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? : </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>
 | |
|    <pragma_> faq 2 cast malloc
 | |
|    <candide> 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? :    
 | |
|              <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>
 | |
|    <pragma_> faq ^6.4
 | |
|    <candide> 6. Arrays and Pointers, 6.4 Why are array and pointer 
 | |
|              declarations interchangeable as function formal 
 | |
|              parameters? : <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="c99std"></a><h4> <span class="mw-headline">c99std</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: c99std [-list] [-n#] [section] [search regex]
 | |
|           If specified, 'section' must be in the form of X.YpZ where 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>   < pragma_> c99std pointer value
 | |
|    < candide> 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>   < pragma_> c99std pointer value -list
 | |
|    < candide> 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>   < pragma_> Hmm, how about just section 6.3?
 | |
| </pre>
 | |
| <pre>  < pragma_> c99std pointer value 6.3
 | |
|   < candide> 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 & operator, or is a string literal used to initialize an array, an expression
 | |
|              that has type ``array of type is converted to an expression with type ``pointer to type 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>  < pragma_> c99std pointer value 6.3 -list
 | |
|   < candide> Sections containing 'pointer value': 6.3.2.1p3, 6.3.2.1p4, 6.3.2.3p2, 6.3.2.3p6
 | |
| </pre>
 | |
| <pre>  < pragma_> c99std pointer value 6.3 -n3
 | |
|   < candide> 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="c11std"></a><h4> <span class="mw-headline">c11std</span></h4>
 | |
| <p>Searches ISO/IEC 9811:201X (WG14/N1256), also known as the C11 draft standard.  <a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf" class="external free" title="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf" rel="nofollow">http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf</a>
 | |
| </p><p>Usage is identical to c99std.
 | |
| </p>
 | |
| <a name="man"></a><h4> <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:  man [section] query
 | |
| Samples:
 | |
|  <pragma_> man fork
 | |
|  <candide> 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>
 | |
|  <pragma_> man atexit
 | |
|  <candide> 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, 
 | |
|            whether 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>
 | |
|  <pragma_> man getcwd
 | |
|  <candide> 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="mw-headline">google</span></h4>
 | |
| <p>Displays google results for a query.
 | |
| </p>
 | |
| <pre>Usage:  google [number of results] query
 | |
| Samples:
 | |
|   <pragma_> google brian kernighan
 | |
|   <candide> 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>)
 | |
|   <pragma_> google 3 brian kernighan
 | |
|   <candide> 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"></a><h4> <span class="mw-headline">define</span></h4>
 | |
| <a name="dict"></a><h4> <span class="mw-headline">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 here: <a href="http://www.iso-9899.info/candide/dict_databases.txt" class="external free" title="http://www.iso-9899.info/candide/dict_databases.txt" rel="nofollow">http://www.iso-9899.info/candide/dict_databases.txt</a>
 | |
|  -- Note that there may be several commands aliased to one of these 
 | |
| databases; for example, the `foldoc` command is an alias to `dict -d 
 | |
| foldoc`.
 | |
| </p>
 | |
| <pre> Usage: dict [-d database] [-n start from definition number] [-t first letter of word class type (n]oun, v]erb, etc)] 
 | |
|         [-search <regex> for definitions matching <regex>] <word>
 | |
| </pre>
 | |
| <pre> Examples:
 | |
| </pre>
 | |
| <pre>   <pragma_> dict hit
 | |
|    <candide> 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 another; 
 | |
|             "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 smasher"
 | |
| </pre>
 | |
| <pre>   <pragma_> dict -n 4 hit
 | |
|    <candide> hit: n: 4) (physics) an brief event in which two or more bodies come together; "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 another website; "WordNet gets many hits from 
 | |
|              users worldwide"
 | |
| </pre>
 | |
| <pre>   <pragma_> dict -t v hit
 | |
|    <candide> 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 weather"; "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>   <pragma_> dict -search ball hit
 | |
|    <candide> 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>   <pragma_> dict -d eng-fra hit
 | |
|    <candide> hit: 1) [hit] battre, frapper, heurter frapper, heurter atteindre, frapper, parvenir, saisir
 | |
| </pre>
 | |
| <a name="foldoc"></a><h4> <span class="mw-headline">foldoc</span></h4>
 | |
| <p>This is just an alias for `dict -d foldoc`.
 | |
| </p>
 | |
| <a name="vera"></a><h4> <span class="mw-headline">vera</span></h4>
 | |
| <p>This is just an alias for `dict -d vera`.
 | |
| </p><p><br>
 | |
| </p>
 | |
| <a name="udict"></a><h4> <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: udict query
 | |
| </pre>
 | |
| <a name="wdict"></a><h4> <span class="mw-headline">wdict</span></h4>
 | |
| <p>Displays Wikipedia article abstracts (first paragraph).  Note: case-sensitive and very picky.
 | |
| </p>
 | |
| <pre>Usage: wdict query
 | |
| </pre>
 | |
| <a name="acronym"></a><h4> <span class="mw-headline">acronym</span></h4>
 | |
| <p>Displays expanded acronyms.
 | |
| </p>
 | |
| <pre>Usage:  acronym query
 | |
| Samples:
 | |
|   <pragma_> acronym posix
 | |
|   <candide> posix (3 entries): Portable Operating System for   
 | |
|             Information Exchange, Portable Operating System Interface 
 | |
|             Extensions (IBM), Portable Operating System Interface for        
 | |
|             Unix
 | |
|   <pragma_> acronym linux
 | |
|   <candide> linux (1 entries): Linux Is Not UniX
 | |
| </pre>
 | |
| <a name="math"></a><h4> <span class="mw-headline">math</span></h4>
 | |
| <p>Evaluate calculations.
 | |
| </p>
 | |
| <pre>Usage:  math <expression>
 | |
| Example:
 | |
|   <pragma_> math 5 + 5
 | |
|   <candide> 5 + 5 = 10
 | |
| </pre>
 | |
| <a name="compliment"></a><h4> <span class="mw-headline">compliment</span></h4>
 | |
| <p>Displays a random Markov-chain compliment/insult.
 | |
| </p>
 | |
| <pre>Usage: compliment [nick]
 | |
| </pre>
 | |
| <a name="insult"></a><h4> <span class="mw-headline">insult</span></h4>
 | |
| <p>Displays a random insult.
 | |
| </p>
 | |
| <pre>Usage: insult [nick]
 | |
| </pre>
 | |
| <a name="excuse"></a><h4> <span class="mw-headline">excuse</span></h4>
 | |
| <p>Displays a random excuse.
 | |
| </p>
 | |
| <pre>Usage: excuse [nick]
 | |
| </pre>
 | |
| <a name="horoscope"></a><h4> <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: horoscope <sign>
 | |
| </pre>
 | |
| <a name="horrorscope"></a><h4> <span class="mw-headline">horrorscope</span></h4>
 | |
| <p>Displays a horrorscope for a Zodiac sign.
 | |
| </p>
 | |
| <pre>Usage: horrorscope <sign>
 | |
| </pre>
 | |
| <a name="quote"></a><h4> <span class="mw-headline">quote</span></h4>
 | |
| <p>Displays quotes from a popular quotation database.  If you use 
 | |
| `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 <name> 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: quote [search text] [--author <author name>]
 | |
| Samples:
 | |
|   <pragma_> quote
 | |
|   <candide> "Each success only buys an admission ticket to a more difficult problem." -- Henry Kissinger (1923 -  ).
 | |
|   <pragma_> quote --author lao tzu
 | |
|   <candide> 41 matching quotes found. "A journey of a thousand miles begins with a single step." -- Lao-tzu (604 BC - 531 BC).
 | |
|   <pragma_> quote butterfly
 | |
|   <candide> 11 matching quotes found. "A chinese philosopher 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.
 | |
| </pre>
 | |
| <a name="Informative"></a><h3> <span class="mw-headline">Informative</span></h3>
 | |
| <a name="list"></a><h4> <span class="mw-headline">list</span></h4>
 | |
| <p>Lists information about specified argument
 | |
| </p>
 | |
| <pre>Usage:  .list <modules|factoids|commands|admins>
 | |
| </pre>
 | |
| <a name="info"></a><h4> <span class="mw-headline">info</span></h4>
 | |
| <p>Shows detailed information about a module or a factoid
 | |
| </p>
 | |
| <pre> Usage:  .info <module|factoid>
 | |
| </pre>
 | |
| <a name="version"></a><h4> <span class="mw-headline">version</span></h4>
 | |
| <p>Shows version information
 | |
| </p>
 | |
| <a name="source"></a><h4> <span class="mw-headline">source</span></h4>
 | |
| <p>Shows candide's source information.
 | |
| </p>
 | |
| <a name="help"></a><h4> <span class="mw-headline">help</span></h4>
 | |
| <p>Shows link to this page.
 | |
| </p>
 | |
| <a name="Administrative"></a><h3> <span class="mw-headline">Administrative</span></h3>
 | |
| <a name="login"></a><h4> <span class="mw-headline">login</span></h4>
 | |
| <p>You cannot use any of the admin commands unless you login first
 | |
| </p>
 | |
| <pre> Usage:  login <password>
 | |
| </pre>
 | |
| <p>Note that login requires that your nick and hostmask match candide's records.
 | |
| </p>
 | |
| <a name="logout"></a><h4> <span class="mw-headline">logout</span></h4>
 | |
| <p>Logs out of candide.
 | |
| </p>
 | |
| <a name="ignore"></a><h4> <span class="mw-headline">ignore</span></h4>
 | |
| <p>Ignore a user
 | |
| </p>
 | |
| <pre>Usage:  ignore <hostmask> [channel] [timeout]
 | |
| </pre>
 | |
| <a name="unignore"></a><h4> <span class="mw-headline">unignore</span></h4>
 | |
| <p>Unignores a user
 | |
| </p>
 | |
| <pre>Usage:  unignore <hostmask> [channel]
 | |
| </pre>
 | |
| <a name="ban"></a><h4> <span class="mw-headline">ban</span></h4>
 | |
| <p>Bans a user
 | |
| </p>
 | |
| <pre> Usage:  ban <hostmask> [timeout seconds]
 | |
| </pre>
 | |
| <p>If timeout is omitted, candide will ban the user for one hour.  Timeout is in seconds.
 | |
| </p>
 | |
| <a name="unban"></a><h4> <span class="mw-headline">unban</span></h4>
 | |
| <p>Unbans a user
 | |
| </p>
 | |
| <pre> Usage:
 | |
|    unban <hostmask>
 | |
| </pre>
 | |
| <p>Note that <hostmask> must EXACTLY match the hostmask in the ban list for the channel.
 | |
| </p>
 | |
| <a name="kick"></a><h4> <span class="mw-headline">kick</span></h4>
 | |
| <p>Removes a nick from the channel.
 | |
| </p>
 | |
| <pre> Usage from channel:   kick <nick> <reason>
 | |
|  From private message: kick <channel> <nick> <reason>
 | |
| </pre>
 | |
| <a name="export"></a><h4> <span class="mw-headline">export</span></h4>
 | |
| <p>exports specified list to web page
 | |
| </p>
 | |
| <pre>Usage:  export <commands|factoids|admins|channels>
 | |
| </pre>
 | |
| <a name=".23.23c"></a><h3> <span class="mw-headline">##c</span></h3>
 | |
| <a name="C-Aphorisms"></a><h4> <span class="mw-headline">C-Aphorisms</span></h4>
 | |
| <p>The C Aphorisms can be triggered with c<n> where <n> is 
 | |
| an integer representing one of the aphorisms.  For example, to quote C 
 | |
| Aphorism 1, use `c1`.
 | |
| </p>
 | |
| <ol><li> The questioner's first description of the problem/question will be misleading.
 | |
| </li><li> All examples given by the questioner will be incomplete, 
 | |
| misleading, broken, wrong, and/or not representative of the actual 
 | |
| question.
 | |
| </li><li> The questioner will not read and apply the answers they are given but will instead continue to practice c1 and c2.
 | |
| </li><li> The ignorant will continually mis-educate the questioner.
 | |
| </li><li> When given a choice of solutions, the questioner will always choose the wrong one.
 | |
| </li><li> The questioner will always find a reason to say, "It doesn't work."
 | |
| </li><li> The questioner will paste code and say "I have a problem" or 
 | |
| "It doesn't work" without any further information or description of the 
 | |
| problem.
 | |
| </li><li> The more beginner they are, the more likely they are to be overcomplicating it.
 | |
| </li><li> The questioner will always have some excuse for doing it wrong.
 | |
| </li><li> The newbie will not accept the answer you give, no matter how right it is.
 | |
| </li><li> <skipped due to existing c11 factoid>
 | |
| </li><li> The newbie will think they are smarter than they really are.
 | |
| </li><li> The newbie will fail to recognize undefined behavior, and will
 | |
|  wrongly think that their program is correct because it appears to work.
 | |
| </li></ol>
 | |
| <a name="Flood_control"></a><h2> <span class="mw-headline">Flood control</span></h2>
 | |
| <p>Candide 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="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 muted for 30 seconds 
 | |
| for the first offense.  Each additional offense will result in the 
 | |
| offender being muted for a 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="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 another channel for a limited time: 2^(number_of_offenses + 2) hours.  
 | |
| </p><p>In addition to private instructions from candide, 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 candide with: unbanme <channel>.
 | |
| </p><p>(Any messages sent to the public channel by the user at any time 
 | |
| will reset their JOIN counter back to zero.  The unbanme command can 
 | |
| only be used for the first two offenses -- the offense counter is 
 | |
| decremented once every 24 hours.)
 | |
| </p>
 | |
| <a name="Enter_key_abuse"></a><h3> <span class="mw-headline">Enter key abuse</span></h3>
 | |
| <p>If four (4) consecutive messages are sent with ten (10) seconds or 
 | |
| less between individual messages and without another person speaking, an
 | |
|  enter-key-abuse counter is incremented.  This counter will then 
 | |
| continue to be incremented every two (2) consecutive messages with ten 
 | |
| (10) seconds or less in between until another person speaks or more than
 | |
|  ten (10) seconds have elapsed, whereupon it returns to requiring four 
 | |
| (4) consecutive messages.  When this counter reaches three (3) or 
 | |
| greater, the offender will be muted using the same timeout rules as 
 | |
| message flooding.  This counter is automatically decremented once per 
 | |
| hour.
 | |
| </p>
 | |
| <a name="Notification_message"></a><h3> <span class="mw-headline">Notification message</span></h3>
 | |
| <p>Candide will send the following message to the offender each offense.
 | |
| </p>
 | |
| <a name="Message_flooding"></a><h4> <span class="mw-headline">Message flooding</span></h4>
 | |
| <p>"You have been muted 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 $timeout."
 | |
| </p>
 | |
| <a name="Join_flooding"></a><h4> <span class="mw-headline">Join flooding</span></h4>
 | |
| <p>"You have been banned from $channel 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, otherwise you will be automatically unbanned in $timeout."
 | |
| </p>
 | |
| <a name="Enter_key_abuse_2"></a><h4> <span class="mw-headline">Enter key abuse</span></h4>
 | |
| <p>"You have been muted due to abusing the enter key.  Please do not 
 | |
| split your sentences over multiple messages.  You will be allowed to 
 | |
| speak again in $timeout."
 | |
| </p>
 | |
| <a name="Opping.2FDeopping"></a><h3> <span class="mw-headline">Opping/Deopping</span></h3>
 | |
| <p>ChanServ will automagically op and deop Candide when necessary.  
 | |
| Candide 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!2!edit=0 and timestamp 20140414194808 -->
 | |
| <div class="printfooter">
 | |
| Retrieved from "<a href="http://www.iso-9899.info/wiki/Candide">http://www.iso-9899.info/wiki/Candide</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/Candide" title="View the content page [alt-shift-c]" accesskey="c">Article</a></li>
 | |
| 					 <li id="ca-talk"><a href="http://www.iso-9899.info/wiki/Talk:Candide" title="Discussion about the content page [alt-shift-t]" accesskey="t">Discussion</a></li>
 | |
| 					 <li id="ca-viewsource"><a href="http://www.iso-9899.info/wiki?title=Candide&action=edit" title="This page is protected. You can view its source. [alt-shift-e]" accesskey="e">View source</a></li>
 | |
| 					 <li id="ca-history"><a href="http://www.iso-9899.info/wiki?title=Candide&action=history" title="Past versions of this page. [alt-shift-h]" accesskey="h">History</a></li>
 | |
| 				</ul>
 | |
| 		</div>
 | |
| 	</div>
 | |
| 	<div class="portlet" id="p-personal">
 | |
| 		<h5>Personal tools</h5>
 | |
| 		<div class="pBody">
 | |
| 			<ul>
 | |
| 				<li id="pt-anonuserpage"><a href="http://www.iso-9899.info/wiki/User:71.92.165.183" title="The user page for the ip you're editing as [alt-shift-.]" accesskey="." class="new">71.92.165.183</a></li>
 | |
| 				<li id="pt-anontalk"><a href="http://www.iso-9899.info/wiki/User_talk:71.92.165.183" title="Discussion about edits from this ip address [alt-shift-n]" accesskey="n" class="new">Talk for this IP</a></li>
 | |
| 				<li id="pt-anonlogin"><a href="http://www.iso-9899.info/wiki?title=Special:Userlogin&returnto=Candide" title="You are encouraged to log in, it is not mandatory however. [alt-shift-o]" accesskey="o">Log in</a></li>
 | |
| 			</ul>
 | |
| 		</div>
 | |
| 	</div>
 | |
| 	<div class="portlet" id="p-logo">
 | |
| 		<a style="background-image: url(/wiki.png);" href="http://www.iso-9899.info/wiki/Main_Page" title="Visit the Main Page [alt-shift-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 [alt-shift-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, where 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. [alt-shift-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 [alt-shift-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 [alt-shift-f]" accesskey="f" type="text">
 | |
| 				<input name="go" class="searchButton" id="searchGoButton" value="Go" type="submit"> 
 | |
| 				<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-whatlinkshere"><a href="http://www.iso-9899.info/wiki/Special:Whatlinkshere/Candide" title="List of all wiki pages that link here [alt-shift-j]" accesskey="j">What links here</a></li>
 | |
| 				<li id="t-recentchangeslinked"><a href="http://www.iso-9899.info/wiki/Special:Recentchangeslinked/Candide" title="Recent changes in pages linked from this page [alt-shift-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 [alt-shift-q]" accesskey="q">Special pages</a></li>
 | |
| 				<li id="t-print"><a href="http://www.iso-9899.info/wiki?title=Candide&printable=yes" title="Printable version of this page [alt-shift-p]" accesskey="p">Printable version</a></li>				<li id="t-permalink"><a href="http://www.iso-9899.info/wiki?title=Candide&oldid=8969" 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="Candide%20-%20C_files/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki"></a></div>
 | |
| 			<ul id="f-list">
 | |
| 				<li id="lastmod"> This page was last modified 19:38, 14 April 2014.</li>
 | |
| 				<li id="viewcount">This page has been accessed 30,092 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.399 secs. -->
 | |
| </body></html>
 | 
