Sophie

Sophie

distrib > Mandriva > 2009.1 > x86_64 > media > main-testing > by-pkgid > ab7ad4fe88fbdcf4125a767f7f3c4e92 > files > 137

silc-toolkit-devel-1.1.9-1.2mdv2009.1.x86_64.rpm


<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-a" />
 <meta http-equiv="Content-Language" content="en" />
 <meta name="description" content="SILC Secure Internet Live Conferencing" />
 <meta name="keywords" content="SILC, secure, chat, protocol, cipher, encrypt, SKE" />
 <meta content="INDEX, FOLLOW" name="ROBOTS" />
 <style type="text/css">
  <!--
  body { color: #000000; background: #f0f0f0; font-family: Helvetica, Arial, Sans-serif; }
  a:link { text-decoration: none; color: #2f488f; }
  a:visited { text-decoration: none;color: #2f488f; }
  a:active { text-decoration: none; color: #2f488f; }
  -->
 </style>
</head>

<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">

<table border="0" cellspacing="0" cellpadding="6" width="100%">
 <tr valign="top" bgcolor="#dddddd">
  <td><small>Copyright &copy; 2001 - 2007 SILC Project<br />
    <a href="http://silcnet.org">SILC Project Website</a></small></td>
  <td align="right"><small>
   <a href="index.html">SILC Toolkit Reference Manual</a><br />
   <a href="toolkit_index.html">Index</a></small></td>
   </small></td>
 </tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
</table>

<table cellpadding="0" cellspacing="0" border="0">
 <tr valign="top">

  <td width="200" bgcolor="#f0f0f0">
   <img src="space.gif" width="1" height="1" border="0" alt="">
   <table width="100%" cellpadding="2" cellspacing="2" border="0">
    <tr valign="top"><td>
<br />
<small>
<!-- Template file for the big index that appears in the Toolkit reference
manual on the left side.  With this file it is possible to add other than
automatically generated links to that list. -->

<a href="index.html"><img src="box.gif" border="0" alt="">SILC Toolkit Reference Manual</a><br />


<a href=silcvcardlib.html><img src=box.gif border=0 alt=>SILC VCard Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcvcard.html><img src=box2.gif border=0 alt=>SILC VCard Interface</a><br />
<a href=silccryptlib.html><img src=box.gif border=0 alt=>SILC Crypto Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcrng_intro.html><img src=box2.gif border=0 alt=>Introduction to SILC RNG</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcrng.html><img src=box2.gif border=0 alt=>SILC RNG Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silccipher.html><img src=box2.gif border=0 alt=>SILC Cipher API</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcpkcs.html><img src=box2.gif border=0 alt=>SILC PKCS API</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcpk.html><img src=box2.gif border=0 alt=>SILC Public Key API</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcpkcs1.html><img src=box2.gif border=0 alt=>SILC PKCS #1 API</a><br />
&nbsp;&nbsp;&nbsp; <a href=silchash.html><img src=box2.gif border=0 alt=>SILC Hash Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silchmac.html><img src=box2.gif border=0 alt=>SILC HMAC Interface</a><br />
<a href=silcclientlib.html><img src=box.gif border=0 alt=>SILC Client Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcclient_using.html><img src=box2.gif border=0 alt=>Using SILC Client Library Tutorial</a><br />
&nbsp;&nbsp;&nbsp; <a href=command_reply_args.html><img src=box2.gif border=0 alt=>Arguments for <b>command_reply</b> Client Operation</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcstatus_args.html><img src=box2.gif border=0 alt=>SilcStatus Error Arguments in <b>command_reply</b> Client Operation</a><br />
&nbsp;&nbsp;&nbsp; <a href=notifyargs.html><img src=box2.gif border=0 alt=>Arguments for <b>notify</b> Client Operation</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcclient_unicode.html><img src=box2.gif border=0 alt=>Unicode and UTF-8 Strings in Client Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcclient.html><img src=box2.gif border=0 alt=>Client Library Interface Reference</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcclient_entry.html><img src=box2.gif border=0 alt=>Client Entry Interface Reference</a><br />
<a href=silcmathlib.html><img src=box.gif border=0 alt=>SILC Math Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcmp.html><img src=box2.gif border=0 alt=>SILC MP Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcmath.html><img src=box2.gif border=0 alt=>SILC Math Interface</a><br />
<a href=silcaputillib.html><img src=box.gif border=0 alt=>SILC Application Utility Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcapputil.html><img src=box2.gif border=0 alt=>SILC Application Utilities</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcidcache.html><img src=box2.gif border=0 alt=>SILC ID Cache Interface</a><br />
<a href=silcskrlib.html><img src=box.gif border=0 alt=>SILC Key Repository Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcskr.html><img src=box2.gif border=0 alt=>SILC SKR Interface</a><br />
<a href=silcasn1lib.html><img src=box.gif border=0 alt=>SILC ASN.1 Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcasn1.html><img src=box2.gif border=0 alt=>SILC ASN.1 Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcber.html><img src=box2.gif border=0 alt=>SILC BER interface</a><br />
<a href=silcskelib.html><img src=box.gif border=0 alt=>SILC Key Exchange Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcske.html><img src=box2.gif border=0 alt=>SILC SKE Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcconnauth.html><img src=box2.gif border=0 alt=>SILC Connection Authentication Interface</a><br />
<a href=silcsftplib.html><img src=box.gif border=0 alt=>SILC SFTP Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcsftp.html><img src=box2.gif border=0 alt=>SILC SFTP Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcsftp_fs.html><img src=box2.gif border=0 alt=>SFTP Filesystems Interface</a><br />
<a href=silccorelib.html><img src=box.gif border=0 alt=>SILC Core Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcauth.html><img src=box2.gif border=0 alt=>SILC Authentication Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcmessage.html><img src=box2.gif border=0 alt=>SILC Message Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcchannel.html><img src=box2.gif border=0 alt=>SILC Channel Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silccommand.html><img src=box2.gif border=0 alt=>SILC Command Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcnotify.html><img src=box2.gif border=0 alt=>SILC Notify Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcstatus.html><img src=box2.gif border=0 alt=>SILC Status Types</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcmode.html><img src=box2.gif border=0 alt=>SILC Modes</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcid.html><img src=box2.gif border=0 alt=>SILC ID Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcargument.html><img src=box2.gif border=0 alt=>SILC Argument Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcattrs.html><img src=box2.gif border=0 alt=>SILC Attributes Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcpacket.html><img src=box2.gif border=0 alt=>Packet Engine Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcpubkey.html><img src=box2.gif border=0 alt=>SILC Public Key Payload Interface</a><br />
<a href=silcutillib.html><img src=box.gif border=0 alt=>SILC Utility Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silctypes.html><img src=box2.gif border=0 alt=>Basic Types and Definitions</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcbuffer.html><img src=box2.gif border=0 alt=>Data Buffer Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcbuffmt.html><img src=box2.gif border=0 alt=>Data Buffer Format Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silchashtable.html><img src=box2.gif border=0 alt=>Hash Table Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcmemory.html><img src=box2.gif border=0 alt=>Memory Allocation Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcstack.html><img src=box2.gif border=0 alt=>Data Stack (memory pool) Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcfsm.html><img src=box2.gif border=0 alt=>Finite State Machine Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcthread.html><img src=box2.gif border=0 alt=>Thread Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcmutex.html><img src=box2.gif border=0 alt=>Mutual Exclusion Lock Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silccond.html><img src=box2.gif border=0 alt=>Condition Variable Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcatomic.html><img src=box2.gif border=0 alt=>Atomic Operations Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcnet.html><img src=box2.gif border=0 alt=>Network (TCP and UDP) Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcschedule.html><img src=box2.gif border=0 alt=>Scheduler Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcasync.html><img src=box2.gif border=0 alt=>Asynchronous Operation Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcstream.html><img src=box2.gif border=0 alt=>Abstract Stream Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcsocketstream.html><img src=box2.gif border=0 alt=>Socket Stream Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcfdstream.html><img src=box2.gif border=0 alt=>File Descriptor Stream Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcfileutil.html><img src=box2.gif border=0 alt=>File Utility Functions</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcstrutil.html><img src=box2.gif border=0 alt=>String Utility Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcsnprintf.html><img src=box2.gif border=0 alt=>Snprintf Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcutf8.html><img src=box2.gif border=0 alt=>UTF-8 String Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcstringprep.html><img src=box2.gif border=0 alt=>Stringprep Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcutil.html><img src=box2.gif border=0 alt=>Utility Functions</a><br />
&nbsp;&nbsp;&nbsp; <a href=silclist.html><img src=box2.gif border=0 alt=>List Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcdlist.html><img src=box2.gif border=0 alt=>Dynamic List Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcmime.html><img src=box2.gif border=0 alt=>MIME Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silctime.html><img src=box2.gif border=0 alt=>Time Utility Functions</a><br />
&nbsp;&nbsp;&nbsp; <a href=silclog.html><img src=box2.gif border=0 alt=>Logging Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silcconfig.html><img src=box2.gif border=0 alt=>Config File Interface</a><br />
<a href=silchttplib.html><img src=box.gif border=0 alt=>SILC HTTP Library</a><br />
&nbsp;&nbsp;&nbsp; <a href=silchttpserver.html><img src=box2.gif border=0 alt=>SILC HTTP Server Interface</a><br />
&nbsp;&nbsp;&nbsp; <a href=silchttpphp.html><img src=box2.gif border=0 alt=>SILC HTTP PHP Translator</a><br />

<br />
<b>Resource Links</b>
<br />
<a href="http://silcnet.org"><img src="box.gif" border="0" alt="">SILC Project Website</a><br />
<a href="http://silcnet.org/support/documentation/"><img src="box.gif" border="0" alt="">SILC Protocol Documentation</a><br />
<a href="http://silcnet.org/support/documentation/wp/"><img src="box.gif" border="0" alt="">SILC White Paper</a><br />
<a href="http://silcnet.org/support/faq/"><img src="box.gif" border="0" alt="">SILC FAQs</a><br />

</small>
<br /><br /><br /><br />
    </td></tr>
   </table>
  </td>

  <td bgcolor="#cccccc" background="dot.gif">
   <img src="space.gif" width="1" height="1" border="0" alt=""></td>

  <td width="720" bgcolor="#ffffff">
   <img src="space.gif" width="1" height="1" border="0" alt="">
   <table cellpadding="2" cellspacing="6" width="100%">
    <tr><td valign="top">
<br />
<big><b>Programming Conventions</b></big>

<br />&nbsp;<br />
The SILC Toolkit has been programmed with a specific programming style that
is consistent across all libraries and interfaces.  The programming style
defines for example naming conventions for functions, structures, macros,
enumerations, and other constants.


<br />&nbsp;<br />&nbsp;<br />
<b>Naming Conventions</b>

<br />&nbsp;<br />
<b>Macros and Defines</b>

<br />&nbsp;<br />
Macros are always capitalised and include underscores to separate words
in the name.  All macros start with the "SILC_" prefix.  Example:

<br />&nbsp;<br />
<tt>
#define SILC_PACKET_PADLEN(__packetlen, __blocklen)      \<br />
&nbsp;&nbsp;SILC_PACKET_DEFAULT_PADLEN - (__packetlen) % \<br />
&nbsp;&nbsp;&nbsp;&nbsp;((__blocklen) ? (__blocklen) : SILC_PACKET_DEFAULT_PADLEN)
</tt>

<br />&nbsp;<br />
Also other defines (#define) are always capitalised and include 
underscores to separate words in the name.  Also all defines start with 
the "SILC_" prefix.

<br />&nbsp;<br />
<b>Structures</b>

<br />&nbsp;<br />
All structure names begin with "Silc" prefix, and the name is mixed-case,
for example: SilcClientConnection, SilcCommandPayload.  Many of the 
structures used in SILC are actually private structures, and application
cannot access them directly.  In these cases the structures are forward
declared in the public header, and the implementation of the structure
is in the source file.  In these case application does not need to know
the contents of the structure, and is usually provided with a helper API
to access the structure when needed.

<br />&nbsp;<br />
In the most of the cases the forward declaration for a structure is pointer, 
for example:

<br />&nbsp;<br />
<tt>typedef struct SilcClientStruct *SilcClient;</tt>

<br />&nbsp;<br />
Application should always use the type defined pointer instead of the
actual structure.

<br />&nbsp;<br />
<b>Functions</b>

<br />&nbsp;<br />
Function naming uses the common naming convention used in Toolkit.  All
functions are always lowercase and they use underscores.  The name of
the function always starts with prefix "silc_".  The name tells what
the function do.  The name of a function is constructed from following parts:

<br />&nbsp;<br />
<tt>silc_(module)_(function)</tt>

<br />&nbsp;<br />
The (module) is the library, or interface this functions is part of.  For
example: "cipher", "config", "command", "packet", etc.

<br />&nbsp;<br />
The (function) is the description of the functionality of the function.
For example: "read", "new_id", "register", "find_by_name", etc.  Examples:

<br />&nbsp;<br />
<tt>
silc_server_packet_send<br />
silc_server_packet_send_to_channel<br />
silc_idcache_del_by_id<br />
silc_schedule_init<br />
silc_protocol_excute_final<br />
silc_buffer_alloc
</tt>

<br />&nbsp;<br />
When function registers something the name of the function generally is
"silc_function_register" and unregistering is done with
"silc_function_unregister".  When function allocates something it
is "silc_function_alloc" and when freeing it is
"silc_function_free".  Respectively, with init/uninit functions.

<br />&nbsp;<br />
<b>Enumerations</b>

<br />&nbsp;<br />
Enumerations are always capitalised and include underscores to separate
words in the name.  All enumerations start with the "SILC_" prefix.  Also,
usually all enumerations are type defined to a specific name which can
be used as type for the enumeration.  Example:

<br />&nbsp;<br />
<tt>
typedef enum {<br />
&nbsp;&nbsp;SILC_EXAMPLE_ENUM_NONE,<br />
&nbsp;&nbsp;SILC_EXAMPLE_ENUM_LIST,<br />
&nbsp;&nbsp;SILC_EXAMPLE_ENUM_STATUS,<br />
} SilcExampleEnum;
</tt>

<br />&nbsp;<br />
The naming for the type definition for the enumerations follow the
normal naming convention; the name starts with "Silc" prefix and the
name is mixed-case.


<br />&nbsp;<br />&nbsp;<br />
<b>Layout</b>

<br />&nbsp;<br />
<b>Indentation</b>

<br />&nbsp;<br />
The indendation in the source code is 2 characters, and tabulators are
not used.  Example piece of code:

<br />&nbsp;<br />
<tt>
void silc_client_free(SilcClient client)<br />
{<br />
&nbsp;&nbsp;if (client) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (client->rng)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;silc_rng_free(client->rng);<br />
&nbsp;&nbsp;&nbsp;&nbsp;silc_free(client);<br />
&nbsp;&nbsp;}<br />
}
</tt>

<br />&nbsp;<br />
<b>Placing Braces</b>

<br />&nbsp;<br />
Generally the braces placing the SILC code follows the K&R style; the
opening of the brace is put to the last on the line, and the closing brace
is on first on its own line, except for functions.  Examples:

<br />&nbsp;<br />
<tt>
if (condition) {<br />
&nbsp;&nbsp;silc_something();<br />
&nbsp;&nbsp;silc_something_more();<br />
}
</tt>

<br />&nbsp;<br />
<tt>
int silc_client_function()<br />
{<br />
&nbsp;&nbsp;return 0;<br />
}
</tt>

<br />&nbsp;<br />
<tt>
if (condition) {<br />
&nbsp;&nbsp;something;<br />
&nbsp;&nbsp;silc_something_more();<br />
} else {<br />
&nbsp;&nbsp;something_else;<br />
}
</tt>

<br />&nbsp;<br />
<tt>
if (condition) {<br />
&nbsp;&nbsp;something;<br />
&nbsp;&nbsp;silc_something_more();<br />
} else if (other_condition) {<br />
&nbsp;&nbsp;something;<br />
&nbsp;&nbsp;silc_something_more();<br />
} else {<br />
&nbsp;&nbsp;something_else;<br />
}
</tt>

<br />&nbsp;<br />
<b>Header Files</b>
<br />&nbsp;<br />

Standard anti-nesting method is used in the header files to avoid 
multiple inclusion of the header file.  Example:

<br />&nbsp;<br />
<tt>
#ifndef SILCHEADER_H<br />
#define SILCHEADER_H<br />
...<br />
#endif /* SILCHEADER_H */
</tt>

<br />&nbsp;<br />
All public header files have the "silc" prefix in the filename, for example:
silcclient.h, silcprivate.h, silcutil.h.  There are other header files in
the Toolkit as well.  Application should not directly include these headers,
however if needed it may access them.

<br />&nbsp;<br />
Every header file also includes a copyright notice.
<br /><br /><br /><br />
    </td></tr>
   </table>
  </td>

  <td bgcolor="#cccccc" background="dot.gif">
   <img src="space.gif" width="1" height="1" border="0" alt=""></td>

  <td width="180" bgcolor="#f0f0f0">
    <img src="space.gif" width="1" height="1" border="0" alt="">
    <table width="100%" cellpadding="4" cellspacing="0">
    <tr valign="top"><td>
<br />
<font face="Helvetica,Arial,Sans-serif" size="1">
</font>

<br /><br /><br /><br />
    </td></tr>
    </table>
  </td>
</tr>
</table>

<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="6" width="100%">
 <tr valign="top" bgcolor="#dddddd">
  <td><small>Copyright &copy; 2001 - 2007 SILC Project<br />
    <a href="http://silcnet.org">SILC Project Website</a></small></td>
  <td align="right"><small>
   <a href="index.html">SILC Toolkit Reference Manual</a><br />
   <a href="toolkit_index.html">Index</a></small></td>
   </small></td>
 </tr>
</table>

</body>
</html>