zhxy/http服务器/appweb-4.3.4-0/doc/api/mpr.html

14797 lines
2.3 MiB

<!DOCTYPE html>
<html lang="en">
<head>
<title>Embedthis Appweb 4.0.0 Documentation</title>
<meta name="keywords" content="embedded web server, web server software, embedded HTTP, application web server,
embedded server, small web server, HTTP server, library web server, library HTTP, HTTP library" />
<meta name="description" content="Embedthis Appweb - embedded web servers for devices and applications." />
<meta charset="utf-8"/>
<link href="../doc.css" rel="stylesheet" type="text/css" />
<link href="api.css" rel="stylesheet" type="text/css" />
<link href="../print.css" rel="stylesheet" type="text/css" media="print"/>
<!--[if IE]>
<link href="../iehacks.css" rel="stylesheet" type="text/css" />
<![endif]-->
<link href="http://www.google.com/cse/style/look/default.css" type="text/css" rel="stylesheet" />
</head>
<body>
<div class="top">
<a class="logo" href="http://appwebserver.org/">&nbsp;</a>
<div class="topRight">
<div class="search">
<div id="cse-search-form"></div>
<div class="version"><!--TITLE-->Embedthis Appweb 4.0.0</div>
</div>
</div>
<div class="crumbs">
<a href="../index.html">Home</a>
&gt; <a href="../ref/appweb/index.html">Programmers Reference</a>
&gt; <a href="native.html">Native APIs</a>
&gt; <b>MPR</b>
</div>
</div>
<div class="content">
<div class="contentRight">
<!-- BeginDsi "dsi/see.html" -->
<h1>See Also</h1>
<ul class="nav">
<li><a href="../ref/appweb/index.html">Programmers Reference</a></li>
<li><a href="../api/native.html">Native APIs</a></li>
</ul>
<!-- EndDsi -->
<h2>Quick Nav</h2>
<ul>
<li><a href="#Components">Components</a></li>
<li><a href="#Typedefs">Typedefs</a></li>
<li><a href="#Functions">Functions</a></li>
<li><a href="#Defines">Defines</a></li>
</ul>
</div>
<div class="contentLeft">
<h1>MPR - MPR API Native API</h1>
<a name="mpr.h"></a>
<p>The Multithreaded Portable Runtime (MPR) is a portable runtime library for embedded applications.</p>
<p><br/><br/>
The MPR provides management for logging, error handling, events, files, http, memory, ssl, sockets, strings, xml parsing, and date/time functions. It also provides a foundation of safe routines for secure programming, that help to prevent buffer overflows and other security threats. The MPR is a library and a C API that can be used in both C and C++ programs. <br/><br/>
The MPR uses a set extended typedefs for common types. These include: bool, cchar, cvoid, uchar, short, ushort, int, uint, long, ulong, int32, uint32, int64, uint64, float, and double. The cchar type is a const char, cvoid is const void. Several types have &quot;u&quot; prefixes to denote unsigned qualifiers. <br/><br/>
The MPR includes a memory allocator and generational garbage collector. The allocator is a fast, immediate coalescing allocator that will return memory back to the O/S if not required. It is optimized for frequent allocations of small blocks (&lt; 4K) and uses a scheme of free queues for fast allocation. <br/><br/>
Not all of these APIs are thread-safe. </p>
<a name="Components"></a><h1>Components</h1>
<table class="apiIndex" title="Components">
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr" class="nameRef">Mpr</a></td>
<td class="apiBrief">Primary MPR application control structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_buf" class="nameRef">MprBuf</a></td>
<td class="apiBrief">Dynamic Buffer Module.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_cache" class="nameRef">MprCache</a></td>
<td class="apiBrief">In-memory caching.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_cmd" class="nameRef">MprCmd</a></td>
<td class="apiBrief">Command execution Service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_dispatcher" class="nameRef">MprDispatcher</a></td>
<td class="apiBrief">Event Dispatcher.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_event" class="nameRef">MprEvent</a></td>
<td class="apiBrief">Event object.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_file" class="nameRef">MprFile</a></td>
<td class="apiBrief">File I/O Module.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_file_system" class="nameRef">MprFileSystem</a></td>
<td class="apiBrief">File system service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_float" class="nameRef">MprFloat</a></td>
<td class="apiBrief">Floating Point Services.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_hash" class="nameRef">MprHash</a></td>
<td class="apiBrief">Hash table entry structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_json" class="nameRef">MprJson</a></td>
<td class="apiBrief">JSON parser.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_list" class="nameRef">MprList</a></td>
<td class="apiBrief">List data structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_log" class="nameRef">MprLog</a></td>
<td class="apiBrief">Logging Services.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_mem" class="nameRef">MprMem</a></td>
<td class="apiBrief">Memory Allocation Service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_mime" class="nameRef">MprMime</a></td>
<td class="apiBrief">Mime Type hash table entry (the URL extension is the key).</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_module" class="nameRef">MprModule</a></td>
<td class="apiBrief">Loadable Module Service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_module_serivce" class="nameRef">MprModuleSerivce</a></td>
<td class="apiBrief">Loadable module service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_path" class="nameRef">MprPath</a></td>
<td class="apiBrief">Path (filename) Information.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_signal" class="nameRef">MprSignal</a></td>
<td class="apiBrief">Signal control structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_socket" class="nameRef">MprSocket</a></td>
<td class="apiBrief">Socket Service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_ssl" class="nameRef">MprSsl</a></td>
<td class="apiBrief">SSL control structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_string" class="nameRef">MprString</a></td>
<td class="apiBrief">Safe String Module.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_synch" class="nameRef">MprSynch</a></td>
<td class="apiBrief">Multithreaded Synchronization Services.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_test_service" class="nameRef">MprTestService</a></td>
<td class="apiBrief">Test service facility.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_thread" class="nameRef">MprThread</a></td>
<td class="apiBrief">Thread Service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_time" class="nameRef">MprTime</a></td>
<td class="apiBrief">Date and Time Service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_wait_handler" class="nameRef">MprWaitHandler</a></td>
<td class="apiBrief">Wait Handler Service.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_worker" class="nameRef">MprWorker</a></td>
<td class="apiBrief">Worker thread structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___mpr_xml" class="nameRef">MprXml</a></td>
<td class="apiBrief">Per XML session structure.</td></tr>
</table>
<a name="Functions"></a><h1>Functions</h1>
<table class="apiIndex" title="Functions">
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga80adc8087f3a20a2669565b281d57a38" class="nameRef">assert</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> cond)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Assert that a condition is true.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_test_service_1ga7f44ec8c71e361a86def92a6d0911c79" class="nameRef">assertTrue</a>(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *loc, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> success, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *msg)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test assert.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="nameRef">fmt</a>(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Format a string into a static buffer.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="nameRef">fmtv</a>(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, va_list args)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Format a string into a statically allocated buffer.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="nameRef">itos</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert an integer to a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="nameRef">itosbuf</a>(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> value, int radix)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert an integer to a string buffer.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="nameRef">itosradix</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> value, int radix)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert an integer to a string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_socket" class="ref">MprSocket*</a></td><td><a href="#group___mpr_socket_1ga8e5dff8e25775b63954faa81e54c7f82" class="nameRef">mprAcceptSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *listen)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Accept an incoming connection.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_key" class="ref">MprKey*</a></td><td><a href="#group___mpr_hash_1ga30fb281d97288573e936facc23efdc49" class="nameRef">mprAddDuplicateKey</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a duplicate symbol value into the hash table.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24" class="nameRef">mprAddFileSystem</a>(<a href="#group___mpr_file_system" class="ref">MprFileSystem</a> *fs)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create and initialize the disk FileSystem.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="nameRef">mprAddItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add an item to a list.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_key" class="ref">MprKey*</a></td><td><a href="#group___mpr_hash_1ga2567b7d48397b6059f76c8589978d654" class="nameRef">mprAddKey</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a symbol value into the hash table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_key" class="ref">MprKey*</a></td><td><a href="#group___mpr_hash_1gaf80b863b16c88df91aad0193b746e4c7" class="nameRef">mprAddKeyFmt</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a key with a formatting value into the hash table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_mime" class="ref">MprMime*</a></td><td><a href="#group___mpr_mime_1ga3eefe2cfee75a6ad3011ec9dde191399" class="nameRef">mprAddMime</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ext, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a mime type to the mime type table.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="nameRef">mprAddNullItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a null item to the list.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="nameRef">mprAddNullToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a null character to the buffer contents.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="nameRef">mprAddRoot</a>(void *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a memory block as a root for garbage collection.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_signal" class="ref">MprSignal*</a></td><td><a href="#group___mpr_signal_1gabcf186c6becc236eb4f4c8416b709f5f" class="nameRef">mprAddSignalHandler</a>(int signo, void *handler, void *arg, <a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a signal handler.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_wait_handler" class="ref">MprWaitHandler*</a></td><td><a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="nameRef">mprAddSocketHandler</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, int mask, <a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, void *proc, void *data, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a wait handler to a socket.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_socket_1ga48875519d20f48a69a66b233d411f62f" class="nameRef">mprAddSocketProvider</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a> *provider)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a secure socket provider for SSL communications.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1ga86d99126f5c4cf54edda02c98a9142a3" class="nameRef">mprAddSslCiphers</a>(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ciphers)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add the ciphers to use for SSL.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_signal_1ga107d9cacb23e9cddb7fcd1e6244638b7" class="nameRef">mprAddStandardSignals</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add standard trapping of system signals.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="nameRef">mprAddTerminator</a>(<a href="#mpr_8h_1ab4e00b849ab3c2bc9ef95ddd69c0e3a3" class="ref">MprTerminator</a> terminator)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a terminator callback.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_test_group" class="ref">MprTestGroup*</a></td><td><a href="#group___mpr_test_service_1gacce17c35eeabad004c762116576636d6" class="nameRef">mprAddTestGroup</a>(<a href="#group___mpr_test_service" class="ref">MprTestService</a> *ts, <a href="#struct_mpr_test_def" class="ref">MprTestDef</a> *def)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a test group to the test service.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="nameRef">mprAdjustBufEnd</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Adjust the buffer end position.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="nameRef">mprAdjustBufStart</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Adjust the buffer start position.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="nameRef">mprAlloc</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Allocate a block of memory.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="nameRef">mprAllocMem</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Allocate a block of memory.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="nameRef">mprAllocObj</a>(<a href="#mpr_8h_1aa49213f0ee6903f508c444506c07dae1" class="ref">Type</a> type, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a> manager)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Allocate an object of a given type.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="nameRef">mprAllocZeroed</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Allocate a zeroed block of memory.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="nameRef">mprAppendList</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="#group___mpr_list" class="ref">MprList</a> *add)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Append a list.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_cmd_1ga41a0e9cb643e435b21d5ff37658beec9" class="nameRef">mprAreCmdEventsEnabled</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return true if command events are enabled.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="nameRef">mprAssert</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *loc, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *msg)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Output an assure assertion failed message.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="nameRef">mprAtomicAdd</a>(volatile int *target, int value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Atomic Add.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="nameRef">mprAtomicAdd64</a>(volatile int64 *target, int value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Atomic 64 bit Add.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="nameRef">mprAtomicBarrier</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Apply a full (read+write) memory barrier.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="nameRef">mprAtomicCas</a>(void *volatile *target, void *expected, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Atomic Compare and Swap.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="nameRef">mprAtomicExchange</a>(void *volatile *target, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Exchange the target and a value.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="nameRef">mprAtomicListInsert</a>(void *volatile *head, volatile void **link, void *item)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Atomic list insertion.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_file" class="ref">MprFile*</a></td><td><a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="nameRef">mprAttachFileFd</a>(int fd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, int omode)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Attach to an existing file descriptor.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_worker_1gadac0b64baeac13c694c58db896dac1d4" class="nameRef">mprAvailableWorkers</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the count of available worker threads Return the count of free threads in the worker thread pool.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_log_1ga5f95e2768c6f5e77ebec25bc471d55cb" class="nameRef">mprBackupLog</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Backup a log.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___mpr_hash_1gae8a8db569fba8c21a10976dd6f2ba3bc" class="nameRef">mprBlendHash</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *target, <a href="#group___mpr_hash" class="ref">MprHash</a> *other)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Blend two hash tables.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="nameRef">mprBreakpoint</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Trigger a breakpoint.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="nameRef">mprBufToString</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert the buffer contents to a string.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="nameRef">mprClearList</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Clears the list of all items.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_buf" class="ref">MprBuf*</a></td><td><a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="nameRef">mprCloneBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *orig)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Clone a buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___mpr_hash_1ga2242c95004582bf394a07caaeaae467e" class="nameRef">mprCloneHash</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Copy a hash table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="nameRef">mprCloneList</a>(<a href="#group___mpr_list" class="ref">MprList</a> *src)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Clone a list and all elements.</td></tr>
<tr class="apiDef"><td class="apiType">struct MprSsl*</td><td><a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="nameRef">mprCloneSsl</a>(<a href="#group___mpr_ssl" class="ref">MprSsl</a> *src)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create the a new SSL control structure based on an existing structure.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="nameRef">mprCloseCmdFd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Close the command channel.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="nameRef">mprCloseFile</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Close a file.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="nameRef">mprCloseSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> graceful)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Close a socket.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="nameRef">mprCompactBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compact the buffer contents.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="nameRef">mprCompareTime</a>(<a href="#group___mpr_time" class="ref">MprTime</a> t1, <a href="#group___mpr_time" class="ref">MprTime</a> t2)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare two times.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="nameRef">mprConnectSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip, int port, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Connect a client socket.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga9d17735f686e0bc754343253795d79ac" class="nameRef">mprCopyListContents</a>(<a href="#group___mpr_list" class="ref">MprList</a> *dest, <a href="#group___mpr_list" class="ref">MprList</a> *src)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Copy list contents.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="nameRef">mprCopyPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *from, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *to, int omode)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Copy a file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr" class="ref">Mpr*</a></td><td><a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="nameRef">mprCreate</a>(int argc, char **argv, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create an instance of the MPR.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_buf" class="ref">MprBuf*</a></td><td><a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="nameRef">mprCreateBuf</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> initialSize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a new buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_cache" class="ref">MprCache*</a></td><td><a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="nameRef">mprCreateCache</a>(int options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a new cache object.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_cmd" class="ref">MprCmd*</a></td><td><a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="nameRef">mprCreateCmd</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a new Command object.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_cond" class="ref">MprCond*</a></td><td><a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="nameRef">mprCreateCond</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a condition lock variable.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_dispatcher" class="ref">MprDispatcher*</a></td><td><a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="nameRef">mprCreateDispatcher</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a new event dispatcher.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_event" class="ref">MprEvent*</a></td><td><a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="nameRef">mprCreateEvent</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> period, void *proc, void *data, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a new event.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="nameRef">mprCreateEventOutside</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, void *proc, void *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create an event outside the MPR.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_file_system" class="ref">MprFileSystem*</a></td><td><a href="#group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee" class="nameRef">mprCreateFileSystem</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create and initialize the FileSystem subsystem.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___mpr_hash_1ga323fad2d21e620c4a8998aaf8b7f01ed" class="nameRef">mprCreateHash</a>(int hashSize, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a hash table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___mpr_hash_1ga6925d347168958f1e488ca4054a6d7d9" class="nameRef">mprCreateHashFromWords</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a hash of words.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_key_value" class="ref">MprKeyValue*</a></td><td><a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="nameRef">mprCreateKeyPair</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a key / value pair.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="nameRef">mprCreateList</a>(int size, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a list.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_mutex" class="ref">MprMutex*</a></td><td><a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="nameRef">mprCreateLock</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a Mutex lock object.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga45fccdc0d6da1387ae53c9b2fd385c10" class="nameRef">mprCreateLogService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Initialize the log service.</td></tr>
<tr class="apiDef"><td class="apiType">struct Mpr*</td><td><a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="nameRef">mprCreateMemService</a>(<a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a> manager, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create and initialize the Memory service.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d" class="nameRef">mprCreateMimeTypes</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create the mime types.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_module" class="ref">MprModule*</a></td><td><a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="nameRef">mprCreateModule</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *entry, void *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a module.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_module_service" class="ref">MprModuleService*</a></td><td><a href="#mpr_8h_1abfbf7a6be96787a293dde205f6b70bb5" class="nameRef">mprCreateModuleService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create and initialize the module service.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_wait_handler_1ga8aa37eb2e397ec2d78e6df15a0d303c5" class="nameRef">mprCreateNotifierService</a>(<a href="#struct_mpr_wait_service" class="ref">MprWaitService</a> *ws)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Internal.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="nameRef">mprCreateOsService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create and initialze the O/S dependent subsystem.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_rom_file_system" class="ref">MprRomFileSystem*</a></td><td><a href="#group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e" class="nameRef">mprCreateRomFileSystem</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create and initialize the ROM FileSystem.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_socket" class="ref">MprSocket*</a></td><td><a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="nameRef">mprCreateSocket</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a socket.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_spin" class="ref">MprSpin*</a></td><td><a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="nameRef">mprCreateSpinLock</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a spin lock lock object.</td></tr>
<tr class="apiDef"><td class="apiType">struct MprSsl*</td><td><a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="nameRef">mprCreateSsl</a>(int server)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create the SSL control structure.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_test_service" class="ref">MprTestService*</a></td><td><a href="#group___mpr_test_service_1ga5f0e737ddfec241ca2387dee7cf068ee" class="nameRef">mprCreateTestService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create the test service.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_thread" class="ref">MprThread*</a></td><td><a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="nameRef">mprCreateThread</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, void *proc, void *data, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> stackSize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a new thread.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="nameRef">mprCreateTimeService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Mpr time structure.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_event" class="ref">MprEvent*</a></td><td><a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="nameRef">mprCreateTimerEvent</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> period, void *proc, void *data, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a timer event.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_wait_handler" class="ref">MprWaitHandler*</a></td><td><a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="nameRef">mprCreateWaitHandler</a>(int fd, int mask, <a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, void *proc, void *data, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a wait handler.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="nameRef">mprDecode64</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Decode a null terminated string using base-46 encoding.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga1fc4c545477ed18a37161aaea54fba5f" class="nameRef">mprDecode64Block</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> *len, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Decode a null terminated string using base-46 encoding.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="nameRef">mprDecodeLocalTime</a>(struct tm *timep, <a href="#group___mpr_time" class="ref">MprTime</a> time)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Decode a time value into a tokenized local time value.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="nameRef">mprDecodeUniversalTime</a>(struct tm *timep, <a href="#group___mpr_time" class="ref">MprTime</a> time)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Decode a time value into a tokenized UTC time structure.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="nameRef">mprDedicateWorker</a>(<a href="#group___mpr_worker" class="ref">MprWorker</a> *worker)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Dedicate a worker thread to a current real thread.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="nameRef">mprDeletePath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Delete a file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj*</a></td><td><a href="#group___mpr_json_1ga3b4504fc235b9089e35ad3793b78b83e" class="nameRef">mprDeserialize</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Deserialize a JSON string into an object tree.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj*</a></td><td><a href="#group___mpr_json_1gad922d1e5cdc4d4f1c33e5e14b069b98e" class="nameRef">mprDeserializeCustom</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="#struct_mpr_json_callback" class="ref">MprJsonCallback</a> callback, void *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Custom deserialization from a JSON string into an object tree.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="nameRef">mprDestroy</a>(int how)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Destroy the MPR.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="nameRef">mprDestroyCache</a>(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Destroy a new cache object.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="nameRef">mprDestroyCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Destroy the command.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="nameRef">mprDestroyMemService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Destroy the memory service.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="nameRef">mprDisableCmdEvents</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Disable command I/O events.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_dispatcher_1ga5236d246266b55a3cfd9765de8501073" class="nameRef">mprDisableDispatcher</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Disable a dispatcher from service events.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="nameRef">mprDisableFileBuffering</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Disable file buffering.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="nameRef">mprDisconnectCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Disconnect a command its underlying I/O channels.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="nameRef">mprDisconnectSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Disconnect a socket by closing its underlying file descriptor.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="nameRef">mprEmptyString</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reference to a permanent preallocated empty string.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="nameRef">mprEnableCmdEvents</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Enable command I/O events.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga39d49294df1ae6d358c30e958585e060" class="nameRef">mprEnableCmdOutputEvents</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Enable command I/O events for the command&apos;s STDOUT and STDERR channels.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="nameRef">mprEnableContinuousEvent</a>(<a href="#group___mpr_event" class="ref">MprEvent</a> *event, int enable)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Enable or disable an event being continous.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="nameRef">mprEnableDispatcher</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Enable a dispatcher to service events.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="nameRef">mprEnableFileBuffering</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Enable file buffering.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="nameRef">mprEnableGC</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Enable or disable the garbage collector.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="nameRef">mprEnableSocketEvents</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, int mask)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Enable socket events for a socket callback.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="nameRef">mprEncode64</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Encode a string using base-46 encoding.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga6c5934d2b6c8dd3d307e8e85cc27908a" class="nameRef">mprEncode64Block</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Encode buffer using base-46 encoding.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="nameRef">mprEprintf</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Print a formatted message to the standard error channel.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="nameRef">mprError</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Log an error message.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="nameRef">mprEscapeCmd</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cmd, int escChar)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Encode a string escaping typical command (shell) characters.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga5cbd659568028d3360b836183c89d4f8" class="nameRef">mprEscapeHtml</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *html)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Encode a string by escaping typical HTML characters.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="nameRef">mprExpireCache</a>(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> expires)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the expiry date for a cache item.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="nameRef">mprFinalizeCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Finalize the writing of data to the command process.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="nameRef">mprFlushBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Flush the buffer contents.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="nameRef">mprFlushFile</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Flush any buffered write data.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="nameRef">mprFlushSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Flush a socket.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="nameRef">mprFormatLocalTime</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="#group___mpr_time" class="ref">MprTime</a> time)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert a time value to local time and format as a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="nameRef">mprFormatTm</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, struct tm *timep)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Format a time value as a local time.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_time_1ga7c0a389bb64973c848209ba1969f2daf" class="nameRef">mprFormatUniversalTime</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="#group___mpr_time" class="ref">MprTime</a> time)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert a time value to universal time and format as a string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="nameRef">mprFprintf</a>(struct MprFile *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Print a formatted message to a file descriptor.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="nameRef">mprGetAbsPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert a path to an absolute path.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="nameRef">mprGetAppDir</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application directory.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="nameRef">mprGetAppName</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application name defined via mprSetAppName.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="nameRef">mprGetAppPath</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application executable path.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="nameRef">mprGetAppTitle</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application title string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="nameRef">mprGetAppVersion</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application version string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="nameRef">mprGetBlockFromBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, char *blk, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a block of data from the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="nameRef">mprGetBlockSize</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the allocated size of a memory block.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_buf_1ga9df20a40f3b643e35f639509572185c8" class="nameRef">mprGetBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the origin of the buffer content storage.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="nameRef">mprGetBufEnd</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a reference to the end of the buffer contents.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="nameRef">mprGetBufLength</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the buffer content length.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a></td><td><a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="nameRef">mprGetBufRefillProc</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the buffer refill procedure.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="nameRef">mprGetBufSize</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current size of the buffer content storage.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="nameRef">mprGetBufSpace</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the space available to store content.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="nameRef">mprGetBufStart</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the start of the buffer contents.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="nameRef">mprGetCharFromBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a character from the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_buf" class="ref">MprBuf*</a></td><td><a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="nameRef">mprGetCmdBuf</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the underlying buffer for a channel.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="nameRef">mprGetCmdExitStatus</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the command exit status.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="nameRef">mprGetCmdFd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the underlying file descriptor for an I/O channel.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="nameRef">mprGetCmdlineLogging</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get if command line logging is being used.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1a7c5ca1c1ea9197509c0e60d9f6a8fed7" class="ref">MprOsThread</a></td><td><a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="nameRef">mprGetCurrentOsThread</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the O/S thread.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="nameRef">mprGetCurrentPath</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the current working directory.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_thread" class="ref">MprThread*</a></td><td><a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="nameRef">mprGetCurrentThread</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the currently executing thread.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="nameRef">mprGetCurrentThreadName</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the name of the current thread.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="nameRef">mprGetDate</a>(char *fmt)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a string representation of the current date/time.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="nameRef">mprGetDebugMode</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the debug mode.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_dispatcher" class="ref">MprDispatcher*</a></td><td><a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="nameRef">mprGetDispatcher</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the MPR primary dispatcher.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="nameRef">mprGetDomainName</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application domain name string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a></td><td><a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="nameRef">mprGetElapsedTicks</a>(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> mark)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the elapsed time since a ticks mark.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_time" class="ref">MprTime</a></td><td><a href="#group___mpr_time_1ga56c79ce10b54876dc9488694039a3ea9" class="nameRef">mprGetElapsedTime</a>(<a href="#group___mpr_time" class="ref">MprTime</a> mark)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the elapsed time since a starting time mark.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="nameRef">mprGetEndian</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the endian byte ordering for the application.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="nameRef">mprGetError</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the error code for the most recent system or library operation.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1gac5f245cb0afb8678e9193f2e60a3fee7" class="nameRef">mprGetExitStatus</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the exit status.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="nameRef">mprGetFileChar</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read a character from the file.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="nameRef">mprGetFileFd</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the file descriptor for a file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a></td><td><a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="nameRef">mprGetFilePosition</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the current file position.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a></td><td><a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="nameRef">mprGetFileSize</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the size of the file.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="nameRef">mprGetFirstItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the first item in the list.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_key" class="ref">MprKey*</a></td><td><a href="#group___mpr_hash_1gaa26eea3d5e44d4e96aaf93eb200774bc" class="nameRef">mprGetFirstKey</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the first symbol in a symbol entry.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="nameRef">mprGetFirstPathSeparator</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the first path separator in a path.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_hash_1ga2c078b228b88412f5d922e45c9002c5c" class="nameRef">mprGetHashLength</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the count of symbols in a symbol entry.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a151d6b4fc026bbbf0b057d78f2543f50" class="ref">uint64</a></td><td><a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="nameRef">mprGetHiResTicks</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the CPU tick count.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="nameRef">mprGetHostName</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application host name string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="nameRef">mprGetIpAddr</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application IP address string.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="nameRef">mprGetItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int index)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an list item.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="nameRef">mprGetLastItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the last item in the list.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="nameRef">mprGetListCapacity</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current capacity of the list.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="nameRef">mprGetListLength</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the number of items in the list.</td></tr>
<tr class="apiDef"><td class="apiType">struct MprFile*</td><td><a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="nameRef">mprGetLogFile</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the log file object.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a></td><td><a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="nameRef">mprGetLogHandler</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current MPR debug log handler.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="nameRef">mprGetLogLevel</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current logging level.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="nameRef">mprGetMD5</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an MD5 checksum.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="nameRef">mprGetMD5WithPrefix</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *prefix)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an MD5 checksum with optional prefix string and buffer length.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="nameRef">mprGetMaxWorkers</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the maximum count of worker pool threads Get the maximum limit of worker pool threads.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="nameRef">mprGetMem</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the amount of memory currently used by the application.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_mem_stats" class="ref">MprMemStats*</a></td><td><a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="nameRef">mprGetMemStats</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the current allocation memory statistics block.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_mime_1gab7c0d14ebd022bcac4156c3f59320dfe" class="nameRef">mprGetMimeProgram</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the mime type program for a given mimeType.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="nameRef">mprGetModuleSearchPath</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the module search path.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr" class="ref">Mpr*</a></td><td><a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="nameRef">mprGetMpr</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the MPR control instance.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="nameRef">mprGetNativePath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a path formatted according to the native O/S conventions.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="nameRef">mprGetNextItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int *lastIndex)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the next item in the list.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_key" class="ref">MprKey*</a></td><td><a href="#group___mpr_hash_1ga7be8b20f3f390f7c3c05d90dbbb294b5" class="nameRef">mprGetNextKey</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="#struct_mpr_key" class="ref">MprKey</a> *last)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the next symbol in a symbol entry.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_list_1ga31b345e5025febb1faca8311bddd5e1f" class="nameRef">mprGetNextStableItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int *lastIndex)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the next item in a stable list.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="nameRef">mprGetOsError</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the O/S error code.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="nameRef">mprGetPageSize</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current O/S virtual page size.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="nameRef">mprGetPathBase</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the base portion of a path.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_path_1ga74c1b093a73d3090e7a2cfe65b484a73" class="nameRef">mprGetPathBaseRef</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a reference to the base portion of a path.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="nameRef">mprGetPathDir</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the directory portion of a path.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="nameRef">mprGetPathExt</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the file extension portion of a path.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="nameRef">mprGetPathFiles</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *dir, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a list of files in a directory or subdirectories.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga435c9c0fb265e43a6720c1780bc10d4c" class="nameRef">mprGetPathFirstDir</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the first directory portion of a path.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_path_1ga918a614957a1d6f2a5aba18ef24532c8" class="nameRef">mprGetPathInfo</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="#group___mpr_path" class="ref">MprPath</a> *info)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return information about a file represented by a path.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="nameRef">mprGetPathLink</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the target of a symbolic link.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="nameRef">mprGetPathNewline</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the file newline character string for a given path.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="nameRef">mprGetPathParent</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the parent directory of a path.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="nameRef">mprGetPathSeparators</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the path directory separator.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="nameRef">mprGetPortablePath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a portable path.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="nameRef">mprGetPrevItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int *lastIndex)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the previous item in the list.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="nameRef">mprGetRandomBytes</a>(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> block)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get some random data.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="nameRef">mprGetRelPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *dest, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *origin)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a relative path.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a></td><td><a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="nameRef">mprGetRemainingTicks</a>(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> mark, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the time remaining until a timeout has elapsed.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga5352f8f9f7d96d7e58dc7b784cd9c500" class="nameRef">mprGetSHA</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an SHA1 checksum.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga08b9fc2b79eb1592298d20d9e3f4be5d" class="nameRef">mprGetSHABase64</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an SHA1 checksum of a null terminated string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga66f3b909d68d969920f962613d00d454" class="nameRef">mprGetSHAWithPrefix</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *prefix)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an SHA1 checksum with optional prefix string and buffer length.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="nameRef">mprGetServerName</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the application server name string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="nameRef">mprGetSocketBlockingMode</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the socket blocking mode.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="nameRef">mprGetSocketError</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a socket error code.</td></tr>
<tr class="apiDef"><td class="apiType">Socket</td><td><a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="nameRef">mprGetSocketFd</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the socket file descriptor.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="nameRef">mprGetSocketInfo</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip, int port, int *family, int *protocol, struct sockaddr **addr, <a href="#mpr_8h_1a7e81f05ea37d05efc10e7c45c1111d0d" class="ref">Socklen</a> *addrlen)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the socket for an IP:Port address.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="nameRef">mprGetSocketPort</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the port used by a socket.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="nameRef">mprGetSocketState</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the socket state.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_ssl_1ga0751a98b49aa54ef0b416d892e072270" class="nameRef">mprGetSslCipherCode</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cipher)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lookup an SSL cipher by its IANA name and return the cipher IANA code.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_ssl_1ga2726c76da3ced81e8ebb5a573573d1c9" class="nameRef">mprGetSslCipherName</a>(int cipher)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lookup an SSL cipher by its IANA code and return the string name.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_file" class="ref">MprFile*</a></td><td><a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="nameRef">mprGetStderr</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return a file object for the Stderr I/O channel.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_file" class="ref">MprFile*</a></td><td><a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="nameRef">mprGetStdin</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return a file object for the Stdin I/O channel.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_file" class="ref">MprFile*</a></td><td><a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="nameRef">mprGetStdout</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return a file object for the Stdout I/O channel.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="nameRef">mprGetTempPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tmpDir)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a temporary file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="nameRef">mprGetThreadName</a>(<a href="#group___mpr_thread" class="ref">MprThread</a> *thread)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the thread name.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="nameRef">mprGetThreadPriority</a>(<a href="#group___mpr_thread" class="ref">MprThread</a> *thread)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the thread priroity.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a></td><td><a href="#group___mpr_time_1ga1d972a6ab180618674c5f9220f88d68a" class="nameRef">mprGetTicks</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the system time.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_time" class="ref">MprTime</a></td><td><a href="#group___mpr_time_1gaef18991a0e0a55e3a21bf3bf34cfa80b" class="nameRef">mprGetTime</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the time.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="nameRef">mprGetTimeZoneOffset</a>(<a href="#group___mpr_time" class="ref">MprTime</a> when)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current timezone offset for a given time.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="nameRef">mprGetWinPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert a path to an absolute windows path.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_worker_1gada34402b39990eab1ff9d55d9e271076" class="nameRef">mprGetWorkerStats</a>(<a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a> *stats)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the Worker service statistics.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="nameRef">mprGlobalLock</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Globally lock the application.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="nameRef">mprGlobalUnlock</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Unlock the global mutex.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="nameRef">mprGrowBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Grow the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1ga5225bb78e37d614aa23ea152458f3037" class="nameRef">mprHasDualNetworkStack</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>has the system got a dual IPv4 + IPv6 network stack.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1ga5c17fdbbeb17d1464a97fcbc669838be" class="nameRef">mprHasIPv6</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the system support IPv6.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="nameRef">mprHasMemError</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the MPR has encountered memory allocation errors.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="nameRef">mprHasSecureSockets</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if SSL is available.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1ae5d78c44aca7282c6c5b85dc5b4f162e" class="nameRef">mprHiddenSocketData</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len, int dir)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Indicate that the application layer has buffered data for the socket.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="nameRef">mprHold</a>(void *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Hold a memory block.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a></td><td><a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="nameRef">mprIncCache</a>(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> amount)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Increment a numeric cache item.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="nameRef">mprInfo</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Log an informational message.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="nameRef">mprInitList</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Initialize a list structure.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_mutex" class="ref">MprMutex*</a></td><td><a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="nameRef">mprInitLock</a>(<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *mutex)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Initialize a statically allocated Mutex lock object.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_spin" class="ref">MprSpin*</a></td><td><a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="nameRef">mprInitSpinLock</a>(<a href="#struct_mpr_spin" class="ref">MprSpin</a> *lock)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Initialize a statically allocated spinlock object.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="nameRef">mprInsertCharToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, int c)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Insert a character into the buffer.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="nameRef">mprInsertItemAtPos</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int index, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Insert an item into a list at a specific position.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="nameRef">mprIsCmdComplete</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a command is complete.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="nameRef">mprIsCmdRunning</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the command is still running.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="nameRef">mprIsExiting</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the MPR is exiting.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="nameRef">mprIsFinished</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the MPR has finished.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1gaec9134c334a714e44c62396c88a012c9" class="nameRef">mprIsIPv6</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the IP address is an IPv6 address.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="nameRef">mprIsIdle</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the App is idle.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_float_1ga00cde73edc55911e4ba714f445544502" class="nameRef">mprIsInfinite</a>(double value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a double value is infinte.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_float_1ga05a04872e6d51bca40b2223e466984b7" class="nameRef">mprIsNan</a>(double value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a double value is not-a-number.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_path_1ga2049719abeb04bb8cc89e89dbc8ad4aa" class="nameRef">mprIsPathAbs</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if a path is absolute.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_path_1ga3e583d5b6b29cdc5cf686802c2ca40f3" class="nameRef">mprIsPathDir</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if a path is a directory.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_path_1ga932b2591cfd0deda28a559c9286800ba" class="nameRef">mprIsPathRel</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if a path is relative.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_path_1ga4328cbd16ad63b5ddcfa1db28192a53c" class="nameRef">mprIsPathSeparator</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> c)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a character is a path separarator.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="nameRef">mprIsSocketEof</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the other end of the socket has been closed.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="nameRef">mprIsSocketSecure</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the socket is secure.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#mpr_8h_1a9077f7fb7f0b3ab411af60dca7324da3" class="nameRef">mprIsSocketV6</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the socket is using IPv6 Currently only works for server side addresses.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="nameRef">mprIsStopping</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the application is stopping.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="nameRef">mprIsStoppingCore</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the application is stopping and core services are being terminated.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="nameRef">mprIsValid</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test is a pointer is a valid memory context.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_float_1gafb9eede8122d445daefbadd3122bba42" class="nameRef">mprIsZero</a>(double value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a double value is zero.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="nameRef">mprJoinPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *base, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Join paths.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="nameRef">mprJoinPathExt</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ext)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Join an extension to a path.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_json_1gaf3a154d27e542e86b53c68812911f41c" class="nameRef">mprJsonParseError</a>(<a href="#group___mpr_json" class="ref">MprJson</a> *jp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Signal a parse error in the JSON input stream.</td></tr>
<tr class="apiDef"><td class="apiType">Socket</td><td><a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="nameRef">mprListenOnSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip, int port, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Listen on a server socket for incoming connections.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="nameRef">mprLoadModule</a>(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Load a module.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="nameRef">mprLoadNativeModule</a>(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Load a native module.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="nameRef">mprLoadSsl</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Load the SSL module.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="nameRef">mprLock</a>(<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *lock)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lock access.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="nameRef">mprLog</a>(int level, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a message to the log file.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1gaeaa023b9736347b621f77f765f6b91ba" class="nameRef">mprLogHeader</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Emit a descriptive log header.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="nameRef">mprLookAtLastCharInBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Peek at the last character in the buffer.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="nameRef">mprLookAtNextCharInBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Peek at the next character in the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_file_system" class="ref">MprFileSystem*</a></td><td><a href="#group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2" class="nameRef">mprLookupFileSystem</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lookup a file system.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="nameRef">mprLookupItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Find an item and return its index.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_hash_1ga28eaf688ae47d09abd9552fe003cedbb" class="nameRef">mprLookupKey</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lookup a symbol in the hash table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#struct_mpr_key" class="ref">MprKey*</a></td><td><a href="#group___mpr_hash_1gae40e700117eb9799e95daa50fec3e2e6" class="nameRef">mprLookupKeyEntry</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lookup a symbol in the hash table and return the hash entry.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_mime_1ga013e01965b445bb9d61337fc9e13fa9a" class="nameRef">mprLookupMime</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ext)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the mime type for an extension.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_module" class="ref">MprModule*</a></td><td><a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="nameRef">mprLookupModule</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lookup a module.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="nameRef">mprLookupModuleData</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lookup a module and return the module data.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="nameRef">mprLookupStringItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Find a string item and return its index.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="nameRef">mprMakeArgv</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *command, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> ***argv, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a argv style array of command arguments.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="nameRef">mprMakeDir</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int perms, int owner, int group, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> makeMissing)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a directory.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="nameRef">mprMakeLink</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> hard)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a link.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="nameRef">mprMapSeparators</a>(char *path, int separator)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Map the separators in a path.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="nameRef">mprMark</a>(void *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Mark a memory block as in-use.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga145c345997c2bf0d15e5830736fbe657" class="nameRef">mprMarkBlock</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Mark a block as &quot;in-use&quot; for the Garbage Collector.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="nameRef">mprMemcmp</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *b1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> b1Len, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *b2, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> b2Len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare two byte strings.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="nameRef">mprMemcpy</a>(void *dest, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> destMax, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *src, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> nbytes)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Safe copy for a block of data.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="nameRef">mprMemdup</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Duplicate a block of memory.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1gaa3bb4935aa8ee20f4f064068ff28b2a5" class="nameRef">mprNap</a>(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> msec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Nap for a while.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="nameRef">mprNormalizePath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Normalize a path.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#mpr_8h_1a7d645142ebb3d7f1f2df54f7170f5b08" class="nameRef">mprNotifyOn</a>(<a href="#struct_mpr_wait_service" class="ref">MprWaitService</a> *ws, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp, int mask)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Begin I/O notification services on a wait handler.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_file" class="ref">MprFile*</a></td><td><a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="nameRef">mprOpenFile</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *filename, int omode, int perms)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Open a file.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1gadbc113c2a4d14de7a12114eda5b1e733" class="nameRef">mprParseArgs</a>(char *command, char **argv, int maxArgs)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a argv style array of command arguments.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1gab4fc05336b092c46ca726f3aae3f1007" class="nameRef">mprParseSocketAddress</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *address, char **ip, int *port, int *secure, int defaultPort)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Parse an socket address IP address.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_test_service_1ga7cc536ed137426a2c12419fb71cfbad9" class="nameRef">mprParseTestArgs</a>(<a href="#group___mpr_test_service" class="ref">MprTestService</a> *ts, int argc, char **argv, <a href="#group___mpr_test_service_1gad9ed01b45cca9fda02f9eb692e28cd69" class="ref">MprTestParser</a> extraParser)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Parse test command arguments.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="nameRef">mprPathExists</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int omode)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if a file exists for a path name and can be accessed.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="nameRef">mprPeekFileChar</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Non-destructively read a character from the file.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga192b4e4644029986c0fab0dc79d6999a" class="nameRef">mprPollWinCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Poll for I/O on the command pipes.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="nameRef">mprPopItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Pop an item.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="nameRef">mprPrintMem</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *msg, int detail)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Print a memory usage report to stdout.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="nameRef">mprPrintf</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Formatted print.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga2d741b3b924272af2121323cf1669a69" class="nameRef">mprPrintfCore</a>(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxsize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, va_list args)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Format a string into a buffer.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cache_1ga5abf88b56ea534c0cb36b0969f56d274" class="nameRef">mprPruneCache</a>(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Prune the cache.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="nameRef">mprPushItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Push an item onto the list.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="nameRef">mprPutBlockToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Put a block to the buffer.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="nameRef">mprPutCharToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, int c)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Put a character to the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="nameRef">mprPutFileChar</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, int c)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a character to the file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="nameRef">mprPutFileString</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a string to the file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="nameRef">mprPutIntToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> i)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Put an integer to the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="nameRef">mprPutPadToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, int c, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Put padding characters to the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="nameRef">mprPutStringToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Put a string to the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="nameRef">mprPutSubStringToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Put a substring to the buffer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_buf_1gac1891a432cf1745b7ec7d23864a7134a" class="nameRef">mprPutToBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Put a formatted string to the buffer.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="nameRef">mprQueueIOEvent</a>(<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Queue an IO event for dispatch on the wait handler dispatcher.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="nameRef">mprRandom</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return a random number.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="nameRef">mprRawLog</a>(int level, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a raw log message to the diagnostic log file.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="nameRef">mprReadCache</a>(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="#group___mpr_time" class="ref">MprTime</a> *modified, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> *version)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read an item from the cache.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="nameRef">mprReadCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel, char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> bufsize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make the I/O channels to send and receive data to and from the command.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="nameRef">mprReadFile</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, void *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read data from a file.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="nameRef">mprReadLine</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> *len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read a line from the file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="nameRef">mprReadSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, void *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read from a socket.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="nameRef">mprRealloc</a>(void *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reallocate a block.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="nameRef">mprReapCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reap the command.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="nameRef">mprRecallWaitHandler</a>(<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Recall a wait handler.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="nameRef">mprRecallWaitHandlerByFd</a>(int fd)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Recall a wait handler by fd.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="nameRef">mprRefillBuf</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Refill the buffer with data.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1a14a802b66bf59a019a884710ce18bdaf" class="nameRef">mprRelayEvent</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, void *proc, void *data, <a href="#group___mpr_event" class="ref">MprEvent</a> *event)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Relay an event to a dispatcher.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="nameRef">mprRelease</a>(void *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Release a memory block.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="nameRef">mprReleaseWorker</a>(<a href="#group___mpr_worker" class="ref">MprWorker</a> *worker)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Release a worker thread.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="nameRef">mprRemoveCache</a>(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove items from the cache.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="nameRef">mprRemoveEvent</a>(<a href="#group___mpr_event" class="ref">MprEvent</a> *event)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove an event.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="nameRef">mprRemoveItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove an item from the list.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="nameRef">mprRemoveItemAtPos</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int index)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove an item from the list.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_hash_1ga1257962021e54d8c6156e49031b7a8ec" class="nameRef">mprRemoveKey</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a symbol entry from the hash table.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga85633d8034896cf4f056caa1857bf4a8" class="nameRef">mprRemoveLastItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove the last item from the list.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="nameRef">mprRemoveRangeOfItems</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int start, int end)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a range of items from the list.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="nameRef">mprRemoveRoot</a>(void *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>remove a memory block as a root for garbage collection.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_socket_1ga02e481047fbc58df3cf3afc31f15a2b4" class="nameRef">mprRemoveSocketHandler</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a socket wait handler.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="nameRef">mprRemoveStringItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a string item from the list.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="nameRef">mprRemoveWaitHandler</a>(<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Disconnect a wait handler from its underlying file descriptor.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="nameRef">mprReplacePathExt</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *dir, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ext)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Replace an extension to a path.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_test_service_1ga240dcddc4f94f7020a5f19f62f50c349" class="nameRef">mprReportTestResults</a>(<a href="#group___mpr_test_service" class="ref">MprTestService</a> *ts)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Report the test results.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="nameRef">mprRequestGC</a>(int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Collect garbage.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="nameRef">mprRescheduleEvent</a>(<a href="#group___mpr_event" class="ref">MprEvent</a> *event, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> period)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reschedule an event.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="nameRef">mprResetBufIfEmpty</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reset the buffer.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="nameRef">mprResetCond</a>(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reset a condition variable.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="nameRef">mprResetMemError</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reset the memory allocation error flag.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_test_service_1gaeb846dc87e4083577ca675746525425a" class="nameRef">mprResetTestGroup</a>(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reset a test group.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="nameRef">mprResetYield</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reset a sticky yield.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="nameRef">mprResolvePath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *base, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Resolve paths.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="nameRef">mprRestart</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Restart the application.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="nameRef">mprRestartContinuousEvent</a>(<a href="#group___mpr_event" class="ref">MprEvent</a> *event)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Restart an event.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="nameRef">mprRunCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *command, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **envp, char **out, char **err, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Run a command using a string command line.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="nameRef">mprRunCmdV</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int argc, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **argv, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **envp, char **out, char **err, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Run a command using an argv[] array of arguments.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_test_service_1ga7db4de7f1b7418ed3a955567fe67e893" class="nameRef">mprRunTests</a>(<a href="#group___mpr_test_service" class="ref">MprTestService</a> *ts)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Run the define unit tests.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="nameRef">mprSamePath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path2)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare two paths if they are the same.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="nameRef">mprSamePathCount</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path2, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare two paths if they are the same for a given length.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="nameRef">mprSearchForModule</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *module)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Search for a module on the current module path.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="nameRef">mprSearchPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int flags, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *search, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Search for a path.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a></td><td><a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="nameRef">mprSeekFile</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, int seekType, <a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a> distance)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Seek the I/O pointer to a new location in the file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_json_1ga49d7cf92024233b5bbabccbee666967f" class="nameRef">mprSerialize</a>(<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a> *obj, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Serialize a JSON object tree into a string.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="nameRef">mprServiceEvents</a>(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> delay, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Service events.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="nameRef">mprServicesAreIdle</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the MPR services.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="nameRef">mprSetAppName</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *title, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *version)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the application name, title and version.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga6ba839ff6e8b6e4cfa5c17ad6356d9ac" class="nameRef">mprSetAppPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the application executable path.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="nameRef">mprSetBufMax</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the maximum buffer size.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="nameRef">mprSetBufRefillProc</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a> fn, void *arg)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the buffer refill procedure.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="nameRef">mprSetBufSize</a>(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the buffer size.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="nameRef">mprSetCacheLimits</a>(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> keys, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> lifespan, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> memory, int resolution)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the cache resource limits.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="nameRef">mprSetCmdCallback</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="#mpr_8h_1a1c7c70f4420c48fec0dfd1f238ce59bf" class="ref">MprCmdProc</a> callback, void *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a callback to be invoked to receive response data from the command.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga9f86aee08df0e092359a9d2ed662f856" class="nameRef">mprSetCmdDefaultEnv</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **env)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the default environment to use for commands.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="nameRef">mprSetCmdDir</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *dir)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the home directory for the command.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="nameRef">mprSetCmdEnv</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **env)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the command environment.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="nameRef">mprSetCmdSearchPath</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *search)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the default command search path.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="nameRef">mprSetCmdlineLogging</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set if command line logging was requested.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="nameRef">mprSetCurrentThreadPriority</a>(int priority)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the thread priroity for the current thread.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="nameRef">mprSetDebugMode</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Turn on debug mode.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="nameRef">mprSetDomainName</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the application domain name string.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1gaa335e1d324029029795409a9a857dbdf" class="nameRef">mprSetEnv</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set an environment variable value.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="nameRef">mprSetExitStrategy</a>(int strategy)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the exit strategy for when the application terminates.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga278ee775a1c2e956d09a4683e778caea" class="nameRef">mprSetExitTimeout</a>(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the exit timeout for a graceful shutdown or restart.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga53dd3e2813e09afdeca537bd1a8584c8" class="nameRef">mprSetFilesLimit</a>(int limit)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the maximum number of open file/socket descriptors.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="nameRef">mprSetHostName</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the application host name string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#mpr_8h_1af4113f22c0d3fa830415b1c1c2877b7d" class="ref">MprIdleCallback</a></td><td><a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="nameRef">mprSetIdleCallback</a>(<a href="#mpr_8h_1af4113f22c0d3fa830415b1c1c2877b7d" class="ref">MprIdleCallback</a> idleCallback)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a new idle callback to be invoked by <a class="ref" href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99">mprIsIdle()</a></td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="nameRef">mprSetIpAddr</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Sete the application IP address string.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="nameRef">mprSetItem</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int index, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a list item.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="nameRef">mprSetListLimits</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, int initialSize, int maxSize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define the list size limits.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1gad1c46a00821497d3146925dde1980791" class="nameRef">mprSetLogBackup</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> logSize, int backupCount, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the log rotation parameters.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="nameRef">mprSetLogFile</a>(struct MprFile *file)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a file to be used for logging.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="nameRef">mprSetLogHandler</a>(<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a> handler)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set an MPR debug log handler.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="nameRef">mprSetLogLevel</a>(int level)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the current logging level.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="nameRef">mprSetManager</a>(void *ptr, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a> manager)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Update the manager for a block of memory.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1gad69af558283f6f1f3277ae9e77029017" class="nameRef">mprSetMaxSocketAccept</a>(int max)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the maximum number of accepted client connections that are permissable.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="nameRef">mprSetMaxWorkers</a>(int count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the maximum count of worker threads Set the maximum number of worker pool threads for the MPR.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="nameRef">mprSetMemError</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set an memory allocation error condition on a memory context.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="nameRef">mprSetMemLimits</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> redline, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxMemory)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Configure the application memory limits.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="nameRef">mprSetMemNotifier</a>(<a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a> cback)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a memory notifier.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="nameRef">mprSetMemPolicy</a>(int policy)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the memory allocation policy for when allocations fail.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_mime_1ga5f1165a45b9a43aed99b1e25900b0fbd" class="nameRef">mprSetMimeProgram</a>(<a href="#group___mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *program)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the mime type program.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="nameRef">mprSetMinWorkers</a>(int count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the minimum count of worker threads Set the count of threads the worker pool will have.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="nameRef">mprSetModuleFinalizer</a>(<a href="#group___mpr_module" class="ref">MprModule</a> *module, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a> stop)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a module finalizer that will be called before a module is stopped.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="nameRef">mprSetModuleSearchPath</a>(char *searchPath)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the module search path.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="nameRef">mprSetModuleTimeout</a>(<a href="#group___mpr_module" class="ref">MprModule</a> *module, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a module timeout.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1gaaaecf83d8b07a92579eb8ad5454cdc45" class="nameRef">mprSetOsError</a>(int error)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the O/S error code.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812" class="nameRef">mprSetPathNewline</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *newline)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the file system new line character string.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2" class="nameRef">mprSetPathSeparators</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *separators)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the file system path separators.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c" class="nameRef">mprSetRomFileSystem</a>(<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a> *inodeList)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the ROM file system data.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="nameRef">mprSetServerName</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the application server name string.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="nameRef">mprSetSocketBlockingMode</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the socket blocking mode.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="nameRef">mprSetSocketEof</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> eof)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set an EOF condition on the socket.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="nameRef">mprSetSocketNoDelay</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the socket delay mode.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="nameRef">mprSetSslCaFile</a>(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *caFile)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the client certificate file to use for SSL.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="nameRef">mprSetSslCaPath</a>(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *caPath)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the path for the client certificate directory.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="nameRef">mprSetSslCertFile</a>(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *certFile)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set certificate to use for SSL.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="nameRef">mprSetSslCiphers</a>(<a href="#group___mpr_ssl" class="ref">MprSsl</a> *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ciphers)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the ciphers to use.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="nameRef">mprSetSslKeyFile</a>(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *keyFile)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the key file to use for SSL.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1ga00cd731b20d96a0b0080637d59becd4a" class="nameRef">mprSetSslProtocols</a>(struct MprSsl *ssl, int protocols)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the SSL protocol to use.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1ga98e6c82c9ff89135aea961c2ff3d4de4" class="nameRef">mprSetSslProvider</a>(<a href="#group___mpr_ssl" class="ref">MprSsl</a> *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *provider)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the SSL provider to use.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="nameRef">mprSetThreadPriority</a>(<a href="#group___mpr_thread" class="ref">MprThread</a> *thread, int priority)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the thread priroity.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="nameRef">mprSetWorkerStackSize</a>(int size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the default worker stack size.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="nameRef">mprShouldAbortRequests</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if requests should be aborted.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="nameRef">mprShouldDenyNewRequests</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if new requests should be denied.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="nameRef">mprSignalCond</a>(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Signal a condition lock variable.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="nameRef">mprSignalDispatcher</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Signal the dispatcher to wakeup and re-examine its queues.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="nameRef">mprSignalMultiCond</a>(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Signal a condition lock variable for use with multiple waiters.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_test_service_1gafc5c0f319089d68b7ddc4838aec22db1" class="nameRef">mprSignalTest2Complete</a>(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Signal a test is complete.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_test_service_1gabc396ef1ecce963fbcb17ee8d713d3c0" class="nameRef">mprSignalTestComplete</a>(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Signal a test is complete.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="nameRef">mprSleep</a>(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> msec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Sleep for a while.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="nameRef">mprSocketHandshaking</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the socket is doing an SSL handshake.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="nameRef">mprSocketHasBufferedRead</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the socket has buffered read data.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="nameRef">mprSocketHasBufferedWrite</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the socket has buffered write data.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_list_1ga555a5a3f40af20aeb5e4ba99212d4b4e" class="nameRef">mprSort</a>(void *base, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> num, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> width, <a href="#group___mpr_list_1ga128df90ccf99b25bd404afc01ace1415" class="ref">MprSortProc</a> compare, void *ctx)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Quicksort.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="nameRef">mprSortList</a>(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="#group___mpr_list_1ga128df90ccf99b25bd404afc01ace1415" class="ref">MprSortProc</a> compare, void *ctx)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Sort a list.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="nameRef">mprSpinLock</a>(<a href="#struct_mpr_spin" class="ref">MprSpin</a> *lock)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lock a spinlock.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="nameRef">mprSpinUnlock</a>(<a href="#struct_mpr_spin" class="ref">MprSpin</a> *lock)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Unlock a spinlock.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="nameRef">mprStart</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start the Mpr services.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="nameRef">mprStartCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int argc, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **argv, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **envp, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start the command.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="nameRef">mprStartEventsThread</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start an thread dedicated to servicing events.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_log_1gaaa6773428f23b0a3cede171550bb4abc" class="nameRef">mprStartLogging</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *logSpec, int showConfig)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start logging.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="nameRef">mprStartModule</a>(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start a module.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#mpr_8h_1abab36952856d0d468adaffd764d00a3e" class="nameRef">mprStartModuleService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start the module service.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="nameRef">mprStartOsService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start the O/S dependent subsystem.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="nameRef">mprStartThread</a>(<a href="#group___mpr_thread" class="ref">MprThread</a> *thread)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start a thread.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="nameRef">mprStartWorker</a>(<a href="#group___mpr_worker_1ga1c2789aea11b60b13644c3b4e7c54f99" class="ref">MprWorkerProc</a> proc, void *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Start a worker thread.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="nameRef">mprStopCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int signal)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Stop the command.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="nameRef">mprStopContinuousEvent</a>(<a href="#group___mpr_event" class="ref">MprEvent</a> *event)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Stop an event.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="nameRef">mprStopModule</a>(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Stop a module.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1a4a74ded985a5d974beb42618de5a07af" class="nameRef">mprStopModuleService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Stop the module service.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="nameRef">mprStopOsService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Stop the O/S dependent subsystem.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="nameRef">mprTerminate</a>(int flags, int status)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Terminate the application.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="nameRef">mprTrace</a>(int level, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a trace message to the diagnostic log file.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="nameRef">mprTransformPath</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Transform a path.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1ga4945b9360d7d3cb11b490d2e67e580fc" class="nameRef">mprTrimPathDrive</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Trim the drive from a path.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="nameRef">mprTrimPathExt</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Trim an extension from a path.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="nameRef">mprTruncateFile</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Truncate a file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="nameRef">mprTryLock</a>(<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *lock)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Attempt to lock access.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="nameRef">mprTrySpinLock</a>(<a href="#struct_mpr_spin" class="ref">MprSpin</a> *lock)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Attempt to lock access on a spin lock.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="nameRef">mprUnloadModule</a>(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Unload a module.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="nameRef">mprUnloadNativeModule</a>(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Unload a native module.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="nameRef">mprUnlock</a>(<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *lock)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Unlock a mutex.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="nameRef">mprUpgradeSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *peerName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Upgrade a socket to use SSL/TLS.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="nameRef">mprUriDecode</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Decode a URI string by de-scaping URI characters.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1ga120b50614f04cffa2087c26d5228f1e8" class="nameRef">mprUriDecodeInSitu</a>(char *uri)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Decode a URI string by de-scaping URI characters.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="nameRef">mprUriEncode</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, int map)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Encode a string by escaping URI characters.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="nameRef">mprUsingDefaultLogHandler</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Determine if the app is using the default MPR log handler.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="nameRef">mprValidateBlock</a>(void *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Validate a memory block and issue asserts if the memory block is not valid.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="nameRef">mprVerifyMem</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Verify all memory.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1ga541aec6f41d797ea79ca2df68836bc8b" class="nameRef">mprVerifySslDepth</a>(struct MprSsl *ssl, int depth)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Control the depth of SSL SSL certificate verification.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1gaa94da504a06310268bed77f129201803" class="nameRef">mprVerifySslIssuer</a>(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Control the verification of SSL certificate issuers.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_ssl_1ga4af0a4a1cfe174e1782027fc09faaeee" class="nameRef">mprVerifySslPeer</a>(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Require verification of peer certificates.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="nameRef">mprVirtAlloc</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, int mode)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Memory virtual memory into the applications address space.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="nameRef">mprVirtFree</a>(void *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Free (unpin) a mapped section of virtual memory.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="nameRef">mprWaitForCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait for the command to complete.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="nameRef">mprWaitForCond</a>(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait for a condition lock variable.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="nameRef">mprWaitForEvent</a>(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait for an event to occur on the given dispatcher.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_wait_handler_1ga050cd9b37c257aca0790ce48bc760f0b" class="nameRef">mprWaitForIO</a>(<a href="#struct_mpr_wait_service" class="ref">MprWaitService</a> *ws, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait for I/O.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="nameRef">mprWaitForMultiCond</a>(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait for a condition lock variable for use with multiple waiters.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_wait_handler_1ga0a93f3ae8149bd4904921ffb36e493c6" class="nameRef">mprWaitForSingleIO</a>(int fd, int mask, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait for I/O on a file descriptor.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_test_service_1ga8de80fc08cc763d79fa85689c5eb212a" class="nameRef">mprWaitForTest2ToComplete</a>(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait for a test to complete.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_test_service_1ga24a30e124641f6b6d7f2da514e4b948c" class="nameRef">mprWaitForTestToComplete</a>(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait for a test to complete.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="nameRef">mprWaitOn</a>(<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp, int desiredMask)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Subscribe for desired wait events.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="nameRef">mprWaitTillIdle</a>(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Wait until the application is idle.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="nameRef">mprWarn</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Log a warning message.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="nameRef">mprWriteCache</a>(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="#group___mpr_time" class="ref">MprTime</a> modified, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> lifespan, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> version, int options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a cache item.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="nameRef">mprWriteCmd</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel, char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> bufsize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write data to an I/O channel.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="nameRef">mprWriteCmdBlock</a>(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel, char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> bufsize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write data to an I/O channel.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="nameRef">mprWriteFile</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write data to a file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_file_1ga9ff2d70355f7e3c98e6de81d73b049ae" class="nameRef">mprWriteFileFmt</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write formatted data to a file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_file_1gae093f94fb3ced3c2d292f370ed33b0a6" class="nameRef">mprWriteFileString</a>(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a string to a file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_path_1ga493014d6c3a406207003a3f40eb06843" class="nameRef">mprWritePathContents</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len, int mode)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a file and write contents.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="nameRef">mprWriteSocket</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write to a socket.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="nameRef">mprWriteSocketString</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write to a string to a socket.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="nameRef">mprWriteSocketVector</a>(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="#struct_mpr_i_o_vec" class="ref">MprIOVec</a> *iovec, int count)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a vector to a socket.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="nameRef">mprXmlGetErrorMsg</a>(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the XML error message if mprXmlParse fails.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="nameRef">mprXmlGetLineNumber</a>(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the source XML line number.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="nameRef">mprXmlGetParseArg</a>(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the XML callback argument.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___mpr_xml" class="ref">MprXml*</a></td><td><a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="nameRef">mprXmlOpen</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> initialSize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Open an XML parser instance.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="nameRef">mprXmlParse</a>(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Run the XML parser.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_xml_1ga61144d35daf0b10f9f62bbd14eb106af" class="nameRef">mprXmlSetInputStream</a>(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a> fn, void *arg)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define the XML parser input stream.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="nameRef">mprXmlSetParseArg</a>(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp, void *parseArg)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the XML callback argument.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_xml_1ga015f91fb1d39230057a368fb225f45b8" class="nameRef">mprXmlSetParserHandler</a>(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a> h)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the XML parser data handle.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="nameRef">mprYield</a>(int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Yield a thread to allow garbage collection.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1ga47bb56ef181bc5f922d08080677ae5b9" class="nameRef">palloc</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Allocate a &quot;permanent&quot; block of memory that is not subject GC.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___mpr_mem_1gaeaa51be2edf47468d51a0c6881d5f818" class="nameRef">pfree</a>(void *ptr)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Free a &quot;permanent&quot; block of memory allocated via &quot;palloc&quot;.</td></tr>
<tr class="apiDef"><td class="apiType">void*</td><td><a href="#group___mpr_mem_1gacaa3314aaa745c54fd2390d4b5370500" class="nameRef">prealloc</a>(void *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Reallocate a &quot;permanent&quot; block of memory allocated via &quot;palloc&quot;.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="nameRef">scamel</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a camel case version of the string.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="nameRef">scaselesscmp</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare strings ignoring case.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="nameRef">scaselessmatch</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare strings ignoring case.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="nameRef">schr</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, int c)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Find a character in a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="nameRef">sclone</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Clone a string.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="nameRef">scmp</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare strings.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="nameRef">scontains</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *pattern)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Find a pattern in a string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="nameRef">scopy</a>(char *dest, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> destMax, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *src)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Copy a string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="nameRef">sends</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *suffix)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the string ends with a given pattern.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="nameRef">sfmt</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Format a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="nameRef">sfmtv</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, va_list args)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Format a string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a91ad9478d81a7aaf2593e8d9c3d06a14" class="ref">uint</a></td><td><a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="nameRef">shash</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compute a hash code for a string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a91ad9478d81a7aaf2593e8d9c3d06a14" class="ref">uint</a></td><td><a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="nameRef">shashlower</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compute a caseless hash code for a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="nameRef">sjoin</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Catenate strings.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="nameRef">sjoinv</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, va_list args)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Catenate strings.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="nameRef">slen</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Return the length of a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="nameRef">slower</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert a string to lower case.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="nameRef">smatch</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare strings.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="nameRef">sncaselesscmp</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare strings ignoring case.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="nameRef">snclone</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Clone a substring.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="nameRef">sncmp</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compare strings.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="nameRef">sncontains</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *pattern, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> limit)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Find a pattern in a string with a limit.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="nameRef">sncopy</a>(char *dest, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> destMax, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *src, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Copy characters from a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="nameRef">spascal</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a Pascal case version of the string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="nameRef">spbrk</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *set)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Locate the a character in a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="nameRef">srchr</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, int c)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Find a character in a string by searching backwards.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="nameRef">srejoin</a>(char *buf, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Append strings to an existing string and reallocate as required.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="nameRef">srejoinv</a>(char *buf, va_list args)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Append strings to an existing string and reallocate as required.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="nameRef">sspn</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *set)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Find the end of a spanning prefix.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="nameRef">sstarts</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *prefix)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the string starts with a given pattern.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="nameRef">ssub</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> offset, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> length)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a substring.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="nameRef">stemplate</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, struct MprHash *tokens)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Replace template tokens in a string with values from a lookup table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a></td><td><a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="nameRef">stoi</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert a string to an integer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a></td><td><a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="nameRef">stoiradix</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, int radix, int *err)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert a string to an integer.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="nameRef">stok</a>(char *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *delim, char **last)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Tokenize a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="nameRef">strim</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *set, int where)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Trim a string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="nameRef">supper</a>(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert a string to upper case.</td></tr>
</table>
<a name="Typedefs"></a><h1>Typedefs</h1>
<table class="apiIndex" title="typedefs">
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="nameRef">MprBufProc</a></td><td class="apiBrief">Buffer refill callback function.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_cmd_child" class="nameRef">MprCmdChild</a></td><td class="apiBrief">Child status structure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_cmd_service" class="nameRef">MprCmdService</a></td><td class="apiBrief">Command execution service.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_cond" class="nameRef">MprCond</a></td><td class="apiBrief">Condition variable for single and multi-thread synchronization.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_dir_entry" class="nameRef">MprDirEntry</a></td><td class="apiBrief">Directory entry description.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="nameRef">MprEventProc</a></td><td class="apiBrief">Event callback function.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_cmd_1gaa20a5cafff87c96ba20526367622c885" class="nameRef">MprForkCallback</a></td><td class="apiBrief">Callback function before doing a fork().</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_free_mem" class="nameRef">MprFreeMem</a></td><td class="apiBrief">Block structure when on a free list.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_hash" class="nameRef">MprHash</a></td><td class="apiBrief">Hash table control structure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#mpr_8h_1ad38871e3f9f06db46d2bfd29b4dfe9a3" class="nameRef">MprHashProc</a></td><td class="apiBrief">Hashing function to use for the table.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_heap" class="nameRef">MprHeap</a></td><td class="apiBrief">Memory allocator heap.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_i_o_vec" class="nameRef">MprIOVec</a></td><td class="apiBrief">Vectored write array.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_json_callback" class="nameRef">MprJsonCallback</a></td><td class="apiBrief">JSON callbacks.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_key_value" class="nameRef">MprKeyValue</a></td><td class="apiBrief">Key value pairs for use with MprList or MprKey.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="nameRef">MprListCompareProc</a></td><td class="apiBrief">List comparison procedure for sorting.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="nameRef">MprLogHandler</a></td><td class="apiBrief">Log handler callback type.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="nameRef">MprManager</a></td><td class="apiBrief">Mpr memory block manager prototype.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="nameRef">MprMemNotifier</a></td><td class="apiBrief">Memory allocation error callback.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_mem_stats" class="nameRef">MprMemStats</a></td><td class="apiBrief">Memory allocator statistics.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="nameRef">MprModuleEntry</a></td><td class="apiBrief">Loadable module entry point signature.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="nameRef">MprModuleProc</a></td><td class="apiBrief">Module start/stop point function signature.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_mutex" class="nameRef">MprMutex</a></td><td class="apiBrief">Multithreading lock control structure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="nameRef">MprObj</a></td><td class="apiBrief">Object container for JSON parse trees.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="nameRef">MprOff</a></td><td class="apiBrief">Signed file offset data type.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_region" class="nameRef">MprRegion</a></td><td class="apiBrief">Memmory regions allocated from the O/S.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_rom_inode" class="nameRef">MprRomInode</a></td><td class="apiBrief">A RomInode is created for each file in the Rom file system.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_signal_info" class="nameRef">MprSignalInfo</a></td><td class="apiBrief">Per signal structure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_signal_1ga6d0d3705ec4497587e56828084fb95b0" class="nameRef">MprSignalProc</a></td><td class="apiBrief">Signal callback procedure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_signal_service" class="nameRef">MprSignalService</a></td><td class="apiBrief">Signal service control.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="nameRef">MprSocketPrebind</a></td><td class="apiBrief">Callback before binding a socket.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="nameRef">MprSocketProc</a></td><td class="apiBrief">Socket I/O callback procedure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_socket_provider" class="nameRef">MprSocketProvider</a></td><td class="apiBrief">Socket service provider interface.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_socket_service" class="nameRef">MprSocketService</a></td><td class="apiBrief">Mpr socket service class.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_list_1ga128df90ccf99b25bd404afc01ace1415" class="nameRef">MprSortProc</a></td><td class="apiBrief">Quicksort callback function.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_spin" class="nameRef">MprSpin</a></td><td class="apiBrief">Multithreading spin lock control structure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_test_case" class="nameRef">MprTestCase</a></td><td class="apiBrief">Test case structure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_test_def" class="nameRef">MprTestDef</a></td><td class="apiBrief">Test case definition.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_test_failure" class="nameRef">MprTestFailure</a></td><td class="apiBrief">Test failure record.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_test_group" class="nameRef">MprTestGroup</a></td><td class="apiBrief">A test group is a group of tests to cover a unit of functionality.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_test_service_1gad9ed01b45cca9fda02f9eb692e28cd69" class="nameRef">MprTestParser</a></td><td class="apiBrief">Callback parser for non-standard command line arguments.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_test_service_1ga484b47500c380dcfad3bf310058cf5f1" class="nameRef">MprTestProc</a></td><td class="apiBrief">Unit test callback procedure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_thread_local" class="nameRef">MprThreadLocal</a></td><td class="apiBrief">Thread local data storage.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="nameRef">MprThreadProc</a></td><td class="apiBrief">Thread main procedure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_thread_service" class="nameRef">MprThreadService</a></td><td class="apiBrief">Thread service.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="nameRef">MprTicks</a></td><td class="apiBrief">Elapsed time data type.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_wait_service" class="nameRef">MprWaitService</a></td><td class="apiBrief">Wait Service.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_worker_1ga1c2789aea11b60b13644c3b4e7c54f99" class="nameRef">MprWorkerProc</a></td><td class="apiBrief">Worker thread callback signature.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_worker_service" class="nameRef">MprWorkerService</a></td><td class="apiBrief">Worker Thread Service.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_mpr_worker_stats" class="nameRef">MprWorkerStats</a></td><td class="apiBrief">Statistics for Workers.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="nameRef">MprXmlHandler</a></td><td class="apiBrief">XML callback handler.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="nameRef">MprXmlInputStream</a></td><td class="apiBrief">XML input stream function.</td></tr>
</table>
<a name="Defines"></a><h1>Defines</h1>
<table class="apiIndex" title="Defines">
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1acdd6dbd60b7b6fd7c8b1aa0c67aee862" class="nameRef">BIT_MPR_LOGGING</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Default for logging is &quot;on&quot;.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a0fdfeef976b9c763e5e311d126752e59" class="nameRef">MPR_ALLOC_MANAGER</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Reserve room for a manager.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a065c472c2b2b6788e97aa947c2875d14" class="nameRef">MPR_ALLOC_PAD_MASK</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flags that impact padding.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a078cbfd3dec0112f75123ad13efe46ef" class="nameRef">MPR_ALLOC_POLICY_EXIT</a>&nbsp;&nbsp;&nbsp;3</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Exit the app if max exceeded with a MPR_EXIT_NORMAL exit.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ada97b225f9f382f841a548fe2a752fbf" class="nameRef">MPR_ALLOC_POLICY_NOTHING</a>&nbsp;&nbsp;&nbsp;0</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Do nothing.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4986b34cbf20314d3871050732b0757f" class="nameRef">MPR_ALLOC_POLICY_PRUNE</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Prune all non-essential memory and continue.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ae398692bd035c07c68e2942523239154" class="nameRef">MPR_ALLOC_POLICY_RESTART</a>&nbsp;&nbsp;&nbsp;2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Gracefully restart the app if redline is exceeded.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a301990b4bf54f26f6e8f70fb2ac4e8b7" class="nameRef">MPR_ALLOC_ZERO</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Zero memory.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9653be8fce6f8c186ed357310b64b336" class="nameRef">MPR_ARGV_ARGS_ONLY</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Command is missing program name.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1acc6038be47135551f98dc67ba85858e5" class="nameRef">MPR_ASSERT_MSG</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Originated from assert.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a5e2e7058ae62846bc72aa87a94998e35" class="nameRef">MPR_BACKGROUND_PRIORITY</a>&nbsp;&nbsp;&nbsp;15</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>May only get CPU if idle.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac198d9d7c49a8c4b6e6770119437054c" class="nameRef">MPR_CACHE_ADD</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Add key if not already existing.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2282b63defc144dc2c8877014b746130" class="nameRef">MPR_CACHE_APPEND</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Set and append if already existing.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a21ba7373200a15b53e7e027fd446ff16" class="nameRef">MPR_CACHE_PREPEND</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Set and prepend if already existing.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a6fc9fc42118cf01738a7f1d8242d2b2a" class="nameRef">MPR_CACHE_SET</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Update key value, create if required.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aa79b26057bf373035743f9fb36b1620e" class="nameRef">MPR_CACHE_SHARED</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Use shared cache.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a52dbd009cf7a2084be51ec5e9905bef1" class="nameRef">MPR_CMD_DETACH</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRunCmd flag to detach the child process and don&apos;t wait.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9b6df9f53de6ce7f036a88eb57c4bdc4" class="nameRef">MPR_CMD_ERR</a>&nbsp;&nbsp;&nbsp;0x4000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRunCmd flag to capture stdout.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab462f92f7490dbb1c373576813d3bf3a" class="nameRef">MPR_CMD_EXACT_ENV</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRunCmd flag to use the exact environment (no inherit from parent).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ad1983e4ebe978cc183518345b1b4f287" class="nameRef">MPR_CMD_IN</a>&nbsp;&nbsp;&nbsp;0x1000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRunCmd flag to connect to stdin.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a5b23440bb399d549cc8e21cf843f5e8a" class="nameRef">MPR_CMD_NEW_SESSION</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRunCmd flag to create a new session on unix.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ae0f5f7ba09817ec63dfb062ec9aef746" class="nameRef">MPR_CMD_OUT</a>&nbsp;&nbsp;&nbsp;0x2000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRunCmd flag to capture stdout.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a5a431633c20c5ba9cb82245bb35cb970" class="nameRef">MPR_CMD_SHOW</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRunCmd flag to show the window of the created process on windows.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a8be319d56d0cb412db373c5a056084a4" class="nameRef">MPR_CMD_STDERR</a>&nbsp;&nbsp;&nbsp;2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Stderr for the client side.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a622d43589bbed6dc91ad21764e718bd9" class="nameRef">MPR_CMD_STDIN</a>&nbsp;&nbsp;&nbsp;0</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Stdout for the client side.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a8ef3ba4052c1e6dbdf5437c2d99a2178" class="nameRef">MPR_CMD_STDOUT</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Stdin for the client side.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a5b9e93e828d28c4f7af302fadfa82bec" class="nameRef">MPR_CMD_VXWORKS_EOF</a>&nbsp;&nbsp;&nbsp;&quot;_ _EOF_ _&quot;</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Special string for VxWorks CGI to emit to signal EOF.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a297d74edde17d0138542113ef5f47175" class="nameRef">MPR_CMD_VXWORKS_EOF_LEN</a>&nbsp;&nbsp;&nbsp;9</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Length of MPR_CMD_VXWORKS_EOF.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a73c51f3a7939f023326f2ae4f70ea709" class="nameRef">MPR_CONFIG</a>&nbsp;&nbsp;&nbsp;2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Configuration settings trace level.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ae06415ae3af35c8ac27f34b10d3001e3" class="nameRef">MPR_CRITICAL_PRIORITY</a>&nbsp;&nbsp;&nbsp;99</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>May not yield.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1acbb0af96c8a7015a479fb63e014a6b02" class="nameRef">MPR_DECODE_TOKEQ</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Decode base 64 blocks up to a NULL or equals.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac9fb49d5056d0731ac706c507d31d4e2" class="nameRef">MPR_DEFAULT_DATE</a>&nbsp;&nbsp;&nbsp;&quot;%a %b %d %T %Y %Z&quot;</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Default date format used in mprFormatLocalTime/mprFormatUniversalTime when no format supplied.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aefea53f554fcb794283095d3b96c34bd" class="nameRef">MPR_DEFAULT_MAX_THREADS</a>&nbsp;&nbsp;&nbsp;20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Default max threads.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a73941169dddea56ea21e373e25d6f630" class="nameRef">MPR_DEFAULT_MIN_THREADS</a>&nbsp;&nbsp;&nbsp;0</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Default min threads.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1acbca6bd804a91e8cf0ed731c1a2d35af" class="nameRef">MPR_DISABLE_GC</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Disable GC.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9d968aeadb004bcd3077c4895d38d271" class="nameRef">MPR_DISPATCHER_AUTO_CREATE</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Dispatcher is auto-created for incoming events.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a011e95e5bb1031a865f4dea64af4452c" class="nameRef">MPR_DISPATCHER_DESTROYED</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Dispatcher is destroyed.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aa9595de4d0be6dcd8b96160bcac19912" class="nameRef">MPR_DISPATCHER_ENABLED</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Dispacher is enabled.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a14c2e4d083c860836c2d2ee97f960a58" class="nameRef">MPR_DISPATCHER_WAITING</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Dispatcher waiting for an event.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4b27e0a286fd6975d08929c2ef931ab6" class="nameRef">MPR_ERR</a>&nbsp;&nbsp;&nbsp;-1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Default error code.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a5e8036f0bee810b7d0a3fa6a752c77b2" class="nameRef">MPR_ERR_ABORTED</a>&nbsp;&nbsp;&nbsp;-2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Action aborted.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a0a19880d5b8b35cbd243601c3fdebc9a" class="nameRef">MPR_ERR_ALREADY_EXISTS</a>&nbsp;&nbsp;&nbsp;-3</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Item already exists.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a919966956e7462c38d2a1575c32d9948" class="nameRef">MPR_ERR_BAD_ARGS</a>&nbsp;&nbsp;&nbsp;-4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Bad arguments or paramaeters.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a930ee0c1f493bf582c968c45b1670e3d" class="nameRef">MPR_ERR_BAD_FORMAT</a>&nbsp;&nbsp;&nbsp;-5</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Bad input format.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4ca018e825a5209d1c781df4f6e7fcfb" class="nameRef">MPR_ERR_BAD_HANDLE</a>&nbsp;&nbsp;&nbsp;-6</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Bad file handle.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac23aecc1451d49a5b30ec93eef8a82fa" class="nameRef">MPR_ERR_BAD_STATE</a>&nbsp;&nbsp;&nbsp;-7</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Module is in a bad state.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aba09adbb870ee2f433345e2f149e7170" class="nameRef">MPR_ERR_BAD_SYNTAX</a>&nbsp;&nbsp;&nbsp;-8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Input has bad syntax.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a68f2a1f86291ce6956ea1d8ff659f247" class="nameRef">MPR_ERR_BAD_TYPE</a>&nbsp;&nbsp;&nbsp;-9</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Bad object type.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a37d3461f89eba4f41854fca0374a3440" class="nameRef">MPR_ERR_BAD_VALUE</a>&nbsp;&nbsp;&nbsp;-10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Bad or unexpected value.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a062b42b45d20dc6e53bbd50d56f7becf" class="nameRef">MPR_ERR_BASE</a>&nbsp;&nbsp;&nbsp;-1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Base error code.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4489b24d6bd60c91a0caf473949cd22c" class="nameRef">MPR_ERR_BUSY</a>&nbsp;&nbsp;&nbsp;-11</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Resource is busy.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2223fd269b22204735c86aedfb75498d" class="nameRef">MPR_ERR_CANT_ACCESS</a>&nbsp;&nbsp;&nbsp;-12</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot access the file or resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1af37872c7dc5bd324d7257b0c182a5698" class="nameRef">MPR_ERR_CANT_ALLOCATE</a>&nbsp;&nbsp;&nbsp;-13</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot allocate resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac76e95eb4e012fdc44ddb139714d40ee" class="nameRef">MPR_ERR_CANT_COMPLETE</a>&nbsp;&nbsp;&nbsp;-14</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Operation can&apos;t complete.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1caca544ac924457005fbfb83212687b" class="nameRef">MPR_ERR_CANT_CONNECT</a>&nbsp;&nbsp;&nbsp;-15</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot connect to network or resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9d015f30b291c6ddc172ee8401626201" class="nameRef">MPR_ERR_CANT_CREATE</a>&nbsp;&nbsp;&nbsp;-16</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot create the file or resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aac57866d33362bf21f652bd77d607550" class="nameRef">MPR_ERR_CANT_DELETE</a>&nbsp;&nbsp;&nbsp;-17</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot delete the resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a6fa5a9e876d9ebca6964b78f1f1590c9" class="nameRef">MPR_ERR_CANT_FIND</a>&nbsp;&nbsp;&nbsp;-18</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot find resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a533ed601a14817b24a8d8c000ab4ecf3" class="nameRef">MPR_ERR_CANT_INITIALIZE</a>&nbsp;&nbsp;&nbsp;-19</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot initialize resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ae8dc577ad8255580ce59647897fc6b16" class="nameRef">MPR_ERR_CANT_LOAD</a>&nbsp;&nbsp;&nbsp;-20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot load the resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a293c82c9a0891e2dcfd18caf2f515b87" class="nameRef">MPR_ERR_CANT_OPEN</a>&nbsp;&nbsp;&nbsp;-21</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot open the file or resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4dad0ac2657323d3e0790744560d4404" class="nameRef">MPR_ERR_CANT_READ</a>&nbsp;&nbsp;&nbsp;-22</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot read from the file or resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1af8d350a5d245956ba8d0e6f461906d51" class="nameRef">MPR_ERR_CANT_WRITE</a>&nbsp;&nbsp;&nbsp;-23</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Cannot write to the file or resource.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aa82e6a65a7fc1ebeb32782cddaf74dcf" class="nameRef">MPR_ERR_DELETED</a>&nbsp;&nbsp;&nbsp;-24</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Resource has been deleted.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab459d8da7f8309dcb3bdc8087a327b23" class="nameRef">MPR_ERR_MEMORY</a>&nbsp;&nbsp;&nbsp;-25</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Memory allocation error.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1abce7cf0b20e11f626c6e7269c7f57585" class="nameRef">MPR_ERR_NETWORK</a>&nbsp;&nbsp;&nbsp;-26</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Underlying network error.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1add3e5f02d6a87f8d974978e7a1bae790" class="nameRef">MPR_ERR_NOT_INITIALIZED</a>&nbsp;&nbsp;&nbsp;-27</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Module or resource is not initialized.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a44c8cadbefc4c0ebc5a6d50fe0a2b35a" class="nameRef">MPR_ERR_NOT_READY</a>&nbsp;&nbsp;&nbsp;-28</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Resource is not ready.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9f0e4f45ab378cf38c97d1f82ae97977" class="nameRef">MPR_ERR_OK</a>&nbsp;&nbsp;&nbsp;0</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Success.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1d01a181e24b717f7e8cc209ecf9a1fd" class="nameRef">MPR_ERR_READ_ONLY</a>&nbsp;&nbsp;&nbsp;-29</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>The operation timed out.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a5a93a590163db7efac72b4cdf1167028" class="nameRef">MPR_ERR_TIMEOUT</a>&nbsp;&nbsp;&nbsp;-30</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Operation exceeded specified time allowed.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a286d20a366b521bef2f888acb869ad32" class="nameRef">MPR_ERR_TOO_MANY</a>&nbsp;&nbsp;&nbsp;-31</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Too many requests or resources.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a8e1a65eca999545a890045c42f0c02a8" class="nameRef">MPR_ERR_WONT_FIT</a>&nbsp;&nbsp;&nbsp;-32</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Requested operation won&apos;t fit in available space.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a03982e4028ce99a027b8ec4de803789f" class="nameRef">MPR_ERR_WOULD_BLOCK</a>&nbsp;&nbsp;&nbsp;-33</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Blocking operation would block.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab58f968604e9f630b90bd20b66f9fc6b" class="nameRef">MPR_ERROR</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Standard logging trace levels are 0 to 9 with 0 being the most verbose.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab0cda84bdf832140a3ab2c9c68c4c30a" class="nameRef">MPR_ERROR_MSG</a>&nbsp;&nbsp;&nbsp;0x20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Originated from mprError.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a207b6b4c4dd69cefc5d48e0898677ff1" class="nameRef">MPR_EVENT_CONTINUOUS</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Timer event runs is automatically rescheduled.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac32b25ad7f171f1e1d88f24ac6394b21" class="nameRef">MPR_EVENT_DONT_QUEUE</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Don&apos;t queue the event.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2a99bacd6ebae3f038383bf28e9c9b80" class="nameRef">MPR_EVENT_PRIORITY</a>&nbsp;&nbsp;&nbsp;50</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Normal priority.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1af74cd819692aad055f0301c0bf01c73c" class="nameRef">MPR_EVENT_QUICK</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Execute inline without executing via a thread.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ace3d51e15de22e334aede80a45e63366" class="nameRef">MPR_EVENT_RUNNING</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Event currently executing.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a58e11a0fe2de721fd742aa6c601ff8e4" class="nameRef">MPR_EVENT_STATIC_DATA</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Event data is permanent and should not be marked by GC.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aff10757e54446408f4f71cefb854eb49" class="nameRef">MPR_EXIT_DEFAULT</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Exit as per MPR-&gt;defaultStrategy.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3c61ba925265abcf95ae040f2625843e" class="nameRef">MPR_EXIT_GRACEFUL</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Graceful shutdown waiting for requests to complete.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4f2dace6f8d1c8d7d7204f62725f8250" class="nameRef">MPR_EXIT_IMMEDIATE</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Immediate exit.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab66db1e667041ab60b61aea991e20250" class="nameRef">MPR_EXIT_NORMAL</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Normal shutdown without waiting for requests to complete.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2328bae311be87e903b6d9df39d607b4" class="nameRef">MPR_EXIT_RESTART</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Restart after exiting.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ae98cab91ffb1d0745e2ee620fe2fec62" class="nameRef">MPR_FATAL_MSG</a>&nbsp;&nbsp;&nbsp;0x800</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Fatal error, log and exit.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a8b41aafa86ce27f241349c86c4daaf05" class="nameRef">MPR_FINISHED</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Mpr object destroyed.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a63bdc4d8799bf974274a81b7398c6ea7" class="nameRef">MPR_GC_COMPLETE</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRequestGC flags to do a complete collection (3 sweeps).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ad7a1c9b321dcaee1529f4c2af57988dc" class="nameRef">MPR_GC_FORCE</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRequestGC flags to force a GC whether it is required or not.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a8a253ad9c573aa28d72e1117a7f93afe" class="nameRef">MPR_GC_NO_BLOCK</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRequestGC flags to not wait for the GC.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a19a1b5a7ade339431cb3f333117971cb" class="nameRef">MPR_GC_NO_YIELD</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprRequestGC flag to trigger GC but not yield.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1abda93c3e8bd4c59f343e50b24d1248f8" class="nameRef">MPR_GEN_ETERNAL</a>&nbsp;&nbsp;&nbsp;3</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Objects immune from collection.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a344e3e004369537b4ba70eab1303c807" class="nameRef">MPR_HASH_CASELESS</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Key comparisons ignore case.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aead51de23663190607c1affa83d6aea3" class="nameRef">MPR_HASH_LIST</a>&nbsp;&nbsp;&nbsp;0x100</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Hash keys are numeric indicies.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a034f0a8eb0b8e66aa222bdae0fddec8d" class="nameRef">MPR_HASH_OWN</a>&nbsp;&nbsp;&nbsp;0x400</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>For own use.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4b4def421c22a58a925f617230ddb1ac" class="nameRef">MPR_HASH_STATIC_KEYS</a>&nbsp;&nbsp;&nbsp;0x40</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Keys are permanent - don&apos;t dup or mark.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1adfe26c7f675b90c3672e58e68572aaae" class="nameRef">MPR_HASH_STATIC_VALUES</a>&nbsp;&nbsp;&nbsp;0x80</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Values are permanent - don&apos;t mark.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a0bf11498863580da02169e0ae6d798da" class="nameRef">MPR_HASH_UNICODE</a>&nbsp;&nbsp;&nbsp;0x20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Hash keys are unicode strings.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab63883c0a9cddb7697ef649141d0553c" class="nameRef">MPR_HASH_UNIQUE</a>&nbsp;&nbsp;&nbsp;0x200</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Add to existing will fail.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4de2c3f94ca0f0e9806af2ed5b645829" class="nameRef">MPR_HTTP_DATE</a>&nbsp;&nbsp;&nbsp;&quot;%a, %d %b %Y %T GMT&quot;</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Date format for use in HTTP (headers).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a40189e4d5ecadffdde13968f1c3e6326" class="nameRef">MPR_INFO_MSG</a>&nbsp;&nbsp;&nbsp;0x40</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Originated from mprInfo.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9cc3a837cf3aa6011f170ad1bb5d0600" class="nameRef">MPR_JSON_ARRAY</a>&nbsp;&nbsp;&nbsp;3</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>The property is an array (<a class="ref" href="#struct_mpr_hash">MprHash</a> with numeric keys).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ae525a33d8689c5f902c07f1d84306b00" class="nameRef">MPR_JSON_OBJ</a>&nbsp;&nbsp;&nbsp;2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>The property is an object (<a class="ref" href="#struct_mpr_hash">MprHash</a>).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aae2fe1acabe071d47c5ec2ac436880bc" class="nameRef">MPR_JSON_PRETTY</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Serialize output in a more human readable, multiline &quot;pretty&quot; format.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4467d3d2849e564e096cd66e96e43d87" class="nameRef">MPR_JSON_STRING</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>The property is a string (char*).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab57058bea04d77eb0e49b7eee21d6eb4" class="nameRef">MPR_JSON_UNKNOWN</a>&nbsp;&nbsp;&nbsp;0</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>The type of a property is unknown.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1abf11373096ecc123c0921e09e8551d89" class="nameRef">MPR_LEVEL_MASK</a>&nbsp;&nbsp;&nbsp;0xf</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Level mask.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a7e0930a91bd30665bf00a6354e836b27" class="nameRef">MPR_LIST_STABLE</a>&nbsp;&nbsp;&nbsp;0x40</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>For own use.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ad6c828f6e108fa0f7d6904c4dad515c1" class="nameRef">MPR_LIST_STATIC_VALUES</a>&nbsp;&nbsp;&nbsp;0x20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for <a class="ref" href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65">mprCreateList</a> when values are permanent.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a36a5ad5dd31abb5254888a1928b42498" class="nameRef">MPR_LOCAL_TIMEZONE</a>&nbsp;&nbsp;&nbsp;MAXINT</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Constants for mprParseTime.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a6673edd70b7227b524b05ad21e753be0" class="nameRef">MPR_LOG_ANEW</a>&nbsp;&nbsp;&nbsp;0x20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Start anew on boot (rotate).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1afd43d0547948ba7242fb957454c794b2" class="nameRef">MPR_LOG_APPEND</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Append to existing log files.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a34dd02c4b3ad666298e6f1db05ca54e7" class="nameRef">MPR_LOG_MSG</a>&nbsp;&nbsp;&nbsp;0x80</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Originated from mprLog.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a6f1f0ed71ed5a6ee0089d4b5c0cd301e" class="nameRef">MPR_MANAGE_FREE</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Block being freed.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab89208f2cda3c60413ccbc67c9ae567d" class="nameRef">MPR_MANAGE_MARK</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Block being marked by GC.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a749b9e5a8479ed9359cb02399c06d3d9" class="nameRef">MPR_MARK_THREAD</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Start a dedicated marker thread for garbage collection.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2d75c304c2b727f4225d589dd1d3ae6b" class="nameRef">MPR_MAX_GEN</a>&nbsp;&nbsp;&nbsp;3</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Number of generations for object allocation.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a80cba2f2518b3cbbfdc6537d9e4a40d9" class="nameRef">MPR_MEM_FAIL</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Memory allocation failed - immediate exit.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a32c694e15c93073531649ca79332bc9b" class="nameRef">MPR_MEM_LIMIT</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Memory use exceeds memory limit - invoking policy.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9f384178e8b45aad36b392df2e8c8e62" class="nameRef">MPR_MEM_REDLINE</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Memory use exceeds redline limit.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4fcb58aae6632033517d940deb1c3f2a" class="nameRef">MPR_MEM_TOO_BIG</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Memory allocation request is too big - immediate exit.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4cf2a91622343c0e368ba022e64d1b87" class="nameRef">MPR_MIN_TIME_FOR_GC</a>&nbsp;&nbsp;&nbsp;2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Wait till 2 milliseconds of idle time possible.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2ea2f3145ba5647efb9d249b64115c25" class="nameRef">MPR_MODULE_STARTED</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Module stared.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4910df7b7926f0dfb4f89e1b49f4f0ad" class="nameRef">MPR_MODULE_STOPPED</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Module stopped.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a8ffe8c24f95b6d8cf62b935108d8681d" class="nameRef">MPR_NO_WINDOW</a>&nbsp;&nbsp;&nbsp;0x20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Don&apos;t create a windows Window.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a00253cececc72225524d098e29d552a9" class="nameRef">MPR_NORMAL_PRIORITY</a>&nbsp;&nbsp;&nbsp;50</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Normal (default) priority.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aa3a00f803c06f8d85b8281dff1021acb" class="nameRef">MPR_OBJ_HASH</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Object is a hash.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aad59e2d06de4bfe82780a8da386d39f7" class="nameRef">MPR_OBJ_LIST</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Object is a hash.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1acd00b85221f26a15b12c07f33bfbaf75" class="nameRef">MPR_PATH_DEPTH_FIRST</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for mprGetPathFiles to do a depth-first traversal.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a38348b56856049b3ea9ec95744093fdd" class="nameRef">MPR_PATH_DESCEND</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for mprGetPathFiles to traverse subdirectories.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1acb217484aeb03baec071b879341cb53f" class="nameRef">MPR_PATH_INC_HIDDEN</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for mprGetPathFiles to include hidden files.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a84562a2d6625c6121c9489d114c0a9ec" class="nameRef">MPR_PATH_NODIRS</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for mprGetPathFiles to exclude subdirectories.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3fb60e14b20ff11f1057e34184d8a11e" class="nameRef">MPR_PATH_RELATIVE</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for mprGetPathFiles to return paths relative to the directory.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3865b9d22e4cf35a4bbb06fe282ed0b4" class="nameRef">MPR_PROTO_ALL</a>&nbsp;&nbsp;&nbsp;0x1F</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>All SSL protocols.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab8b4c6493395830bdac971e9cb5a5681" class="nameRef">MPR_PROTO_SSLV2</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>SSL V2 protocol.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1af8bc5c00cc71eec98a6f90f1414860d3" class="nameRef">MPR_PROTO_SSLV3</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>SSL V3 protocol.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ab6be6a83c03fb2edc3d9b758cbeb0db0" class="nameRef">MPR_PROTO_TLSV1</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>TLS V1 protocol.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a31b6416f6ed995314e98eb1c527f8e28" class="nameRef">MPR_PROTO_TLSV11</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>TLS V1.1 protocol.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a820a989c8a9ac253b75483c638514665" class="nameRef">MPR_PROTO_TLSV12</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>TLS V1.2 protocol.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3bfd971316b563bf9de9b717fa60f13b" class="nameRef">MPR_RAW_MSG</a>&nbsp;&nbsp;&nbsp;0x100</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Raw message output.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a92106b0b98bcd8a8d346b690564fb7d5" class="nameRef">MPR_READABLE</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Read event mask.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a6072e168871ce4b65725049d214965a1" class="nameRef">MPR_REQUEST_PRIORITY</a>&nbsp;&nbsp;&nbsp;50</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Normal priority.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2d296ae2f6a17c92630402e2e81d185b" class="nameRef">MPR_RFC_DATE</a>&nbsp;&nbsp;&nbsp;&quot;%a, %d %b %Y %T %Z&quot;</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Format a date according to RFC822: (Fri, 07 Jan 2003 12:12:21 PDT).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2a21cf060065f6162ecae871533ea9f7" class="nameRef">MPR_SERVICE_NO_GC</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Don&apos;t run GC.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac6d5205a6c355e6e3c5cb78db9b57a7f" class="nameRef">MPR_SERVICE_ONE_THING</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Wait for one event or one I/O.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9d46c2d083454a72fb5417f165fa5bb0" class="nameRef">MPR_SIGNAL_AFTER</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag to mprAddSignalHandler to run handler after existing handlers.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2b9736ece464bf27b1a805211ba04774" class="nameRef">MPR_SIGNAL_BEFORE</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag to mprAddSignalHandler to run handler before existing handlers.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aa26b2bbf78247ef8fd3528aabea7aa32" class="nameRef">MPR_SOCKET_BLOCK</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Use blocking I/O.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a99a15ede7932c340743a75f118ca16c6" class="nameRef">MPR_SOCKET_BROADCAST</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Broadcast mode.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ae74c5560373bf04a097187e40f4f6fe4" class="nameRef">MPR_SOCKET_BUFFERED_READ</a>&nbsp;&nbsp;&nbsp;0x800</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Socket has buffered read data (in SSL stack).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aea6f51f6ff2d8f1186f129c42a928fed" class="nameRef">MPR_SOCKET_BUFFERED_WRITE</a>&nbsp;&nbsp;&nbsp;0x1000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Socket has buffered write data (in SSL stack).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1af0056860ee1675366998780a68b967a8" class="nameRef">MPR_SOCKET_CHECKED</a>&nbsp;&nbsp;&nbsp;0x2000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Peer certificate has been checked.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9899fbaf22958ef4d2fbb5bce6cbb898" class="nameRef">MPR_SOCKET_CLOSED</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>MprSocket has been closed.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ad5e870cae7f4f67d9d9da412128ee8f1" class="nameRef">MPR_SOCKET_CONNECTING</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>MprSocket is connecting.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3af7ac22e43b6d66754503bf4b038823" class="nameRef">MPR_SOCKET_DATAGRAM</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Use datagrams.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1afe80b08ee0c6719a2ee1a0b829345b34" class="nameRef">MPR_SOCKET_DISCONNECTED</a>&nbsp;&nbsp;&nbsp;0x4000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>The mprDisconnectSocket has been called.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a84190073ab879726ad4f3c97206fd01b" class="nameRef">MPR_SOCKET_EOF</a>&nbsp;&nbsp;&nbsp;0x20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen end of file.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac7b18f9e8d350a455c880030329ce305" class="nameRef">MPR_SOCKET_GRACEFUL</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Do a graceful shutdown.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a68d9dd23dc0f7c60e581f45eec0a729d" class="nameRef">MPR_SOCKET_HANDSHAKING</a>&nbsp;&nbsp;&nbsp;0x8000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Doing an SSL handshake.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a0dcff326be6be22f7382a95cf01fcc15" class="nameRef">MPR_SOCKET_LISTENER</a>&nbsp;&nbsp;&nbsp;0x40</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>MprSocket is server listener.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a51675ba1c7573f654989a489c0803f8b" class="nameRef">MPR_SOCKET_NODELAY</a>&nbsp;&nbsp;&nbsp;0x100</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Disable Nagle algorithm.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a83a3df553a14edcbf46c671097860f20" class="nameRef">MPR_SOCKET_NOREUSE</a>&nbsp;&nbsp;&nbsp;0x80</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Don&apos;t set SO_REUSEADDR option.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a46e119bbf1fc869a6aeda59f807dd1c9" class="nameRef">MPR_SOCKET_SERVER</a>&nbsp;&nbsp;&nbsp;0x400</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Socket is on the server-side.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1af3d6547888a1ecdcb880bccfc8511dd0" class="nameRef">MPR_SOCKET_THREAD</a>&nbsp;&nbsp;&nbsp;0x200</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Process callbacks on a worker thread.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac2701801406420a29c802fc274920157" class="nameRef">MPR_STARTED</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Mpr services started.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1add77d7932ad074fe60c0782cafc78b72" class="nameRef">MPR_STOPPING</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>App is stopping.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3da756fc694c397e02ead8774a1baa1b" class="nameRef">MPR_STOPPING_CORE</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Stopping core services: GC and event dispatch.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a5db78d513b1b42af78c7e431ff606173" class="nameRef">MPR_SWEEP_THREAD</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Start a dedicated sweeper thread for garbage collection (unsupported).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3d29febaeaca5d39a1ad539c1a3b6225" class="nameRef">MPR_TICKS_PER_SEC</a>&nbsp;&nbsp;&nbsp;1000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Time ticks per second.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1e93ff508c17a532675a9bb090d2bc7a" class="nameRef">MPR_TIMEOUT_GC_SYNC</a>&nbsp;&nbsp;&nbsp;100</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Short wait period for threads to synchronize.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3a9a50e1c8d7de296f8d822c1ecc24d3" class="nameRef">MPR_TIMEOUT_LINGER</a>&nbsp;&nbsp;&nbsp;2000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Close socket linger timeout.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1add8b2cf7c323c276499a6df8940f8ab1" class="nameRef">MPR_TIMEOUT_NAP</a>&nbsp;&nbsp;&nbsp;20</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Short pause.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a852ad205e9b273796bb4958700334597" class="nameRef">MPR_TIMEOUT_NO_BUSY</a>&nbsp;&nbsp;&nbsp;1000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Wait period to minimize CPU drain.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aa2eb3f4af9584897ff6ec601fcca4c3c" class="nameRef">MPR_TIMEOUT_PRUNER</a>&nbsp;&nbsp;&nbsp;120000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Time between worker thread pruner runs (2 min).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aedd536c5e56ec128b69e540bc2926dd3" class="nameRef">MPR_TIMEOUT_START_TASK</a>&nbsp;&nbsp;&nbsp;10000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Time to start tasks running.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1b16c71cdee0d3ca77efef483c13ee84" class="nameRef">MPR_TIMEOUT_STOP</a>&nbsp;&nbsp;&nbsp;30000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Default wait when stopping resources (30 sec).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3607582e032513bfb634178e569f6340" class="nameRef">MPR_TIMEOUT_STOP_TASK</a>&nbsp;&nbsp;&nbsp;10000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Time to stop or reap tasks (vxworks).</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a339aae9cde8ed5cf9a21a1ac833df450" class="nameRef">MPR_TIMEOUT_WORKER</a>&nbsp;&nbsp;&nbsp;60000</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Prune worker that has been idle for 1 min.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ad5cbb26432bafe64ba8005d245aa94c6" class="nameRef">MPR_TRACE_MSG</a>&nbsp;&nbsp;&nbsp;0x200</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Originated from mprTrace.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3b1ce37c5154b1c6a6b8f2efb15c747d" class="nameRef">MPR_TRIM_BOTH</a>&nbsp;&nbsp;&nbsp;0x3</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for <a class="ref" href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00">strim</a> to trim from both the start and the end of the string.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1adbf6abc6c3937fa21ef3f143b7623a59" class="nameRef">MPR_TRIM_END</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for <a class="ref" href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00">strim</a> to trim from the end of the string.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1878ad6fa3bbc38551375afe96c54c37" class="nameRef">MPR_TRIM_START</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Flag for <a class="ref" href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00">strim</a> to trim from the start of the string.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a08fee871d25744a268af6b7672602b0d" class="nameRef">MPR_USER_EVENTS_THREAD</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>User will explicitly manage own mprServiceEvents calls.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ae1b2f2706fd6063db28397d25b18a18e" class="nameRef">MPR_UTC_TIMEZONE</a>&nbsp;&nbsp;&nbsp;0</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Use UTC timezone.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1c59802fc5285441e89e2c745b269700" class="nameRef">MPR_VERBOSE</a>&nbsp;&nbsp;&nbsp;9</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Highest level of trace.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1c2ea8da2920f4756babba1ae142a952" class="nameRef">MPR_WAIT_NEW_DISPATCHER</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Wait handler flag to create a new dispatcher for each I/O event.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a6c34a6c6e526d8151c128cfc2e984df3" class="nameRef">MPR_WAIT_RECALL_HANDLER</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Wait handler flag to recall the handler asap.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a7d4e688fcd1ef27f95e92853050fe446" class="nameRef">MPR_WARN</a>&nbsp;&nbsp;&nbsp;2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Soft warning trace level.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aadb50e11c3cf0883a0b4c1bd0f7b3b9c" class="nameRef">MPR_WARN_MSG</a>&nbsp;&nbsp;&nbsp;0x400</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Originated from mprWarn.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9008127e0539e689567741f1c2b066be" class="nameRef">MPR_WORKER_BUSY</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Worker currently running to a callback.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a849aadf69f186ce445d2e68087816964" class="nameRef">MPR_WORKER_IDLE</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Worker is sleeping (idle) on idleCond.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1a46345d16dbc9d60b67e7418a2c2a09" class="nameRef">MPR_WORKER_PRIORITY</a>&nbsp;&nbsp;&nbsp;50</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Normal priority.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ad14ed6a1a6b2b467a18b80b727f2978f" class="nameRef">MPR_WORKER_PRUNED</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Worker has been pruned and will be terminated.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a1ff4bb5b07e0f1efbd40346ac4773154" class="nameRef">MPR_WRITABLE</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Write event mask.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a99c147c92b721d610373d17a27328b20" class="nameRef">MPR_XML_AFTER_LS</a>&nbsp;&nbsp;&nbsp;2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;&quot;.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac4c3caf4e3857f736a1b984bd2a6f32f" class="nameRef">MPR_XML_ATT_EQ</a>&nbsp;&nbsp;&nbsp;6</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;tag att&quot; =.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a05fdee2b677c56f79a64c44d2a4e0c06" class="nameRef">MPR_XML_ATT_NAME</a>&nbsp;&nbsp;&nbsp;5</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;tag att&quot;.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aab77ddcbe5f99578ca0e9550083455f0" class="nameRef">MPR_XML_BEGIN</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Before next tag.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a62e114580e39697e37376d12ee7af1bb" class="nameRef">MPR_XML_CDATA</a>&nbsp;&nbsp;&nbsp;13</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;![CDATA[&quot; U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a90fd8a27c77c1c4748f621f25a1b499d" class="nameRef">MPR_XML_COMMENT</a>&nbsp;&nbsp;&nbsp;3</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;!&amp;ndash;&quot; (usr) U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2790ee301de12fea5778679db28aab57" class="nameRef">MPR_XML_ELT_DATA</a>&nbsp;&nbsp;&nbsp;10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;tag&gt;....&lt;&quot; U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1abbeab1e910ce3f278f140583217df3c5" class="nameRef">MPR_XML_ELT_DEFINED</a>&nbsp;&nbsp;&nbsp;9</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;tag...&gt;&quot; U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1add77391c791825c39d18317fb3151776" class="nameRef">MPR_XML_END_ELT</a>&nbsp;&nbsp;&nbsp;11</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;tag&gt;....&lt;/tag&gt;&quot; U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1ac538a606669e884a98118de05ab717ea" class="nameRef">MPR_XML_EOF</a>&nbsp;&nbsp;&nbsp;-2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>End of input.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a9d47ffef429d482cf9814ea7d920e6a2" class="nameRef">MPR_XML_ERR</a>&nbsp;&nbsp;&nbsp;-1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Error.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a5de28f7380d13547e4f5f01f062049a5" class="nameRef">MPR_XML_NEW_ATT</a>&nbsp;&nbsp;&nbsp;7</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;tag att = &quot;val" U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3e307166b15e6693d8dd8e70d84b43a0" class="nameRef">MPR_XML_NEW_ELT</a>&nbsp;&nbsp;&nbsp;4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;tag&quot; (usr) U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a2d20eb2c2ed2903820ebf2c08ec42d66" class="nameRef">MPR_XML_PI</a>&nbsp;&nbsp;&nbsp;12</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;?processingInst&quot; U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a3967c9c48971ad228fd98b9caaccccb7" class="nameRef">MPR_XML_SOLO_ELT_DEFINED</a>&nbsp;&nbsp;&nbsp;8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Seen &quot;&lt;tag../&gt;&quot; U.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1aabb424e83d8d48581068ecbf1ed08cb5" class="nameRef">MPR_YIELD_BLOCK</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprYield flag to yield and wait until GC the next GC occurs.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a105254871d7298789abe7fcd0236809c" class="nameRef">MPR_YIELD_NO_BLOCK</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprYield flag to yield but do not wait.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#mpr_8h_1a4a149b4f65cebcc40fe12a7361033781" class="nameRef">MPR_YIELD_STICKY</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>mprYield flag to yield and remain yielded until reset.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#group___mpr_test_service_1gad86e9187caa05e698fa5d0630e6d74f4" class="nameRef">tassert</a>&nbsp;&nbsp;&nbsp;<initializer><ref refid="group___mpr_test_service_1ga7f44ec8c71e361a86def92a6d0911c79" kindref="member">assertTrue</ref>(gp, MPR_LOC, C, #C)</initializer></td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Assert macro for use by unit tests.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#group___mpr_test_service_1gad86e9187caa05e698fa5d0630e6d74f4" class="nameRef">tassert</a>&nbsp;&nbsp;&nbsp;<initializer><ref refid="group___mpr_test_service_1ga7f44ec8c71e361a86def92a6d0911c79" kindref="member">assertTrue</ref>(gp, MPR_LOC, C, #C)</initializer></td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Assert macro for use by unit tests.</td></tr>
</table>
<h1>Mpr</h1>
<a name="group___mpr"></a>
<div class="api">
<div class="prototype">Mpr</div>
<div class="apiDetail">
<p>Primary MPR application control structure.</p>
<dl><dt><b>Description</b>:</dt><dd>The Mpr structure stores critical application state information.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>appDir</td><td>
Path of directory containing app executable.
</td>
<tr><td class="param">char *</td><td><td>appPath</td><td>
Path name of application executable.
</td>
<tr><td class="param">void *</td><td><td>appwebService</td><td>
Appweb service object.
</td>
<tr><td class="param">char **</td><td><td>argBuf</td><td>
Space for allocated argv.
</td>
<tr><td class="param">int</td><td><td>argc</td><td>
Count of command line args.
</td>
<tr><td class="param">cchar **</td><td><td>argv</td><td>
Application command line args (not alloced).
</td>
<tr><td class="param">bool</td><td><td>cmdlineLogging</td><td>
App has specified <ndash/>log on the command line.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_cmd_service">MprCmdService</a> *</td><td><td>cmdService</td><td>
Command service object.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_cond">MprCond</a> *</td><td><td>cond</td><td>
Sync after starting events thread.
</td>
<tr><td class="param">bool</td><td><td>debugMode</td><td>
Run in debug mode (no timers).
</td>
<tr><td class="param">struct MprDispatcher *</td><td><td>dispatcher</td><td>
Primary dispatcher.
</td>
<tr><td class="param">char *</td><td><td>domainName</td><td>
Domain portion.
</td>
<tr><td class="param">void *</td><td><td>ediService</td><td>
EDI object.
</td>
<tr><td class="param">void *</td><td><td>ejsService</td><td>
Ejscript service.
</td>
<tr><td class="param">char *</td><td><td>emptyString</td><td>
Empty string.
</td>
<tr><td class="param">void *</td><td><td>espService</td><td>
ESP service object.
</td>
<tr><td class="param">int</td><td><td>eventing</td><td>
Servicing events thread is active.
</td>
<tr><td class="param">struct MprEventService *</td><td><td>eventService</td><td>
Event service object.
</td>
<tr><td class="param">int</td><td><td>exitStatus</td><td>
Proposed program exit status.
</td>
<tr><td class="param">int</td><td><td>exitStrategy</td><td>
How to exit the app (normal, immediate, graceful).
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319">MprTicks</a></td><td><td>exitTimeout</td><td>
Request timeout when exiting.
</td>
<tr><td class="param">struct MprFileSystem *</td><td><td>fileSystem</td><td>
File system service object.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Misc flags.
</td>
<tr><td class="param">int</td><td><td>hasError</td><td>
Mpr has an initialization error.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_heap">MprHeap</a> *</td><td><td>heap</td><td>
Memory heap control.
</td>
<tr><td class="param">char *</td><td><td>hostName</td><td>
Host name (fully qualified name).
</td>
<tr><td class="param">void *</td><td><td>httpService</td><td>
Http service object.
</td>
<tr><td class="param">MprIdleCallback</td><td><td>idleCallback</td><td>
Invoked to determine if the process is idle.
</td>
<tr><td class="param">char *</td><td><td>ip</td><td>
Public IP Address.
</td>
<tr><td class="param">int</td><td><td>logBackup</td><td>
Number of log files preserved when backing up.
</td>
<tr><td class="param">MprFile *</td><td><td>logFile</td><td>
Log file.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951">MprLogHandler</a></td><td><td>logHandler</td><td>
Current log handler callback.
</td>
<tr><td class="param">int</td><td><td>logLevel</td><td>
Log trace level.
</td>
<tr><td class="param">cchar *</td><td><td>logPath</td><td>
Log path name.
</td>
<tr><td class="param">ssize</td><td><td>logSize</td><td>
Maximum log size.
</td>
<tr><td class="param">MprOsThread</td><td><td>mainOsThread</td><td>
Main OS thread ID.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_hash">MprHash</a> *</td><td><td>mimeTypes</td><td>
Table of mime types.
</td>
<tr><td class="param">struct MprModuleService *</td><td><td>moduleService</td><td>
Module service object.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Thread synchronization.
</td>
<tr><td class="param">char *</td><td><td>name</td><td>
Product name.
</td>
<tr><td class="param">struct MprDispatcher *</td><td><td>nonBlock</td><td>
Nonblocking dispatcher.
</td>
<tr><td class="param">struct MprOsService *</td><td><td>osService</td><td>
O/S service object.
</td>
<tr><td class="param">char *</td><td><td>pathEnv</td><td>
Cached PATH env var.
Used by MprCmd.
</td>
<tr><td class="param">char *</td><td><td>serverName</td><td>
Server name portion (no domain).
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_signal_service">MprSignalService</a> *</td><td><td>signalService</td><td>
Signal service object.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_socket_service">MprSocketService</a> *</td><td><td>socketService</td><td>
Socket service object.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_spin">MprSpin</a> *</td><td><td>spin</td><td>
Quick thread synchronization.
</td>
<tr><td class="param">MprTime</td><td><td>start</td><td>
When the MPR started.
</td>
<tr><td class="param">int</td><td><td>state</td><td>
Processing state.
</td>
<tr><td class="param">MprFile *</td><td><td>stdError</td><td>
Standard error file.
</td>
<tr><td class="param">MprFile *</td><td><td>stdInput</td><td>
Standard input file.
</td>
<tr><td class="param">MprFile *</td><td><td>stdOutput</td><td>
Standard output file.
</td>
<tr><td class="param">MprList *</td><td><td>terminators</td><td>
Termination callbacks.
</td>
<tr><td class="param">void *</td><td><td>testService</td><td>
Test service object.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_thread_service">MprThreadService</a> *</td><td><td>threadService</td><td>
Thread service object.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_hash">MprHash</a> *</td><td><td>timeTokens</td><td>
Date/Time parsing tokens.
</td>
<tr><td class="param">char *</td><td><td>title</td><td>
Product title.
</td>
<tr><td class="param">int</td><td><td>verifySsl</td><td>
Default verification of SSL certificates.
</td>
<tr><td class="param">char *</td><td><td>version</td><td>
Product version.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_wait_service">MprWaitService</a> *</td><td><td>waitService</td><td>
IO Waiting service object.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_worker_service">MprWorkerService</a> *</td><td><td>workerService</td><td>
Worker service object.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_1ga80adc8087f3a20a2669565b281d57a38"></a>
<div class="api">
<div class="prototype">
void
assert
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> cond)
</div>
<div class="apiDetail">
<p>Assert that a condition is true.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cond</td><td>Boolean result of a conditional test.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3"></a>
<div class="api">
<div class="prototype">
void
mprAddTerminator
(<a href="#mpr_8h_1ab4e00b849ab3c2bc9ef95ddd69c0e3a3" class="ref">MprTerminator</a> terminator)
</div>
<div class="apiDetail">
<p>Add a terminator callback.</p>
<dl><dt><b>Description</b>:</dt><dd>When the MPR terminates, all terminator callbacks are invoked to give the application notice of impending exit.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">terminator</td><td>MprTerminator callback function.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gac5203b2138474e781207b39ac4726c1b"></a>
<div class="api">
<div class="prototype">
void
mprBreakpoint
()
</div>
<div class="apiDetail">
<p>Trigger a breakpoint.</p>
<dl><dt><b>Description</b>:</dt><dd>Triggers a breakpoint and traps to the debugger.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr" class="ref">Mpr</a> *
mprCreate
(int argc, char **argv, int flags)
</div>
<div class="apiDetail">
<p>Create an instance of the MPR.</p>
<dl><dt><b>Description</b>:</dt><dd>Initializes the MPR and creates an Mpr control object. The Mpr Object manages all MPR facilities and services.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">argc</td><td>Count of command line args.</td>
<tr><td class="param">argv</td><td>Command line arguments for the application. Arguments may be passed into the Mpr for retrieval by the unit test framework.</td>
<tr><td class="param">flags</td><td></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the Mpr object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec"></a>
<div class="api">
<div class="prototype">
int
mprCreateOsService
()
</div>
<div class="apiDetail">
<p>Create and initialze the O/S dependent subsystem.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44"></a>
<div class="api">
<div class="prototype">
char *
mprDecode64
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Decode a null terminated string using base-46 encoding.</p>
Decoding will terminate at the first null or &apos;=&apos;
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to decode.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Buffer containing the encoded data.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga1fc4c545477ed18a37161aaea54fba5f"></a>
<div class="api">
<div class="prototype">
char *
mprDecode64Block
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> *len, int flags)
</div>
<div class="apiDetail">
<p>Decode a null terminated string using base-46 encoding.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>String to decode.</td>
<tr><td class="param">len</td><td>Return parameter with the Length of the decoded data.</td>
<tr><td class="param">flags</td><td>Set to MPR_DECODE_TOKEQ to stop at the first &apos;=&apos;.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Buffer containing the encoded data and returns length in len.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga14459c3278e0c72246970cd1c15dd55d"></a>
<div class="api">
<div class="prototype">
char *
mprEmptyString
()
</div>
<div class="apiDetail">
<p>Reference to a permanent preallocated empty string.</p>
<dl><dt>Returns:</dt><dd>An empty string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89"></a>
<div class="api">
<div class="prototype">
char *
mprEncode64
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Encode a string using base-46 encoding.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to encode.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Buffer containing the encoded string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga6c5934d2b6c8dd3d307e8e85cc27908a"></a>
<div class="api">
<div class="prototype">
char *
mprEncode64Block
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Encode buffer using base-46 encoding.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer to encode.</td>
<tr><td class="param">len</td><td>Length of the buffer to encode.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Buffer containing the encoded string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c"></a>
<div class="api">
<div class="prototype">
char *
mprEscapeCmd
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cmd, int escChar)
</div>
<div class="apiDetail">
<p>Encode a string escaping typical command (shell) characters.</p>
<dl><dt><b>Description</b>:</dt><dd>Encode a string escaping all dangerous characters that have meaning for the unix or MS-DOS command shells.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>Command string to encode.</td>
<tr><td class="param">escChar</td><td>Escape character to use when encoding the command.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the escaped command.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga5cbd659568028d3360b836183c89d4f8"></a>
<div class="api">
<div class="prototype">
char *
mprEscapeHtml
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *html)
</div>
<div class="apiDetail">
<p>Encode a string by escaping typical HTML characters.</p>
<dl><dt><b>Description</b>:</dt><dd>Encode a string escaping all dangerous characters that have meaning in HTML documents.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">html</td><td>HTML content to encode.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the escaped HTML.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga3dfd4398a5607868c1110b47eebaea61"></a>
<div class="api">
<div class="prototype">
char *
mprGetAppDir
()
</div>
<div class="apiDetail">
<p>Get the application directory.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the directory containing the application executable.</dd></dl>
<dl><dt>Returns:</dt><dd>A string containing the application directory.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetAppName
()
</div>
<div class="apiDetail">
<p>Get the application name defined via mprSetAppName.</p>
<dl><dt>Returns:</dt><dd>The one-word lower case application name defined via mprSetAppName.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815"></a>
<div class="api">
<div class="prototype">
char *
mprGetAppPath
()
</div>
<div class="apiDetail">
<p>Get the application executable path.</p>
<dl><dt>Returns:</dt><dd>A string containing the application executable path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetAppTitle
()
</div>
<div class="apiDetail">
<p>Get the application title string.</p>
<dl><dt>Returns:</dt><dd>A string containing the application title string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetAppVersion
()
</div>
<div class="apiDetail">
<p>Get the application version string.</p>
<dl><dt>Returns:</dt><dd>A string containing the application version string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga27c4f99c98b7a8b75812851dc2775936"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprGetCmdlineLogging
()
</div>
<div class="apiDetail">
<p>Get if command line logging is being used.</p>
<dl><dt><b>Description</b>:</dt><dd>Logging may be initiated by invoking an MPR based program with a &quot;&amp;ndash;log&quot; switch. This API assists programs to tell the MPR that command line logging has been used.</dd></dl>
<dl><dt>Returns:</dt><dd>True if command line logging is in use.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprGetDebugMode
()
</div>
<div class="apiDetail">
<p>Get the debug mode.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns whether the debug mode is enabled. Some modules observe debug mode and disable timeouts and timers so that single-step debugging can be used.</dd></dl>
<dl><dt>Returns:</dt><dd>Returns true if debug mode is enabled, otherwise returns false.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetDomainName
()
</div>
<div class="apiDetail">
<p>Get the application domain name string.</p>
<dl><dt>Returns:</dt><dd>A string containing the application domain name string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021"></a>
<div class="api">
<div class="prototype">
int
mprGetEndian
()
</div>
<div class="apiDetail">
<p>Return the endian byte ordering for the application.</p>
<dl><dt>Returns:</dt><dd>MPR_LITTLE_ENDIAN or MPR_BIG_ENDIAN.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaf184a06275222c97f80e0a8d807418ac"></a>
<div class="api">
<div class="prototype">
int
mprGetError
()
</div>
<div class="apiDetail">
<p>Return the error code for the most recent system or library operation.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns an error code from the most recent system call. This will be mapped to be either a POSIX error code or an MPR error code.</dd></dl>
<dl><dt>Returns:</dt><dd>The mapped error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gac5f245cb0afb8678e9193f2e60a3fee7"></a>
<div class="api">
<div class="prototype">
int
mprGetExitStatus
()
</div>
<div class="apiDetail">
<p>Get the exit status.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the exit status set via <a class="ref" href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b">mprTerminate()</a></dd></dl>
<dl><dt>Returns:</dt><dd>The proposed application exit status.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetHostName
()
</div>
<div class="apiDetail">
<p>Get the application host name string.</p>
<dl><dt>Returns:</dt><dd>A string containing the application host name string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetIpAddr
()
</div>
<div class="apiDetail">
<p>Get the application IP address string.</p>
<dl><dt>Returns:</dt><dd>A string containing the application IP address string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55"></a>
<div class="api">
<div class="prototype">
int
mprGetLogLevel
()
</div>
<div class="apiDetail">
<p>Get the current logging level.</p>
<dl><dt>Returns:</dt><dd>The current log level.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e"></a>
<div class="api">
<div class="prototype">
char *
mprGetMD5
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Get an MD5 checksum.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated MD5 checksum string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c"></a>
<div class="api">
<div class="prototype">
char *
mprGetMD5WithPrefix
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *prefix)
</div>
<div class="apiDetail">
<p>Get an MD5 checksum with optional prefix string and buffer length.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer to checksum.</td>
<tr><td class="param">len</td><td>Size of the buffer.</td>
<tr><td class="param">prefix</td><td>String prefix to insert at the start of the result.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated MD5 checksum string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr" class="ref">Mpr</a> *
mprGetMpr
()
</div>
<div class="apiDetail">
<p>Return the MPR control instance.</p>
<dl><dt><b>Description</b>:</dt><dd>Return the MPR singleton control object.</dd></dl>
<dl><dt>Returns:</dt><dd>The MPR control object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c"></a>
<div class="api">
<div class="prototype">
int
mprGetOsError
()
</div>
<div class="apiDetail">
<p>Return the O/S error code.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns an O/S error code from the most recent system call. This returns errno on Unix systems or GetLastError() on Windows.</dd></dl>
<dl><dt>Returns:</dt><dd>The O/S error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef"></a>
<div class="api">
<div class="prototype">
int
mprGetRandomBytes
(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> block)
</div>
<div class="apiDetail">
<p>Get some random data.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Reference to a buffer to hold the random data.</td>
<tr><td class="param">size</td><td>Size of the buffer.</td>
<tr><td class="param">block</td><td>Set to true if it is acceptable to block while accumulating entropy sufficient to provide good random data. Setting to false will cause this API to not block and may return random data of a lower quality.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetServerName
()
</div>
<div class="apiDetail">
<p>Get the application server name string.</p>
<dl><dt>Returns:</dt><dd>A string containing the application server name string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga5352f8f9f7d96d7e58dc7b784cd9c500"></a>
<div class="api">
<div class="prototype">
char *
mprGetSHA
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Get an SHA1 checksum.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated SHA1 checksum string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga08b9fc2b79eb1592298d20d9e3f4be5d"></a>
<div class="api">
<div class="prototype">
char *
mprGetSHABase64
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Get an SHA1 checksum of a null terminated string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to checksum.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing an SHA1 checksum.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga66f3b909d68d969920f962613d00d454"></a>
<div class="api">
<div class="prototype">
char *
mprGetSHAWithPrefix
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *prefix)
</div>
<div class="apiDetail">
<p>Get an SHA1 checksum with optional prefix string and buffer length.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer to checksum.</td>
<tr><td class="param">len</td><td>Size of the buffer.</td>
<tr><td class="param">prefix</td><td>String prefix to insert at the start of the result.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing an SHA1 checksum.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsExiting
()
</div>
<div class="apiDetail">
<p>Determine if the MPR is exiting.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns true if the MPR is in the process of exiting.</dd></dl>
<dl><dt>Returns:</dt><dd>True if the App has been instructed to exit.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gadb9752464abb66fba198cb816fafde88"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsFinished
()
</div>
<div class="apiDetail">
<p>Determine if the MPR has finished.</p>
<dl><dt><b>Description</b>:</dt><dd>This is true if the MPR services have been shutdown completely. This is typically used to determine if the App has been gracefully shutdown.</dd></dl>
<dl><dt>Returns:</dt><dd>True if the App has been instructed to exit and all the MPR services have completed.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsIdle
()
</div>
<div class="apiDetail">
<p>Determine if the App is idle.</p>
<dl><dt><b>Description</b>:</dt><dd>This call returns true if the App is not currently servicing any requests. By default this returns true if the MPR dispatcher, thread, worker and command subsytems are idle. Callers can replace or augment the standard idle testing by definining a new idle callback via mprSetIdleCallback.</dd></dl>
<dl><dt>Returns:</dt><dd>True if the App are idle.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gae20024a4d8b56242e293b3e5d54d9972"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsStopping
()
</div>
<div class="apiDetail">
<p>Test if the application is stopping.</p>
<dl><dt>Returns:</dt><dd>True if the application is in the process of exiting.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsStoppingCore
()
</div>
<div class="apiDetail">
<p>Test if the application is stopping and core services are being terminated.</p>
<dl><dt>Returns:</dt><dd>True if the application is in the process of exiting and core services should also exit.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276"></a>
<div class="api">
<div class="prototype">
int
mprMakeArgv
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *command, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> ***argv, int flags)
</div>
<div class="apiDetail">
<p>Make a argv style array of command arguments.</p>
<dl><dt><b>Description</b>:</dt><dd>The given command is parsed and broken into separate arguments and returned in a null-terminated, argv array. Arguments in the command may be quoted with single or double quotes to group words into one argument. Use back-quote &quot;\\&quot; to escape quotes.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">command</td><td>Command string to parse.</td>
<tr><td class="param">argv</td><td>Output parameter containing the parsed arguments.</td>
<tr><td class="param">flags</td><td>Set to MPR_ARGV_ARGS_ONLY if the command string does not contain a program name. In this case, argv[0] will be set to &quot;&quot;.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The count of arguments in argv.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaa3bb4935aa8ee20f4f064068ff28b2a5"></a>
<div class="api">
<div class="prototype">
void
mprNap
(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> msec)
</div>
<div class="apiDetail">
<p>Nap for a while.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine blocks and does not yield for GC. Only use it for very short naps.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">msec</td><td>Number of milliseconds to sleep.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gadbc113c2a4d14de7a12114eda5b1e733"></a>
<div class="api">
<div class="prototype">
int
mprParseArgs
(char *command, char **argv, int maxArgs)
</div>
<div class="apiDetail">
<p>Make a argv style array of command arguments.</p>
<dl><dt><b>Description</b>:</dt><dd>The given command is parsed and broken into separate arguments and returned in a null-terminated, argv array. Arguments in the command may be quoted with single or double quotes to group words into one argument. Use back-quote &quot;\\&quot; to escape quotes. This routine modifies command and does not allocate any memory and may be used before mprCreate is invoked.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">command</td><td>Command string to parse.</td>
<tr><td class="param">argv</td><td>Array for the arguments.</td>
<tr><td class="param">maxArgs</td><td>Size of the argv array.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The count of arguments in argv.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc"></a>
<div class="api">
<div class="prototype">
int
mprRandom
()
</div>
<div class="apiDetail">
<p>Return a random number.</p>
<dl><dt>Returns:</dt><dd>A random integer.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaa9ff9a812130215272eca40d5deb53d5"></a>
<div class="api">
<div class="prototype">
void
mprRestart
()
</div>
<div class="apiDetail">
<p>Restart the application.</p>
<dl><dt><b>Description</b>:</dt><dd>This call immediately restarts the application. The standard input, output and error I/O channels are preserved. All other open file descriptors are closed.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga40a197cef78eae1edc83d359cedb71e6"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprServicesAreIdle
()
</div>
<div class="apiDetail">
<p>Determine if the MPR services.</p>
<dl><dt><b>Description</b>:</dt><dd>This is the default routine invoked by <a class="ref" href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99">mprIsIdle()</a></dd></dl>
<dl><dt>Returns:</dt><dd>True if the MPR services are idle.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gad48220b7862b645de3920d74aa9b011e"></a>
<div class="api">
<div class="prototype">
int
mprSetAppName
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *title, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *version)
</div>
<div class="apiDetail">
<p>Set the application name, title and version.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>One word, lower case name for the app.</td>
<tr><td class="param">title</td><td>Pascal case multi-word descriptive name.</td>
<tr><td class="param">version</td><td>Version of the app. Major-Minor-Patch. E.g. 1.2.3.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga6ba839ff6e8b6e4cfa5c17ad6356d9ac"></a>
<div class="api">
<div class="prototype">
void
mprSetAppPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Set the application executable path.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>A string containing the application executable path.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprSetCmdlineLogging
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Set if command line logging was requested.</p>
<dl><dt><b>Description</b>:</dt><dd>Logging may be initiated by invoking an MPR based program with a &quot;&amp;ndash;log&quot; switch. This API assists programs to tell the MPR that command line logging has been used.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">on</td><td>Set to true to indicate command line logging is being used.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if command line logging was enabled before this call.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1"></a>
<div class="api">
<div class="prototype">
void
mprSetDebugMode
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Turn on debug mode.</p>
<dl><dt><b>Description</b>:</dt><dd>Debug mode disables timeouts and timers. This makes debugging much easier.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">on</td><td>Set to true to enable debugging mode.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a"></a>
<div class="api">
<div class="prototype">
void
mprSetDomainName
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)
</div>
<div class="apiDetail">
<p>Set the application domain name string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s</td><td>New value to use for the application domain name.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaa335e1d324029029795409a9a857dbdf"></a>
<div class="api">
<div class="prototype">
void
mprSetEnv
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Set an environment variable value.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">key</td><td>Variable name.</td>
<tr><td class="param">value</td><td>Variable value.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346"></a>
<div class="api">
<div class="prototype">
void
mprSetExitStrategy
(int strategy)
</div>
<div class="apiDetail">
<p>Set the exit strategy for when the application terminates.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">strategy</td><td>Set strategy to MPR_EXIT_IMMEDIATE for the application to exit immediately when terminated. Set to MPR_EXIT_GRACEFUL for the application to exit gracefully after allowing all current requests to complete before terminating.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga278ee775a1c2e956d09a4683e778caea"></a>
<div class="api">
<div class="prototype">
void
mprSetExitTimeout
(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Set the exit timeout for a graceful shutdown or restart.</p>
A graceful shutdown waits for existing requests to complete before exiting
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">timeout</td><td>Time in milliseconds to wait when terminating the MPR.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga53dd3e2813e09afdeca537bd1a8584c8"></a>
<div class="api">
<div class="prototype">
void
mprSetFilesLimit
(int limit)
</div>
<div class="apiDetail">
<p>Set the maximum number of open file/socket descriptors.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">limit</td><td>Limit to enforce.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaf61307049c58bbb253244babc9d5a6b1"></a>
<div class="api">
<div class="prototype">
void
mprSetHostName
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)
</div>
<div class="apiDetail">
<p>Set the application host name string.</p>
This is internal to the application and does not affect the O/S host name
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s</td><td>New host name to use within the application.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1af4113f22c0d3fa830415b1c1c2877b7d" class="ref">MprIdleCallback</a>
mprSetIdleCallback
(<a href="#mpr_8h_1af4113f22c0d3fa830415b1c1c2877b7d" class="ref">MprIdleCallback</a> idleCallback)
</div>
<div class="apiDetail">
<p>Define a new idle callback to be invoked by <a class="ref" href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99">mprIsIdle()</a></p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">idleCallback</td><td>Callback function to invoke to test if the application is idle.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc"></a>
<div class="api">
<div class="prototype">
void
mprSetIpAddr
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip)
</div>
<div class="apiDetail">
<p>Sete the application IP address string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ip</td><td>IP address string to store for the application.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaaaecf83d8b07a92579eb8ad5454cdc45"></a>
<div class="api">
<div class="prototype">
void
mprSetOsError
(int error)
</div>
<div class="apiDetail">
<p>Set the O/S error code.</p>
<dl><dt><b>Description</b>:</dt><dd>Set errno or equivalent.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga4def6498567ad43a6da505d43bb119fc"></a>
<div class="api">
<div class="prototype">
void
mprSetServerName
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)
</div>
<div class="apiDetail">
<p>Set the application server name string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s</td><td>New application server name to use within the application.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga0206927d986cd9ca7c42f8c530de6000"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprShouldAbortRequests
()
</div>
<div class="apiDetail">
<p>Test if requests should be aborted.</p>
<dl><dt><b>Description</b>:</dt><dd>This is useful to determine if current requests should be terminated due to the application exiting.</dd></dl>
<dl><dt>Returns:</dt><dd>True if new requests should be denied.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprShouldDenyNewRequests
()
</div>
<div class="apiDetail">
<p>Test if new requests should be denied.</p>
This is useful in denying new requests when doing a graceful shutdown while continuing to service existing requests
<dl><dt>Returns:</dt><dd>True if new requests should be denied.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda"></a>
<div class="api">
<div class="prototype">
void
mprSleep
(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> msec)
</div>
<div class="apiDetail">
<p>Sleep for a while.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine blocks for the given time and yields for GC during that time. Ensure all memory is held before the sleep.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">msec</td><td>Number of milliseconds to sleep.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8"></a>
<div class="api">
<div class="prototype">
int
mprStart
()
</div>
<div class="apiDetail">
<p>Start the Mpr services.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17"></a>
<div class="api">
<div class="prototype">
int
mprStartEventsThread
()
</div>
<div class="apiDetail">
<p>Start an thread dedicated to servicing events.</p>
This will create a new thread and invoke mprServiceEvents
<dl><dt>Returns:</dt><dd>Zero if successful.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga4141529427d59501d97564428a3b346e"></a>
<div class="api">
<div class="prototype">
int
mprStartOsService
()
</div>
<div class="apiDetail">
<p>Start the O/S dependent subsystem.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaba3a98bd9017492538bba54529d905d3"></a>
<div class="api">
<div class="prototype">
void
mprStopOsService
()
</div>
<div class="apiDetail">
<p>Stop the O/S dependent subsystem.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga0d636f2b2a27d7135d467177619fda6b"></a>
<div class="api">
<div class="prototype">
void
mprTerminate
(int flags, int status)
</div>
<div class="apiDetail">
<p>Terminate the application.</p>
<dl><dt><b>Description</b>:</dt><dd>Terminates the application and disposes of all allocated resources. The mprTerminate function will recursively free all memory allocated by the MPR.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">flags</td><td>Termination control flags. Use MPR_EXIT_IMMEDIATE for an immediate abortive shutdown. Finalizers will not be run. Use MPR_EXIT_NORMAL to allow garbage collection and finalizers to run. Use MPR_EXIT_GRACEFUL to allow all current requests and commands to complete before exiting.</td>
<tr><td class="param">status</td><td>Proposed program exit status.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga0583ac902111b5a259b401cd4c8269c6"></a>
<div class="api">
<div class="prototype">
char *
mprUriDecode
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri)
</div>
<div class="apiDetail">
<p>Decode a URI string by de-scaping URI characters.</p>
<dl><dt><b>Description</b>:</dt><dd>Decode a string with www-encoded characters that have meaning for URIs.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>URI to decode.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A reference to the buf argument.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga120b50614f04cffa2087c26d5228f1e8"></a>
<div class="api">
<div class="prototype">
char *
mprUriDecodeInSitu
(char *uri)
</div>
<div class="apiDetail">
<p>Decode a URI string by de-scaping URI characters.</p>
<dl><dt><b>Description</b>:</dt><dd>Decode a string with www-encoded characters that have meaning for URIs. This routines operates in-situ and modifies the buffer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>URI to decode.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A reference to the buf argument.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85"></a>
<div class="api">
<div class="prototype">
char *
mprUriEncode
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, int map)
</div>
<div class="apiDetail">
<p>Encode a string by escaping URI characters.</p>
<dl><dt><b>Description</b>:</dt><dd>Encode a string escaping all characters that have meaning for URIs.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>URI to encode.</td>
<tr><td class="param">map</td><td>Map to encode characters. Select from MPR_ENCODE_URI or MPR_ENCODE_URI_COMPONENT.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the encoded URI.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1ga270c5c5030b1d061456d1c00fb258584" class="ref">mprWaitTillIdle</a></dd></dl>
</div>
</div>
<a name="group___mpr_1ga270c5c5030b1d061456d1c00fb258584"></a>
<div class="api">
<div class="prototype">
int
mprWaitTillIdle
(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait until the application is idle.</p>
<dl><dt><b>Description</b>:</dt><dd>This call blocks until application services are idle.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">timeout</td><td>Time in milliseconds to wait for the application to be idle.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the application is idle.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_1ga34490595fe86683f06e8d6e9abc72aa3" class="ref">mprAddTerminator</a>, <a href="#group___mpr_1gac5203b2138474e781207b39ac4726c1b" class="ref">mprBreakpoint</a>, <a href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37" class="ref">mprCreate</a>, <a href="#group___mpr_1ga85bb50d63a783a867786d7df20a1e2ec" class="ref">mprCreateOsService</a>, <a href="#group___mpr_1ga7544a4578b5965495a2708ca7cc6cf44" class="ref">mprDecode64</a>, <a href="#mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92" class="ref">mprDestroy</a>, <a href="#group___mpr_1ga14459c3278e0c72246970cd1c15dd55d" class="ref">mprEmptyString</a>, <a href="#group___mpr_1ga673dc62bf4786f92566ae697b1fdcc89" class="ref">mprEncode64</a>, <a href="#group___mpr_1gaff5e6ee77f47f68793d0ca2991085a2c" class="ref">mprEscapeCmd</a>, <a href="#group___mpr_1ga3dfd4398a5607868c1110b47eebaea61" class="ref">mprGetAppDir</a>, <a href="#group___mpr_1ga5a96ecb8e54ab11f8772110f257154c8" class="ref">mprGetAppName</a>, <a href="#group___mpr_1gabfbea308cbe0f4db570bcc26e4f62815" class="ref">mprGetAppPath</a>, <a href="#group___mpr_1ga8560f36dc46bc8e8f63adb10ba38595a" class="ref">mprGetAppTitle</a>, <a href="#group___mpr_1ga93175ba8542800e4ddfac2d1499b69f4" class="ref">mprGetAppVersion</a>, <a href="#group___mpr_1ga27c4f99c98b7a8b75812851dc2775936" class="ref">mprGetCmdlineLogging</a>, <a href="#group___mpr_1gaf8419ba9c08c3e06b228034de3146cf5" class="ref">mprGetDebugMode</a>, <a href="#group___mpr_1ga9d261e899187c6fd8245e7baae0c7b11" class="ref">mprGetDomainName</a>, <a href="#group___mpr_1ga9d297bffc1b4168def6ca8664a3c5021" class="ref">mprGetEndian</a>, <a href="#group___mpr_1gaf184a06275222c97f80e0a8d807418ac" class="ref">mprGetError</a>, <a href="#group___mpr_1ga3d02e4f6ba5b6db9581ced2d9998bfb7" class="ref">mprGetHostName</a>, <a href="#group___mpr_1gaf619a8ca734f025bb96b25b4a46e4c6a" class="ref">mprGetIpAddr</a>, <a href="#group___mpr_1ga00ebec5e256f0540f9806ba4bae45a55" class="ref">mprGetLogLevel</a>, <a href="#group___mpr_1ga8097b3e02c4e50d5e9b1d4e8cbd29a8e" class="ref">mprGetMD5</a>, <a href="#group___mpr_1gae9a408ec54d4128208f6685b1eeaef8c" class="ref">mprGetMD5WithPrefix</a>, <a href="#group___mpr_1gad2fa15bdd6890ff1df432ae25f4c981c" class="ref">mprGetOsError</a>, <a href="#group___mpr_1ga69984bba38604d0bbc89c6b57ee18bef" class="ref">mprGetRandomBytes</a>, <a href="#group___mpr_1gae159a5aef748a3f62cd1acd541cf3d31" class="ref">mprGetServerName</a>, <a href="#group___mpr_1gab471b134b4eeb28e7fe1cf85fb723f5d" class="ref">mprIsExiting</a>, <a href="#group___mpr_1gadb9752464abb66fba198cb816fafde88" class="ref">mprIsFinished</a>, <a href="#group___mpr_1gaead57cafdee5b1206e4a4f3b0468fb99" class="ref">mprIsIdle</a>, <a href="#group___mpr_1gae20024a4d8b56242e293b3e5d54d9972" class="ref">mprIsStopping</a>, <a href="#group___mpr_1ga0246cb5dcc7c53e415885e1d8ac55320" class="ref">mprIsStoppingCore</a>, <a href="#group___mpr_1ga02a389f1cd2f5a8ba4e5d2417ae87276" class="ref">mprMakeArgv</a>, <a href="#group___mpr_1ga1ca968c92371da9a84a0152dfd0603cc" class="ref">mprRandom</a>, <a href="#group___mpr_1gaa9ff9a812130215272eca40d5deb53d5" class="ref">mprRestart</a>, <a href="#group___mpr_1ga40a197cef78eae1edc83d359cedb71e6" class="ref">mprServicesAreIdle</a>, <a href="#group___mpr_1gad48220b7862b645de3920d74aa9b011e" class="ref">mprSetAppName</a>, <a href="#group___mpr_1ga0cf82b3bc13e3e4da2bc35526720e913" class="ref">mprSetCmdlineLogging</a>, <a href="#group___mpr_1gacb25fd80b4d560d2c347ae8a692de0f1" class="ref">mprSetDebugMode</a>, <a href="#group___mpr_1ga9dbc9553237fd2af50c9cf7e19f3045a" class="ref">mprSetDomainName</a>, <a href="#group___mpr_1ga49b3d16b8a016c08580f0ea5b6c5e346" class="ref">mprSetExitStrategy</a>, <a href="#group___mpr_1gaf61307049c58bbb253244babc9d5a6b1" class="ref">mprSetHostName</a>, <a href="#group___mpr_1ga829517ad9c44a5a377f3d70928c6d9c2" class="ref">mprSetIdleCallback</a>, <a href="#group___mpr_1ga1fa92eb8cb9bf4f023f4f60f57001abc" class="ref">mprSetIpAddr</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_1ga4def6498567ad43a6da505d43bb119fc" class="ref">mprSetServerName</a>, <a href="#group___mpr_1ga0206927d986cd9ca7c42f8c530de6000" class="ref">mprShouldAbortRequests</a>, <a href="#group___mpr_1gaa8bdc374a789eed08f5b15c17a86559f" class="ref">mprShouldDenyNewRequests</a>, <a href="#group___mpr_1ga85c39ea54c27d4b13825ba78c2e7adda" class="ref">mprSleep</a>, <a href="#group___mpr_1ga3d488881e616f7cff999dc214d1ff7d8" class="ref">mprStart</a>, <a href="#group___mpr_1ga201d701e07e26e2ec458d4f5be81bf17" class="ref">mprStartEventsThread</a>, <a href="#group___mpr_1ga4141529427d59501d97564428a3b346e" class="ref">mprStartOsService</a>, <a href="#group___mpr_1gaba3a98bd9017492538bba54529d905d3" class="ref">mprStopOsService</a>, <a href="#group___mpr_1ga0d636f2b2a27d7135d467177619fda6b" class="ref">mprTerminate</a>, <a href="#group___mpr_1ga0583ac902111b5a259b401cd4c8269c6" class="ref">mprUriDecode</a>, <a href="#group___mpr_1gaa1a1ac21c52992cfcec70fe8d9320f85" class="ref">mprUriEncode</a></dd></dl>
</div>
</div>
<h1>MprBuf</h1>
<a name="group___mpr_buf"></a>
<div class="api">
<div class="prototype">MprBuf</div>
<div class="apiDetail">
<p>Dynamic Buffer Module.</p>
<dl><dt><b>Description</b>:</dt><dd>MprBuf is a flexible, dynamic growable buffer structure. It has start and end pointers to the data buffer which act as read/write pointers. Routines are provided to get and put data into and out of the buffer and automatically advance the appropriate start/end pointer. By definition, the buffer is empty when the start pointer == the end pointer. Buffers can be created with a fixed size or can grow dynamically as more data is added to the buffer. <br/><br/>
For performance, the specification of MprBuf is deliberately exposed. All members of MprBuf are implicitly public. However, it is still recommended that wherever possible, you use the accessor routines provided.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssize</td><td><td>buflen</td><td>
Current size of buffer.
</td>
<tr><td class="param">char *</td><td><td>data</td><td>
Actual buffer for data.
</td>
<tr><td class="param">char *</td><td><td>end</td><td>
Pointer one past the last data chr.
</td>
<tr><td class="param">char *</td><td><td>endbuf</td><td>
Pointer one past the end of buffer.
</td>
<tr><td class="param">ssize</td><td><td>growBy</td><td>
Next growth increment to use.
</td>
<tr><td class="param">ssize</td><td><td>maxsize</td><td>
Max size the buffer can ever grow.
</td>
<tr><td class="param">void *</td><td><td>refillArg</td><td>
Refill arg - must be alloced memory.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7">MprBufProc</a></td><td><td>refillProc</td><td>
Auto-refill procedure.
</td>
<tr><td class="param">char *</td><td><td>start</td><td>
Pointer to next data char.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d"></a>
<div class="api">
<div class="prototype">
void
mprAddNullToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Add a null character to the buffer contents.</p>
<dl><dt><b>Description</b>:</dt><dd>Add a null byte but do not change the buffer content lengths. The null is added outside the &quot;official&quot; content length. This is useful when calling <a class="ref" href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5">mprGetBufStart</a> and using the returned pointer as a &quot;C&quot; string pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga95de494427536885cd80187593d45d91"></a>
<div class="api">
<div class="prototype">
void
mprAdjustBufEnd
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)
</div>
<div class="apiDetail">
<p>Adjust the buffer end position.</p>
<dl><dt><b>Description</b>:</dt><dd>Adjust the buffer end position by the specified amount. This is typically used to advance the end position as content is appended to the buffer. Adjusting the start or end position will change the value returned by <a class="ref" href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34">mprGetBufLength</a>. If using the mprPutBlock or mprPutChar routines, adjusting the end position is done automatically.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">count</td><td>Positive or negative count of bytes to adjust the end position.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625"></a>
<div class="api">
<div class="prototype">
void
mprAdjustBufStart
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)
</div>
<div class="apiDetail">
<p>Adjust the buffer start position.</p>
<dl><dt><b>Description</b>:</dt><dd>Adjust the buffer start position by the specified amount. This is typically used to advance the start position as content is consumed. Adjusting the start or end position will change the value returned by <a class="ref" href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34">mprGetBufLength</a>. If using the mprGetBlock or mprGetChar routines, adjusting the start position is done automatically.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">count</td><td>Positive or negative count of bytes to adjust the start position.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e"></a>
<div class="api">
<div class="prototype">
char *
mprBufToString
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Convert the buffer contents to a string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9"></a>
<div class="api">
<div class="prototype">
void
mprCompactBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Compact the buffer contents.</p>
<dl><dt><b>Description</b>:</dt><dd>Compact the buffer contents by copying the contents down to start the the buffer origin.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_buf" class="ref">MprBuf</a> *
mprCreateBuf
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> initialSize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)
</div>
<div class="apiDetail">
<p>Create a new buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a new buffer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">initialSize</td><td>Initial size of the buffer.</td>
<tr><td class="param">maxSize</td><td>Maximum size the buffer can grow to.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A new buffer.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e"></a>
<div class="api">
<div class="prototype">
void
mprFlushBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Flush the buffer contents.</p>
<dl><dt><b>Description</b>:</dt><dd>Discard the buffer contents and reset the start end content pointers.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprGetBlockFromBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, char *blk, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)
</div>
<div class="apiDetail">
<p>Get a block of data from the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Get a block of data from the buffer start and advance the start position. If the requested length is greater than the available buffer content, then return whatever data is available.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">blk</td><td>Destination block for the read data.</td>
<tr><td class="param">count</td><td>Count of bytes to read from the buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The count of bytes read into the block or -1 if the buffer is empty.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga9df20a40f3b643e35f639509572185c8"></a>
<div class="api">
<div class="prototype">
char *
mprGetBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Get the origin of the buffer content storage.</p>
<dl><dt><b>Description</b>:</dt><dd>Get a pointer to the start of the buffer content storage. This is always and allocated block.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A pointer to the buffer content storage.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053"></a>
<div class="api">
<div class="prototype">
char *
mprGetBufEnd
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Get a reference to the end of the buffer contents.</p>
<dl><dt><b>Description</b>:</dt><dd>Get a pointer to the location immediately after the end of the buffer contents.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Pointer to the end of the buffer data contents. Points to the location one after the last data byte.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprGetBufLength
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Get the buffer content length.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the length of the buffer contents. This is not the same as the buffer size which may be larger.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The length of the content stored in the buffer in bytes.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>
mprGetBufRefillProc
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Get the buffer refill procedure.</p>
<dl><dt><b>Description</b>:</dt><dd>Return the buffer refill callback function.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The refill call back function if defined.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprGetBufSize
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Get the current size of the buffer content storage.</p>
<dl><dt><b>Description</b>:</dt><dd>This returns the size of the memory block allocated for storing the buffer contents.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The size of the buffer content storage.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprGetBufSpace
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Get the space available to store content.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the number of bytes available to store content in the buffer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of bytes available.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5"></a>
<div class="api">
<div class="prototype">
char *
mprGetBufStart
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Get the start of the buffer contents.</p>
<dl><dt><b>Description</b>:</dt><dd>Get a pointer to the start of the buffer contents. Use <a class="ref" href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34">mprGetBufLength</a> to determine the length of the content. Use <a class="ref" href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053">mprGetBufEnd</a> to get a pointer to the location after the end of the content.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Pointer to the start of the buffer data contents.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4"></a>
<div class="api">
<div class="prototype">
int
mprGetCharFromBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Get a character from the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the next byte from the buffer start and advance the start position.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The character or -1 if the buffer is empty.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57"></a>
<div class="api">
<div class="prototype">
int
mprGrowBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)
</div>
<div class="apiDetail">
<p>Grow the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Grow the storage allocated for content for the buffer. The new size must be less than the maximum limit specified via <a class="ref" href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238">mprCreateBuf</a> or <a class="ref" href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6">mprSetBufSize</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">count</td><td>Count of bytes by which to grow the buffer content size.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5"></a>
<div class="api">
<div class="prototype">
int
mprInsertCharToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, int c)
</div>
<div class="apiDetail">
<p>Insert a character into the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Insert a character into to the buffer prior to the current buffer start point.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">c</td><td>Character to append.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359"></a>
<div class="api">
<div class="prototype">
int
mprLookAtLastCharInBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Peek at the last character in the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Non-destructively return the last character from just prior to the end position in the buffer. The character is returned and the end position is not altered.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e"></a>
<div class="api">
<div class="prototype">
int
mprLookAtNextCharInBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Peek at the next character in the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Non-destructively return the next character from the start position in the buffer. The character is returned and the start position is not altered.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPutBlockToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Put a block to the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Append a block of data to the buffer at the end position and increment the end pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">ptr</td><td>Block to append.</td>
<tr><td class="param">size</td><td>Size of block to append.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2"></a>
<div class="api">
<div class="prototype">
int
mprPutCharToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, int c)
</div>
<div class="apiDetail">
<p>Put a character to the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Append a character to the buffer at the end position and increment the end pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">c</td><td>Character to append.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPutIntToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> i)
</div>
<div class="apiDetail">
<p>Put an integer to the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Append a integer to the buffer at the end position and increment the end pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">i</td><td>Integer to append to the buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Number of characters added to the buffer, otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPutPadToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, int c, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)
</div>
<div class="apiDetail">
<p>Put padding characters to the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Append padding characters to the buffer at the end position and increment the end pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">c</td><td>Character to append.</td>
<tr><td class="param">count</td><td>Count of pad characters to put.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPutStringToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Put a string to the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Append a null terminated string to the buffer at the end position and increment the end pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">str</td><td>String to append.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPutSubStringToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)
</div>
<div class="apiDetail">
<p>Put a substring to the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Append a null terminated substring to the buffer at the end position and increment the end pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">str</td><td>String to append.</td>
<tr><td class="param">count</td><td>Put at most count characters to the buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gac1891a432cf1745b7ec7d23864a7134a"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPutToBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Put a formatted string to the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Format a string and append to the buffer at the end position and increment the end pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>Variable arguments for the format string.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52"></a>
<div class="api">
<div class="prototype">
int
mprRefillBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Refill the buffer with data.</p>
<dl><dt><b>Description</b>:</dt><dd>Refill the buffer by calling the refill procedure specified via <a class="ref" href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c">mprSetBufRefillProc</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8"></a>
<div class="api">
<div class="prototype">
void
mprResetBufIfEmpty
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf)
</div>
<div class="apiDetail">
<p>Reset the buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>If the buffer is empty, reset the buffer start and end pointers to the beginning of the buffer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f"></a>
<div class="api">
<div class="prototype">
void
mprSetBufMax
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)
</div>
<div class="apiDetail">
<p>Set the maximum buffer size.</p>
<dl><dt><b>Description</b>:</dt><dd>Update the maximum buffer size set when the buffer was created.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">maxSize</td><td>New maximum size the buffer can grow to.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c"></a>
<div class="api">
<div class="prototype">
void
mprSetBufRefillProc
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a> fn, void *arg)
</div>
<div class="apiDetail">
<p>Set the buffer refill procedure.</p>
<dl><dt><b>Description</b>:</dt><dd>Define a buffer refill procedure. The MprBuf module will not invoke or manage this refill procedure. It is simply stored to allow upper layers to use and provide their own auto-refill mechanism.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">fn</td><td>Callback function to store.</td>
<tr><td class="param">arg</td><td>Callback data argument.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6"></a>
<div class="api">
<div class="prototype">
int
mprSetBufSize
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)
</div>
<div class="apiDetail">
<p>Set the buffer size.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the current buffer content size and maximum size limit. Setting a current size will immediately grow the buffer to be this size. If the size is less than the current buffer size, the requested size will be ignored. ie. this call will not shrink the buffer. Setting a maxSize will define a maximum limit for how big the buffer contents can grow. Set either argument to -1 to be ignored.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer created via mprCreateBuf.</td>
<tr><td class="param">size</td><td>Size to immediately make the buffer. If size is less than the current buffer size, it will be ignored. Set to -1 to ignore this parameter.</td>
<tr><td class="param">maxSize</td><td>Maximum size the buffer contents can grow to.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7" class="ref">MprBufProc</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a></dd></dl>
</div>
</div>
<h1>MprCache</h1>
<a name="group___mpr_cache"></a>
<div class="api">
<div class="prototype">MprCache</div>
<div class="apiDetail">
<p>In-memory caching.</p>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319">MprTicks</a></td><td><td>lifespan</td><td>
Default lifespan (msec).
</td>
<tr><td class="param">ssize</td><td><td>maxKeys</td><td>
Max number of keys.
</td>
<tr><td class="param">ssize</td><td><td>maxMem</td><td>
Max memory for session data.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Cache lock.
</td>
<tr><td class="param">int</td><td><td>resolution</td><td>
Frequence for pruner.
</td>
<tr><td class="param">struct MprCache *</td><td><td>shared</td><td>
Shared common cache.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_hash">MprHash</a> *</td><td><td>store</td><td>
Key/value store.
</td>
<tr><td class="param">MprEvent *</td><td><td>timer</td><td>
Pruning timer.
</td>
<tr><td class="param">ssize</td><td><td>usedMem</td><td>
Memory in use for keys and data.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_cache" class="ref">MprCache</a> *
mprCreateCache
(int options)
</div>
<div class="apiDetail">
<p>Create a new cache object.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">options</td><td>Set of option flags. Select from <a class="ref" href="#mpr_8h_1aa79b26057bf373035743f9fb36b1620e">MPR_CACHE_SHARED</a>, <a class="ref" href="#mpr_8h_1ac198d9d7c49a8c4b6e6770119437054c">MPR_CACHE_ADD</a>, <a class="ref" href="#mpr_8h_1ac198d9d7c49a8c4b6e6770119437054c">MPR_CACHE_ADD</a>, <a class="ref" href="#mpr_8h_1a6fc9fc42118cf01738a7f1d8242d2b2a">MPR_CACHE_SET</a>, <a class="ref" href="#mpr_8h_1a2282b63defc144dc2c8877014b746130">MPR_CACHE_APPEND</a>, <a class="ref" href="#mpr_8h_1a21ba7373200a15b53e7e027fd446ff16">MPR_CACHE_PREPEND</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A cache instance object. On error, return null.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264"></a>
<div class="api">
<div class="prototype">
void *
mprDestroyCache
(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache)
</div>
<div class="apiDetail">
<p>Destroy a new cache object.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cache</td><td>The cache instance object returned from <a class="ref" href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925">mprCreateCache</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1gacf17b95267136971ad528b236930a32f"></a>
<div class="api">
<div class="prototype">
int
mprExpireCache
(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> expires)
</div>
<div class="apiDetail">
<p>Set the expiry date for a cache item.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cache</td><td>The cache instance object returned from <a class="ref" href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925">mprCreateCache</a></td>
<tr><td class="param">key</td><td>Cache item key.</td>
<tr><td class="param">expires</td><td>Time when the cache item will expire. If expires is zero, the item is immediately removed from the cache.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the expiry is successfully updated. Return MPR_ERR_CANT_FIND if the cache item is not present in the cache.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1ga217793852b371ff5520edc80bc64358c"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a>
mprIncCache
(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> amount)
</div>
<div class="apiDetail">
<p>Increment a numeric cache item.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cache</td><td>The cache instance object returned from <a class="ref" href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925">mprCreateCache</a></td>
<tr><td class="param">key</td><td>Cache item key.</td>
<tr><td class="param">amount</td><td>Numeric amount to increment the cache item. This may be a negative number to decrement the item.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The new value for the cache item after incrementing.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1ga5abf88b56ea534c0cb36b0969f56d274"></a>
<div class="api">
<div class="prototype">
void
mprPruneCache
(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache)
</div>
<div class="apiDetail">
<p>Prune the cache.</p>
<dl><dt><b>Description</b>:</dt><dd>Prune the cache and discard all cached items.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cache</td><td>The cache instance object returned from <a class="ref" href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925">mprCreateCache</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6"></a>
<div class="api">
<div class="prototype">
char *
mprReadCache
(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="#group___mpr_time" class="ref">MprTime</a> *modified, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> *version)
</div>
<div class="apiDetail">
<p>Read an item from the cache.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cache</td><td>The cache instance object returned from <a class="ref" href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925">mprCreateCache</a></td>
<tr><td class="param">key</td><td>Cache item key.</td>
<tr><td class="param">modified</td><td>Optional MprTime value reference to receive the last modified time of the cache item. Set to null if not required.</td>
<tr><td class="param">version</td><td>Optional int64 value reference to receive the version number of the cache item. Set to null if not required. Cache items have a version number that is incremented every time the item is updated.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The cache item value.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprRemoveCache
(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Remove items from the cache.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cache</td><td>The cache instance object returned from <a class="ref" href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925">mprCreateCache</a></td>
<tr><td class="param">key</td><td>Cache item key. If set to null, then remove all keys from the cache.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the cache item was removed.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad"></a>
<div class="api">
<div class="prototype">
void
mprSetCacheLimits
(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> keys, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> lifespan, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> memory, int resolution)
</div>
<div class="apiDetail">
<p>Set the cache resource limits.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cache</td><td>The cache instance object returned from <a class="ref" href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925">mprCreateCache</a></td>
<tr><td class="param">keys</td><td>Set the maximum number of keys the cache can store.</td>
<tr><td class="param">lifespan</td><td>Set the default lifespan for cache items in milliseconds.</td>
<tr><td class="param">memory</td><td>Memory limit in bytes for all cache keys and items.</td>
<tr><td class="param">resolution</td><td>Set the cache item pruner resolution. This defines how frequently the cache manager will check items for expiration.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8" class="ref">mprWriteCache</a></dd></dl>
</div>
</div>
<a name="group___mpr_cache_1gad85cef853dbc0a16f343e7c720708ce8"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteCache
(<a href="#group___mpr_cache" class="ref">MprCache</a> *cache, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="#group___mpr_time" class="ref">MprTime</a> modified, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> lifespan, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> version, int options)
</div>
<div class="apiDetail">
<p>Write a cache item.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cache</td><td>The cache instance object returned from <a class="ref" href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925">mprCreateCache</a></td>
<tr><td class="param">key</td><td>Cache item key to write.</td>
<tr><td class="param">value</td><td>Value to set for the cache item.</td>
<tr><td class="param">modified</td><td>Value to set for the cache last modified time. If set to zero, the current time is obtained via <a class="ref" href="#group___mpr_time_1gaef18991a0e0a55e3a21bf3bf34cfa80b">mprGetTime</a></td>
<tr><td class="param">lifespan</td><td>Lifespan of the item in milliseconds. The item will be removed from the cache by the Cache manager when the lifetime expires unless it is rewritten to extend the lifespan.</td>
<tr><td class="param">version</td><td>Expected version number of the item. This is used to do transactional writes to the cache item. First the version number is retrieved via <a class="ref" href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6">mprReadCache</a> and that version number is supplied to mprWriteCache when the item is updated. If another caller updates the item in between the read/write, the version number will not match when the item is subsequently written and this call will fail with the <a class="ref" href="#mpr_8h_1ac23aecc1451d49a5b30ec93eef8a82fa">MPR_ERR_BAD_STATE</a> return code. Set to zero if version checking is not required.</td>
<tr><td class="param">options</td><td>Options to control how the item value is updated. Use <a class="ref" href="#mpr_8h_1a6fc9fc42118cf01738a7f1d8242d2b2a">MPR_CACHE_SET</a> to update the cache item and create if it does not exist. Use <a class="ref" href="#mpr_8h_1ac198d9d7c49a8c4b6e6770119437054c">MPR_CACHE_ADD</a> to add the item only if it does not already exits. Use <a class="ref" href="#mpr_8h_1a2282b63defc144dc2c8877014b746130">MPR_CACHE_APPEND</a> to append the parameter value to any existing cache item value. Use <a class="ref" href="#mpr_8h_1a21ba7373200a15b53e7e027fd446ff16">MPR_CACHE_PREPEND</a> to prepend the value.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>If writing the cache item was successful this call returns the number of bytes written. Otherwise a negative MPR error code is returned. <a class="ref" href="#mpr_8h_1ac23aecc1451d49a5b30ec93eef8a82fa">MPR_ERR_BAD_STATE</a> will be returned if an invalid version number is supplied. <a class="ref" href="#mpr_8h_1a0a19880d5b8b35cbd243601c3fdebc9a">MPR_ERR_ALREADY_EXISTS</a> will be returned if <a class="ref" href="#mpr_8h_1ac198d9d7c49a8c4b6e6770119437054c">MPR_CACHE_ADD</a> is specified and the cache item already exists.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cache_1gabdcde36d65e097bff2aacc915ea2f925" class="ref">mprCreateCache</a>, <a href="#group___mpr_cache_1gae32bb92501d37870eacd05c097eb2264" class="ref">mprDestroyCache</a>, <a href="#group___mpr_cache_1gacf17b95267136971ad528b236930a32f" class="ref">mprExpireCache</a>, <a href="#group___mpr_cache_1ga217793852b371ff5520edc80bc64358c" class="ref">mprIncCache</a>, <a href="#group___mpr_cache_1gae7c65445a2d3577bce01605e57cceae6" class="ref">mprReadCache</a>, <a href="#group___mpr_cache_1ga6585b0b574a517d4149b4f651973d95d" class="ref">mprRemoveCache</a>, <a href="#group___mpr_cache_1gac79a433b92c0e81df3b282345eef07ad" class="ref">mprSetCacheLimits</a></dd></dl>
</div>
</div>
<h1>MprCmd</h1>
<a name="group___mpr_cmd"></a>
<div class="api">
<div class="prototype">MprCmd</div>
<div class="apiDetail">
<p>Command execution Service.</p>
<dl><dt><b>Description</b>:</dt><dd>The MprCmd service enables execution of local commands. It uses three full-duplex pipes to communicate read, write and error data with the command.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>argc</td><td>
Count of args in argv.
</td>
<tr><td class="param">cchar **</td><td><td>argv</td><td>
List of args.
Null terminated.
</td>
<tr><td class="param">MprCmdProc</td><td><td>callback</td><td>
Handler for client output and completion.
</td>
<tr><td class="param">int</td><td><td>complete</td><td>
All channels EOF and status gathered.
</td>
<tr><td class="param">cchar **</td><td><td>defaultEnv</td><td>
Environment to use if no env passed to mprStartCmd.
</td>
<tr><td class="param">char *</td><td><td>dir</td><td>
Current working dir for the process.
</td>
<tr><td class="param">MprDispatcher *</td><td><td>dispatcher</td><td>
Dispatcher to use for wait events.
</td>
<tr><td class="param">MprList *</td><td><td>env</td><td>
List of environment variables.
Null terminated.
</td>
<tr><td class="param">int</td><td><td>eofCount</td><td>
Count of end-of-files.
</td>
<tr><td class="param">MprCmdFile</td><td><td>files[MPR_CMD_MAX_PIPE]</td><td>
Stdin, stdout for the command.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Control flags (userFlags not here).
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_cmd_1gaa20a5cafff87c96ba20526367622c885">MprForkCallback</a></td><td><td>forkCallback</td><td>
Forked client callback.
</td>
<tr><td class="param">cchar **</td><td><td>makeArgv</td><td>
Allocated argv.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multithread sync.
</td>
<tr><td class="param">int</td><td><td>pid</td><td>
Process ID of the created process.
</td>
<tr><td class="param">int</td><td><td>pid2</td><td>
Persistent copy of the pid.
</td>
<tr><td class="param">cchar *</td><td><td>program</td><td>
Program path name.
</td>
<tr><td class="param">int</td><td><td>requiredEof</td><td>
Number of EOFs required for an exit.
</td>
<tr><td class="param">char *</td><td><td>searchPath</td><td>
Search path to use to locate the command.
</td>
<tr><td class="param">MprSignal *</td><td><td>signal</td><td>
Signal handler for SIGCHLD.
</td>
<tr><td class="param">int</td><td><td>status</td><td>
Command exit status.
</td>
<tr><td class="param">MprBuf *</td><td><td>stderrBuf</td><td>
Standard error output from the client.
</td>
<tr><td class="param">MprBuf *</td><td><td>stdoutBuf</td><td>
Standard output from the client.
</td>
<tr><td class="param">int</td><td><td>stopped</td><td>
Command stopped.
</td>
<tr><td class="param">int</td><td><td>timedout</td><td>
Request has timedout.
</td>
<tr><td class="param">void *</td><td><td>userData</td><td>
User data storage.
</td>
<tr><td class="param">int</td><td><td>userFlags</td><td>
User flags storage.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga41a0e9cb643e435b21d5ff37658beec9"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprAreCmdEventsEnabled
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)
</div>
<div class="apiDetail">
<p>Return true if command events are enabled.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if I/O events are enabled for the given channel.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32"></a>
<div class="api">
<div class="prototype">
void
mprCloseCmdFd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)
</div>
<div class="apiDetail">
<p>Close the command channel.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_cmd" class="ref">MprCmd</a> *
mprCreateCmd
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher)
</div>
<div class="apiDetail">
<p>Create a new Command object.</p>
<dl><dt>Returns:</dt><dd>A newly allocated MprCmd object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951"></a>
<div class="api">
<div class="prototype">
void
mprDestroyCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)
</div>
<div class="apiDetail">
<p>Destroy the command.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a"></a>
<div class="api">
<div class="prototype">
void
mprDisableCmdEvents
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)
</div>
<div class="apiDetail">
<p>Disable command I/O events.</p>
This disables events on a given channel
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed"></a>
<div class="api">
<div class="prototype">
void
mprDisconnectCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)
</div>
<div class="apiDetail">
<p>Disconnect a command its underlying I/O channels.</p>
This is used to prevent further I/O wait events while still preserving the MprCmd object
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e"></a>
<div class="api">
<div class="prototype">
void
mprEnableCmdEvents
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)
</div>
<div class="apiDetail">
<p>Enable command I/O events.</p>
This enables events on a given channel
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga39d49294df1ae6d358c30e958585e060"></a>
<div class="api">
<div class="prototype">
void
mprEnableCmdOutputEvents
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Enable command I/O events for the command&apos;s STDOUT and STDERR channels.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">on</td><td>Set to true to enable events. Set to false to disable.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if I/O events are enabled for the given channel.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267"></a>
<div class="api">
<div class="prototype">
void
mprFinalizeCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)
</div>
<div class="apiDetail">
<p>Finalize the writing of data to the command process.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_buf" class="ref">MprBuf</a> *
mprGetCmdBuf
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)
</div>
<div class="apiDetail">
<p>Get the underlying buffer for a channel.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A reference to the MprBuf buffer structure.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3"></a>
<div class="api">
<div class="prototype">
int
mprGetCmdExitStatus
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)
</div>
<div class="apiDetail">
<p>Get the command exit status.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Status If the command has exited, a status between 0 and 255 is returned. Otherwise, a negative error code is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f"></a>
<div class="api">
<div class="prototype">
int
mprGetCmdFd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel)
</div>
<div class="apiDetail">
<p>Get the underlying file descriptor for an I/O channel.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The file descriptor.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsCmdRunning
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)
</div>
<div class="apiDetail">
<p>Test if the command is still running.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the command is still running.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga192b4e4644029986c0fab0dc79d6999a"></a>
<div class="api">
<div class="prototype">
void
mprPollWinCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Poll for I/O on the command pipes.</p>
This is only used on windows which can&apos;t adequately detect EOF on a named pipe
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">timeout</td><td>Time in milliseconds to wait for the command to complete and exit.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprReadCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel, char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> bufsize)
</div>
<div class="apiDetail">
<p>Make the I/O channels to send and receive data to and from the command.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to read from. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
<tr><td class="param">buf</td><td>Buffer to read into.</td>
<tr><td class="param">bufsize</td><td>Size of buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15"></a>
<div class="api">
<div class="prototype">
int
mprReapCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Reap the command.</p>
This waits for and collect the command exit status
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">timeout</td><td>Time in milliseconds to wait for the command to complete and exit.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc"></a>
<div class="api">
<div class="prototype">
int
mprRunCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *command, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **envp, char **out, char **err, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout, int flags)
</div>
<div class="apiDetail">
<p>Run a command using a string command line.</p>
This starts the command via
mprStartCmd()
and waits for its completion
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">command</td><td>Command line to run.</td>
<tr><td class="param">envp</td><td>Array of environment strings. Each environment string should be of the form: &quot;KEY=VALUE&quot;. The array must be null terminated.</td>
<tr><td class="param">out</td><td>Reference to a string to receive the stdout from the command.</td>
<tr><td class="param">err</td><td>Reference to a string to receive the stderr from the command.</td>
<tr><td class="param">timeout</td><td>Time in milliseconds to wait for the command to complete and exit.</td>
<tr><td class="param">flags</td><td>Flags to modify execution. Valid flags are: MPR_CMD_NEW_SESSION Create a new session on Unix MPR_CMD_SHOW Show the commands window on Windows MPR_CMD_IN Connect to stdin MPR_CMD_EXACT_ENV Use the exact environment supplied. Don&apos;t inherit and blend with existing environment.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428"></a>
<div class="api">
<div class="prototype">
int
mprRunCmdV
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int argc, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **argv, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **envp, char **out, char **err, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout, int flags)
</div>
<div class="apiDetail">
<p>Run a command using an argv[] array of arguments.</p>
This invokes
mprStartCmd()
and waits for its completion
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">argc</td><td>Count of arguments in argv.</td>
<tr><td class="param">argv</td><td>Command arguments array.</td>
<tr><td class="param">envp</td><td>Array of environment strings. Each environment string should be of the form: &quot;KEY=VALUE&quot;. The array must be null terminated.</td>
<tr><td class="param">out</td><td>Reference to a string to receive the stdout from the command.</td>
<tr><td class="param">err</td><td>Reference to a string to receive the stderr from the command.</td>
<tr><td class="param">timeout</td><td>Time in milliseconds to wait for the command to complete and exit.</td>
<tr><td class="param">flags</td><td>Flags to modify execution. Valid flags are: MPR_CMD_NEW_SESSION Create a new session on Unix MPR_CMD_SHOW Show the commands window on Windows MPR_CMD_IN Connect to stdin.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049"></a>
<div class="api">
<div class="prototype">
void
mprSetCmdCallback
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="#mpr_8h_1a1c7c70f4420c48fec0dfd1f238ce59bf" class="ref">MprCmdProc</a> callback, void *data)
</div>
<div class="apiDetail">
<p>Define a callback to be invoked to receive response data from the command.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">callback</td><td>Function of the signature MprCmdProc which will be invoked for receive notification for data from the commands stdout and stderr channels. MprCmdProc has the signature: int callback(MprCmd *cmd, int channel, void *data) {}.</td>
<tr><td class="param">data</td><td>User defined data to be passed to the callback.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga9f86aee08df0e092359a9d2ed662f856"></a>
<div class="api">
<div class="prototype">
void
mprSetCmdDefaultEnv
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **env)
</div>
<div class="apiDetail">
<p>Set the default environment to use for commands.</p>
<dl><dt><b>Description</b>:</dt><dd>This environment is used if one is not defined via <a class="ref" href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021">mprStartCmd</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">env</td><td>Array of environment &quot;KEY=VALUE&quot; strings. Null terminated.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89"></a>
<div class="api">
<div class="prototype">
void
mprSetCmdDir
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *dir)
</div>
<div class="apiDetail">
<p>Set the home directory for the command.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">dir</td><td>String directory path name.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363"></a>
<div class="api">
<div class="prototype">
void
mprSetCmdEnv
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **env)
</div>
<div class="apiDetail">
<p>Set the command environment.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">env</td><td>Array of environment strings. Each environment string should be of the form: &quot;KEY=VALUE&quot;. The array must be null terminated.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec"></a>
<div class="api">
<div class="prototype">
void
mprSetCmdSearchPath
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *search)
</div>
<div class="apiDetail">
<p>Set the default command search path.</p>
<dl><dt><b>Description</b>:</dt><dd>The search path is used to locate the program to run for the command.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">search</td><td>Search string. This is in a format similar to the PATH environment variable.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021"></a>
<div class="api">
<div class="prototype">
int
mprStartCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int argc, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **argv, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> **envp, int flags)
</div>
<div class="apiDetail">
<p>Start the command.</p>
This starts the command but does not wait for its completion. Once started, mprWriteCmd can be used to write to the command and response data can be received via mprReadCmd
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">argc</td><td>Count of arguments in argv.</td>
<tr><td class="param">argv</td><td>Command arguments array.</td>
<tr><td class="param">envp</td><td>Array of environment strings. Each environment string should be of the form: &quot;KEY=VALUE&quot;. The array must be null terminated.</td>
<tr><td class="param">flags</td><td>Flags to modify execution. Valid flags are: MPR_CMD_NEW_SESSION Create a new session on Unix MPR_CMD_SHOW Show the commands window on Windows MPR_CMD_IN Connect to stdin.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501"></a>
<div class="api">
<div class="prototype">
int
mprStopCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int signal)
</div>
<div class="apiDetail">
<p>Stop the command.</p>
The command is immediately killed
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">signal</td><td>Signal to send to the command to kill if required.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409"></a>
<div class="api">
<div class="prototype">
int
mprWaitForCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait for the command to complete.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">timeout</td><td>Time in milliseconds to wait for the command to complete and exit.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteCmd
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel, char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> bufsize)
</div>
<div class="apiDetail">
<p>Write data to an I/O channel.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a non-blocking write and may return having written less than requested.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to read from. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
<tr><td class="param">buf</td><td>Buffer to read into.</td>
<tr><td class="param">bufsize</td><td>Size of buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Count of bytes written.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteCmdBlock
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd, int channel, char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> bufsize)
</div>
<div class="apiDetail">
<p>Write data to an I/O channel.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a blocking write.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
<tr><td class="param">channel</td><td>Channel number to read from. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.</td>
<tr><td class="param">buf</td><td>Buffer to read into.</td>
<tr><td class="param">bufsize</td><td>Size of buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Count of bytes written.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a></dd></dl>
</div>
</div>
<h1>MprDispatcher</h1>
<a name="group___mpr_dispatcher"></a>
<div class="api">
<div class="prototype">MprDispatcher</div>
<div class="apiDetail">
<p>Event Dispatcher.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" href="#struct_mpr_cond">MprCond</a> *</td><td><td>cond</td><td>
Multi-thread sync.
</td>
<tr><td class="param">MprEvent *</td><td><td>currentQ</td><td>
Currently executing events.
</td>
<tr><td class="param">MprEvent *</td><td><td>eventQ</td><td>
Event queue.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Dispatcher control flags.
</td>
<tr><td class="param">cchar *</td><td><td>name</td><td>
Dispatcher name / purpose.
</td>
<tr><td class="param">struct MprDispatcher *</td><td><td>next</td><td>
Next dispatcher linkage.
</td>
<tr><td class="param">MprOsThread</td><td><td>owner</td><td>
Owning thread of the dispatcher.
</td>
<tr><td class="param">struct MprDispatcher *</td><td><td>parent</td><td>
Queue pointer.
</td>
<tr><td class="param">struct MprDispatcher *</td><td><td>prev</td><td>
Previous dispatcher linkage.
</td>
<tr><td class="param">struct MprWorker *</td><td><td>requiredWorker</td><td>
Worker affinity.
</td>
<tr><td class="param">struct MprEventService *</td><td><td>service</td><td>
Event service reference.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *
mprCreateDispatcher
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, int flags)
</div>
<div class="apiDetail">
<p>Create a new event dispatcher.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Useful name for debugging.</td>
<tr><td class="param">flags</td><td>Initial dispatcher flags. Set MPR_DISPATCHER_ENABLED to enable.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A Dispatcher object that can manage events and be used with mprCreateEvent.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_dispatcher_1ga5236d246266b55a3cfd9765de8501073"></a>
<div class="api">
<div class="prototype">
void
mprDisableDispatcher
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher)
</div>
<div class="apiDetail">
<p>Disable a dispatcher from service events.</p>
This removes the dispatcher from any dispatcher queues and allows it to be garbage collected
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dispatcher</td><td>Dispatcher to disable.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91"></a>
<div class="api">
<div class="prototype">
void
mprEnableDispatcher
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher)
</div>
<div class="apiDetail">
<p>Enable a dispatcher to service events.</p>
The mprCreateDispatcher routiner may create a dispatchers in the disabled state. Use mprEnableDispatcher to enable them to begin servicing events
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dispatcher</td><td>Dispatcher to enable.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *
mprGetDispatcher
()
</div>
<div class="apiDetail">
<p>Get the MPR primary dispatcher.</p>
<dl><dt>Returns:</dt><dd>The MPR dispatcher object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d"></a>
<div class="api">
<div class="prototype">
int
mprServiceEvents
(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> delay, int flags)
</div>
<div class="apiDetail">
<p>Service events.</p>
This can be called by any thread. Typically an app will dedicate one thread to be an event service thread. This call will service events until the timeout expires or if MPR_SERVICE_ONE_THING is specified in flags, after one event. This will service all enabled dispatcher queues and pending I/O events
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">delay</td><td>Time in milliseconds to wait. Set to zero for no wait. Set to -1 to wait forever.</td>
<tr><td class="param">flags</td><td>If set to MPR_SERVICE_ONE_THING, this call will service at most one event. Otherwise set to zero.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of events serviced. Returns MPR_ERR_BUSY is another thread is servicing events and timeout is zero.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540"></a>
<div class="api">
<div class="prototype">
void
mprSignalDispatcher
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher)
</div>
<div class="apiDetail">
<p>Signal the dispatcher to wakeup and re-examine its queues.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dispatcher</td><td>Event dispatcher to monitor.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87"></a>
<div class="api">
<div class="prototype">
int
mprWaitForEvent
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait for an event to occur on the given dispatcher.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dispatcher</td><td>Event dispatcher to monitor.</td>
<tr><td class="param">timeout</td><td>for waiting in milliseconds.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful and an event occurred before the timeout expired. Returns <a class="ref" href="#mpr_8h_1a5a93a590163db7efac72b4cdf1167028">MPR_ERR_TIMEOUT</a> if no event is fired before the timeout expires.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<h1>MprEvent</h1>
<a name="group___mpr_event"></a>
<div class="api">
<div class="prototype">MprEvent</div>
<div class="apiDetail">
<p>Event object.</p>
<dl><dt><b>Description</b>:</dt><dd>The MPR provides a powerful priority based eventing mechanism. Events are described by MprEvent objects which are created and queued via <a class="ref" href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30">mprCreateEvent</a>. Each event may have a priority and may be one-shot or be continuously rescheduled according to a specified period. The event subsystem provides the basis for callback timers.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">void *</td><td><td>data</td><td>
Event private data.
</td>
<tr><td class="param">struct MprDispatcher *</td><td><td>dispatcher</td><td>
Event dispatcher service.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319">MprTicks</a></td><td><td>due</td><td>
When is the event due.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Event flags.
</td>
<tr><td class="param">struct MprWaitHandler *</td><td><td>handler</td><td>
Optional wait handler.
</td>
<tr><td class="param">int</td><td><td>mask</td><td>
I/O mask of events.
</td>
<tr><td class="param">cchar *</td><td><td>name</td><td>
Static debug name of the event.
</td>
<tr><td class="param">struct MprEvent *</td><td><td>next</td><td>
Next event linkage.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319">MprTicks</a></td><td><td>period</td><td>
Reschedule period.
</td>
<tr><td class="param">struct MprEvent *</td><td><td>prev</td><td>
Previous event linkage.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d">MprEventProc</a></td><td><td>proc</td><td>
Callback procedure.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319">MprTicks</a></td><td><td>timestamp</td><td>
When was the event created.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_event" class="ref">MprEvent</a> *
mprCreateEvent
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> period, void *proc, void *data, int flags)
</div>
<div class="apiDetail">
<p>Create a new event.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a new event for service.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dispatcher</td><td>Dispatcher object created via mprCreateDispatcher.</td>
<tr><td class="param">name</td><td>Debug name of the event.</td>
<tr><td class="param">period</td><td>Time in milliseconds used by continuous events between firing of the event.</td>
<tr><td class="param">proc</td><td>Function to invoke when the event is run.</td>
<tr><td class="param">data</td><td>Data to associate with the event and stored in event-&gt;data. The data must be either an allocated memory object or MPR_EVENT_STATIC_DATA must be specified in flags.</td>
<tr><td class="param">flags</td><td>Flags to modify the behavior of the event. Valid values are: MPR_EVENT_CONTINUOUS to create an event which will be automatically rescheduled accoring to the specified period. Use MPR_EVENT_STATIC_DATA if the data argument does not point to an allocated memory object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The event object if successful.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<a name="group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c"></a>
<div class="api">
<div class="prototype">
int
mprCreateEventOutside
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, void *proc, void *data)
</div>
<div class="apiDetail">
<p>Create an event outside the MPR.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a new event when executing a non-MPR thread.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dispatcher</td><td>Dispatcher object created via mprCreateDispatcher.</td>
<tr><td class="param">proc</td><td>Function to invoke when the event is run.</td>
<tr><td class="param">data</td><td>Data to associate with the event and stored in event-&gt;data. The data must be non-MPR memory.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<a name="group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_event" class="ref">MprEvent</a> *
mprCreateTimerEvent
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> period, void *proc, void *data, int flags)
</div>
<div class="apiDetail">
<p>Create a timer event.</p>
<dl><dt><b>Description</b>:</dt><dd>Create and queue a timer event for service. This is a convenience wrapper to create continuous events over the <a class="ref" href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30">mprCreateEvent</a> call.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dispatcher</td><td>Dispatcher object created via <a class="ref" href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1">mprCreateDispatcher</a></td>
<tr><td class="param">name</td><td>Debug name of the event.</td>
<tr><td class="param">proc</td><td>Function to invoke when the event is run.</td>
<tr><td class="param">period</td><td>Time in milliseconds used by continuous events between firing of the event.</td>
<tr><td class="param">data</td><td>Data to associate with the event and stored in event-&gt;data.</td>
<tr><td class="param">flags</td><td>Not used.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<a name="group___mpr_event_1gac9e97afd0732f2d3612d911817357db5"></a>
<div class="api">
<div class="prototype">
void
mprEnableContinuousEvent
(<a href="#group___mpr_event" class="ref">MprEvent</a> *event, int enable)
</div>
<div class="apiDetail">
<p>Enable or disable an event being continous.</p>
<dl><dt><b>Description</b>:</dt><dd>This call will modify the continuous property for an event.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">event</td><td>Event object returned from <a class="ref" href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30">mprCreateEvent</a></td>
<tr><td class="param">enable</td><td>Set to 1 to enable continous scheduling of the event.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<a name="group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e"></a>
<div class="api">
<div class="prototype">
void
mprRemoveEvent
(<a href="#group___mpr_event" class="ref">MprEvent</a> *event)
</div>
<div class="apiDetail">
<p>Remove an event.</p>
<dl><dt><b>Description</b>:</dt><dd>Remove a queued event. This is useful to remove continuous events from the event queue.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">event</td><td>Event object returned from <a class="ref" href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30">mprCreateEvent</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<a name="group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2"></a>
<div class="api">
<div class="prototype">
void
mprRescheduleEvent
(<a href="#group___mpr_event" class="ref">MprEvent</a> *event, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> period)
</div>
<div class="apiDetail">
<p>Reschedule an event.</p>
<dl><dt><b>Description</b>:</dt><dd>Reschedule a continuous event by modifying its period.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">event</td><td>Event object returned from <a class="ref" href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30">mprCreateEvent</a></td>
<tr><td class="param">period</td><td>Time in milliseconds used by continuous events between firing of the event.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<a name="group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4"></a>
<div class="api">
<div class="prototype">
void
mprRestartContinuousEvent
(<a href="#group___mpr_event" class="ref">MprEvent</a> *event)
</div>
<div class="apiDetail">
<p>Restart an event.</p>
<dl><dt><b>Description</b>:</dt><dd>Restart a continuous event after it has been stopped via <a class="ref" href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7">mprStopContinuousEvent</a>. This call will add the event to the event queue and it will run after the configured event period has expired.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">event</td><td>Event object returned from <a class="ref" href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30">mprCreateEvent</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<a name="group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7"></a>
<div class="api">
<div class="prototype">
void
mprStopContinuousEvent
(<a href="#group___mpr_event" class="ref">MprEvent</a> *event)
</div>
<div class="apiDetail">
<p>Stop an event.</p>
<dl><dt><b>Description</b>:</dt><dd>Stop a continuous event and remove from the queue.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">event</td><td>Event object returned from <a class="ref" href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30">mprCreateEvent</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d" class="ref">MprEventProc</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<h1>MprFile</h1>
<a name="group___mpr_file"></a>
<div class="api">
<div class="prototype">MprFile</div>
<div class="apiDetail">
<p>File I/O Module.</p>
<dl><dt><b>Description</b>:</dt><dd>MprFile is the cross platform File I/O abstraction control structure. An instance will be created when a file is created or opened via <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>attached</td><td>
Attached to existing descriptor.
</td>
<tr><td class="param">MprBuf *</td><td><td>buf</td><td>
Buffer for I/O if buffered.
</td>
<tr><td class="param">int</td><td><td>fd</td><td>
File handle.
</td>
<tr><td class="param">MprFileSystem *</td><td><td>fileSystem</td><td>
File system owning this file.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_rom_inode">MprRomInode</a> *</td><td><td>inode</td><td>
Reference to ROM file.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20">MprOff</a></td><td><td>iopos</td><td>
Raw I/O position.
</td>
<tr><td class="param">int</td><td><td>mode</td><td>
File open mode.
</td>
<tr><td class="param">char *</td><td><td>path</td><td>
Filename.
</td>
<tr><td class="param">int</td><td><td>perms</td><td>
File permissions.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20">MprOff</a></td><td><td>pos</td><td>
Current read position.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20">MprOff</a></td><td><td>size</td><td>
Current file size.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_file" class="ref">MprFile</a> *
mprAttachFileFd
(int fd, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, int omode)
</div>
<div class="apiDetail">
<p>Attach to an existing file descriptor.</p>
<dl><dt><b>Description</b>:</dt><dd>Attach a file to an open file decriptor and return a file object.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fd</td><td>File descriptor to attach to.</td>
<tr><td class="param">name</td><td>Descriptive name for the file.</td>
<tr><td class="param">omode</td><td>Posix style file open mode mask. The open mode may contain the following mask values ored together: <ul><li>O_RDONLY Open read only </li><li>O_WRONLY Open write only </li><li>O_RDWR Open for read and write </li><li>O_CREAT Create or re-create </li><li>O_TRUNC Truncate </li><li>O_BINARY Open for binary data </li><li>O_TEXT Open for text data </li><li>O_EXCL Open with an exclusive lock </li><li>O_APPEND Open to append </li></ul></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an MprFile object to use in other file operations.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06"></a>
<div class="api">
<div class="prototype">
int
mprCloseFile
(<a href="#group___mpr_file" class="ref">MprFile</a> *file)
</div>
<div class="apiDetail">
<p>Close a file.</p>
<dl><dt><b>Description</b>:</dt><dd>This call closes a file without destroying the file object.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>File instance returned from <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga457be50126337e42f1df6c30af9db510"></a>
<div class="api">
<div class="prototype">
void
mprDisableFileBuffering
(<a href="#group___mpr_file" class="ref">MprFile</a> *file)
</div>
<div class="apiDetail">
<p>Disable file buffering.</p>
<dl><dt><b>Description</b>:</dt><dd>Disable any buffering of data when using the buffer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>File instance returned from <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da"></a>
<div class="api">
<div class="prototype">
int
mprEnableFileBuffering
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)
</div>
<div class="apiDetail">
<p>Enable file buffering.</p>
<dl><dt><b>Description</b>:</dt><dd>Enable data buffering when using the buffer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>File instance returned from <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a></td>
<tr><td class="param">size</td><td>Size to allocate for the buffer.</td>
<tr><td class="param">maxSize</td><td>Maximum size the data buffer can grow to.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11"></a>
<div class="api">
<div class="prototype">
int
mprFlushFile
(<a href="#group___mpr_file" class="ref">MprFile</a> *file)
</div>
<div class="apiDetail">
<p>Flush any buffered write data.</p>
<dl><dt><b>Description</b>:</dt><dd>Write buffered write data and then reset the internal buffers.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366"></a>
<div class="api">
<div class="prototype">
int
mprGetFileChar
(<a href="#group___mpr_file" class="ref">MprFile</a> *file)
</div>
<div class="apiDetail">
<p>Read a character from the file.</p>
<dl><dt><b>Description</b>:</dt><dd>Read a single character from the file and advance the read position.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>If successful, return the character just read. Otherwise return a negative MPR error code. End of file is signified by reading 0.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f"></a>
<div class="api">
<div class="prototype">
int
mprGetFileFd
(<a href="#group___mpr_file" class="ref">MprFile</a> *file)
</div>
<div class="apiDetail">
<p>Get the file descriptor for a file.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>File object returned via <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An integer O/S file descriptor.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a>
mprGetFilePosition
(<a href="#group___mpr_file" class="ref">MprFile</a> *file)
</div>
<div class="apiDetail">
<p>Return the current file position.</p>
<dl><dt><b>Description</b>:</dt><dd>Return the current read/write file position.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>A file object returned from <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The current file offset position if successful. Returns a negative MPR error code on errors.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a>
mprGetFileSize
(<a href="#group___mpr_file" class="ref">MprFile</a> *file)
</div>
<div class="apiDetail">
<p>Get the size of the file.</p>
<dl><dt><b>Description</b>:</dt><dd>Return the current file size.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>A file object returned from <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The current file size if successful. Returns a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga0fabdee56522d116443f8c794550ee64"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_file" class="ref">MprFile</a> *
mprGetStderr
()
</div>
<div class="apiDetail">
<p>Return a file object for the Stderr I/O channel.</p>
<dl><dt>Returns:</dt><dd>A file object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_file" class="ref">MprFile</a> *
mprGetStdin
()
</div>
<div class="apiDetail">
<p>Return a file object for the Stdin I/O channel.</p>
<dl><dt>Returns:</dt><dd>A file object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_file" class="ref">MprFile</a> *
mprGetStdout
()
</div>
<div class="apiDetail">
<p>Return a file object for the Stdout I/O channel.</p>
<dl><dt>Returns:</dt><dd>A file object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_file" class="ref">MprFile</a> *
mprOpenFile
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *filename, int omode, int perms)
</div>
<div class="apiDetail">
<p>Open a file.</p>
<dl><dt><b>Description</b>:</dt><dd>Open a file and return a file object.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">filename</td><td>String containing the filename to open or create.</td>
<tr><td class="param">omode</td><td>Posix style file open mode mask. The open mode may contain the following mask values ored together: <ul><li>O_RDONLY Open read only </li><li>O_WRONLY Open write only </li><li>O_RDWR Open for read and write </li><li>O_CREAT Create or re-create </li><li>O_TRUNC Truncate </li><li>O_BINARY Open for binary data </li><li>O_TEXT Open for text data </li><li>O_EXCL Open with an exclusive lock </li><li>O_APPEND Open to append </li></ul></td>
<tr><td class="param">perms</td><td>Posix style file permissions mask.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an MprFile object to use in other file operations.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1gabba294cacccaced9435b1151e2db9c95"></a>
<div class="api">
<div class="prototype">
int
mprPeekFileChar
(<a href="#group___mpr_file" class="ref">MprFile</a> *file)
</div>
<div class="apiDetail">
<p>Non-destructively read a character from the file.</p>
<dl><dt><b>Description</b>:</dt><dd>Read a single character from the file without advancing the read position.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>If successful, return the character just read. Otherwise return a negative MPR error code. End of file is signified by reading 0.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga461e26b7175b96b6953e02e16219b426"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPutFileChar
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, int c)
</div>
<div class="apiDetail">
<p>Write a character to the file.</p>
<dl><dt><b>Description</b>:</dt><dd>Writes a single character to the file. Output is buffered and is flushed as required or when mprClose is called.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
<tr><td class="param">c</td><td>Character to write.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>One if successful, otherwise returns a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPutFileString
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Write a string to the file.</p>
<dl><dt><b>Description</b>:</dt><dd>Writes a string to the file. Output is buffered and is flushed as required or when mprClose is called.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
<tr><td class="param">str</td><td>String to write.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of characters written to the file. Returns a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprReadFile
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, void *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Read data from a file.</p>
<dl><dt><b>Description</b>:</dt><dd>Reads data from a file.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
<tr><td class="param">buf</td><td>Buffer to contain the read data.</td>
<tr><td class="param">size</td><td>Size of buf in characters.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of characters read from the file. Returns a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de"></a>
<div class="api">
<div class="prototype">
char *
mprReadLine
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> *len)
</div>
<div class="apiDetail">
<p>Read a line from the file.</p>
<dl><dt><b>Description</b>:</dt><dd>Read a single line from the file. Lines are delimited by the newline character. The newline is not included in the returned buffer. This call will read lines up to the given size in length. If no newline is found, all available characters, up to size, will be returned.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
<tr><td class="param">size</td><td>Maximum number of characters in a line.</td>
<tr><td class="param">len</td><td>Pointer to an integer to hold the length of the returned string.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string and sets *len to the number of bytes read.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a>
mprSeekFile
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, int seekType, <a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a> distance)
</div>
<div class="apiDetail">
<p>Seek the I/O pointer to a new location in the file.</p>
<dl><dt><b>Description</b>:</dt><dd>Move the position in the file to/from which I/O will be performed in the file. Seeking prior to a read or write will cause the next I/O to occur at that location.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
<tr><td class="param">seekType</td><td>Seek type may be one of the following three values: <ul><li>SEEK_SET Seek to a position relative to the start of the file </li><li>SEEK_CUR Seek relative to the current position </li><li>SEEK_END Seek relative to the end of the file </li></ul></td>
<tr><td class="param">distance</td><td>A positive or negative byte offset.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The new file position if successful otherwise a negative MPR error code is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e"></a>
<div class="api">
<div class="prototype">
int
mprTruncateFile
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20" class="ref">MprOff</a> size)
</div>
<div class="apiDetail">
<p>Truncate a file.</p>
<dl><dt><b>Description</b>:</dt><dd>Truncate a file to a given size. Note this works on a path and not on an open file.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>File to truncate.</td>
<tr><td class="param">size</td><td>New maximum size for the file.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteFile
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> count)
</div>
<div class="apiDetail">
<p>Write data to a file.</p>
<dl><dt><b>Description</b>:</dt><dd>Writes data to a file.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
<tr><td class="param">buf</td><td>Buffer containing the data to write.</td>
<tr><td class="param">count</td><td>Cound of characters in buf to write.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of characters actually written to the file. Returns a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1ga9ff2d70355f7e3c98e6de81d73b049ae"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteFileFmt
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Write formatted data to a file.</p>
<dl><dt><b>Description</b>:</dt><dd>Writes a formatted string to a file.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
<tr><td class="param">fmt</td><td>Format string.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of characters actually written to the file. Returns a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_1gae093f94fb3ced3c2d292f370ed33b0a6"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteFileString
(<a href="#group___mpr_file" class="ref">MprFile</a> *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Write a string to a file.</p>
<dl><dt><b>Description</b>:</dt><dd>Writes a string to a file.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Pointer to an MprFile object returned via MprOpen.</td>
<tr><td class="param">str</td><td>String to write.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of characters actually written to the file. Returns a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_file_1ga0d6eabedf8da002bf9d12d2a3336f3b8" class="ref">mprAttachFileFd</a>, <a href="#group___mpr_file_1gabed0e8f716912b0f4e928c32480a0c06" class="ref">mprCloseFile</a>, <a href="#group___mpr_file_1ga457be50126337e42f1df6c30af9db510" class="ref">mprDisableFileBuffering</a>, <a href="#group___mpr_file_1ga04cace2622f3cfe7e8e9ee32bffb12da" class="ref">mprEnableFileBuffering</a>, <a href="#group___mpr_file_1ga957f3c3051214ee8f105047fee84bc11" class="ref">mprFlushFile</a>, <a href="#group___mpr_file_1gaef84e97dcc3d31210a7a234a03ac3366" class="ref">mprGetFileChar</a>, <a href="#group___mpr_file_1gaf103e93995d60cca6b94f15b2e77e19f" class="ref">mprGetFileFd</a>, <a href="#group___mpr_file_1ga437b7eb30b31d38fcedef0aa8617edcc" class="ref">mprGetFilePosition</a>, <a href="#group___mpr_file_1ga29b58b84303a5345e9cc69bb320fc500" class="ref">mprGetFileSize</a>, <a href="#group___mpr_file_1ga0fabdee56522d116443f8c794550ee64" class="ref">mprGetStderr</a>, <a href="#group___mpr_file_1ga7ed8a2aa87f271d5b12e3a42d5e5cf57" class="ref">mprGetStdin</a>, <a href="#group___mpr_file_1gae6c5f890b0c9675cb6c8a5bdb8bf55b6" class="ref">mprGetStdout</a>, <a href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9" class="ref">mprOpenFile</a>, <a href="#group___mpr_file_1gabba294cacccaced9435b1151e2db9c95" class="ref">mprPeekFileChar</a>, <a href="#group___mpr_file_1ga461e26b7175b96b6953e02e16219b426" class="ref">mprPutFileChar</a>, <a href="#group___mpr_file_1ga139515262948d6bd2f03d802d8fff34e" class="ref">mprPutFileString</a>, <a href="#group___mpr_file_1ga5edc60c8f5b38c394accf29cd6785f96" class="ref">mprReadFile</a>, <a href="#group___mpr_file_1ga882b6d2101eefade4f7f7f9c032e10de" class="ref">mprReadLine</a>, <a href="#group___mpr_file_1gaaddd841fab4eb81ea0cefed2c24b5d1c" class="ref">mprSeekFile</a>, <a href="#group___mpr_file_1ga61cd5b0e215e4dafa26f90839cc9429e" class="ref">mprTruncateFile</a>, <a href="#group___mpr_file_1ga48b31d54e03c997a5e6b43d070cfa4ac" class="ref">mprWriteFile</a></dd></dl>
</div>
</div>
<h1>MprFileSystem</h1>
<a name="group___mpr_file_system"></a>
<div class="api">
<div class="prototype">MprFileSystem</div>
<div class="apiDetail">
<p>File system service.</p>
<dl><dt><b>Description</b>:</dt><dd>The MPR provides a file system abstraction to support non-disk based file access such as flash or other ROM based file systems. The MprFileSystem structure defines a virtual file system interface that will be invoked by the various MPR file routines.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a>, <a href="#group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24" class="ref">mprAddFileSystem</a>, <a href="#group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee" class="ref">mprCreateFileSystem</a>, <a href="#group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e" class="ref">mprCreateRomFileSystem</a>, <a href="#group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2" class="ref">mprLookupFileSystem</a>, <a href="#group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812" class="ref">mprSetPathNewline</a>, <a href="#group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2" class="ref">mprSetPathSeparators</a>, <a href="#group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c" class="ref">mprSetRomFileSystem</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">MprAccessFileProc</td><td><td>accessPath</td><td>
Virtual access file routine.
</td>
<tr><td class="param">bool</td><td><td>caseSensitive</td><td>
Path comparisons are case sensitive.
</td>
<tr><td class="param">MprCloseFileProc</td><td><td>closeFile</td><td>
Virtual close file routine.
</td>
<tr><td class="param">MprDeleteFileProc</td><td><td>deletePath</td><td>
Virtual delete file routine.
</td>
<tr><td class="param">MprGetPathInfoProc</td><td><td>getPathInfo</td><td>
Virtual get file information routine.
</td>
<tr><td class="param">MprGetPathLinkProc</td><td><td>getPathLink</td><td>
Virtual get the symbolic link target.
</td>
<tr><td class="param">bool</td><td><td>hasDriveSpecs</td><td>
Paths can have drive specifications.
</td>
<tr><td class="param">MprMakeDirProc</td><td><td>makeDir</td><td>
Virtual make directory routine.
</td>
<tr><td class="param">MprMakeLinkProc</td><td><td>makeLink</td><td>
Virtual make link routine.
</td>
<tr><td class="param">char *</td><td><td>newline</td><td>
Newline for text files.
</td>
<tr><td class="param">MprOpenFileProc</td><td><td>openFile</td><td>
Virtual open file routine.
</td>
<tr><td class="param">MprReadFileProc</td><td><td>readFile</td><td>
Virtual read file routine.
</td>
<tr><td class="param">cchar *</td><td><td>root</td><td>
Root file path.
</td>
<tr><td class="param">MprSeekFileProc</td><td><td>seekFile</td><td>
Virtual seek file routine.
</td>
<tr><td class="param">char *</td><td><td>separators</td><td>
Filename path separators.
First separator is the preferred separator.
</td>
<tr><td class="param">MprSetBufferedProc</td><td><td>setBuffered</td><td>
Virtual set buffered I/O routine.
</td>
<tr><td class="param">MprTruncateFileProc</td><td><td>truncateFile</td><td>
Virtual truncate file routine.
</td>
<tr><td class="param">MprWriteFileProc</td><td><td>writeFile</td><td>
Virtual write file routine.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24"></a>
<div class="api">
<div class="prototype">
void
mprAddFileSystem
(<a href="#group___mpr_file_system" class="ref">MprFileSystem</a> *fs)
</div>
<div class="apiDetail">
<p>Create and initialize the disk FileSystem.</p>
<dl><dt><b>Description</b>:</dt><dd>This is an internal routine called by the MPR during initialization.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fs</td><td>File system object.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a>, <a href="#group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee" class="ref">mprCreateFileSystem</a>, <a href="#group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e" class="ref">mprCreateRomFileSystem</a>, <a href="#group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2" class="ref">mprLookupFileSystem</a>, <a href="#group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812" class="ref">mprSetPathNewline</a>, <a href="#group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2" class="ref">mprSetPathSeparators</a>, <a href="#group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c" class="ref">mprSetRomFileSystem</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_file_system" class="ref">MprFileSystem</a> *
mprCreateFileSystem
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Create and initialize the FileSystem subsystem.</p>
<dl><dt><b>Description</b>:</dt><dd>This is an internal routine called by the MPR during initialization.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to the root of the file system.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a new file system object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a>, <a href="#group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24" class="ref">mprAddFileSystem</a>, <a href="#group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e" class="ref">mprCreateRomFileSystem</a>, <a href="#group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2" class="ref">mprLookupFileSystem</a>, <a href="#group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812" class="ref">mprSetPathNewline</a>, <a href="#group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2" class="ref">mprSetPathSeparators</a>, <a href="#group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c" class="ref">mprSetRomFileSystem</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_rom_file_system" class="ref">MprRomFileSystem</a> *
mprCreateRomFileSystem
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Create and initialize the ROM FileSystem.</p>
<dl><dt><b>Description</b>:</dt><dd>This is an internal routine called by the MPR during initialization.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to the root of the file system.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a new file system object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a>, <a href="#group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24" class="ref">mprAddFileSystem</a>, <a href="#group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee" class="ref">mprCreateFileSystem</a>, <a href="#group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2" class="ref">mprLookupFileSystem</a>, <a href="#group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812" class="ref">mprSetPathNewline</a>, <a href="#group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2" class="ref">mprSetPathSeparators</a>, <a href="#group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c" class="ref">mprSetRomFileSystem</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_file_system" class="ref">MprFileSystem</a> *
mprLookupFileSystem
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Lookup a file system.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path representing a file in the file system.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a file system object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a>, <a href="#group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24" class="ref">mprAddFileSystem</a>, <a href="#group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee" class="ref">mprCreateFileSystem</a>, <a href="#group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e" class="ref">mprCreateRomFileSystem</a>, <a href="#group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812" class="ref">mprSetPathNewline</a>, <a href="#group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2" class="ref">mprSetPathSeparators</a>, <a href="#group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c" class="ref">mprSetRomFileSystem</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812"></a>
<div class="api">
<div class="prototype">
void
mprSetPathNewline
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *newline)
</div>
<div class="apiDetail">
<p>Set the file system new line character string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path representing a file in the file system.</td>
<tr><td class="param">newline</td><td>String containing the newline character(s). &quot;\\n&quot;. Windows uses &quot;\\r\\n&quot;.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a>, <a href="#group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24" class="ref">mprAddFileSystem</a>, <a href="#group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee" class="ref">mprCreateFileSystem</a>, <a href="#group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e" class="ref">mprCreateRomFileSystem</a>, <a href="#group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2" class="ref">mprLookupFileSystem</a>, <a href="#group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2" class="ref">mprSetPathSeparators</a>, <a href="#group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c" class="ref">mprSetRomFileSystem</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2"></a>
<div class="api">
<div class="prototype">
void
mprSetPathSeparators
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *separators)
</div>
<div class="apiDetail">
<p>Set the file system path separators.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path representing a file in the file system.</td>
<tr><td class="param">separators</td><td>String containing the directory path separators. Defaults to &quot;/&quot;. Windows uses &quot;/\/&quot;.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a>, <a href="#group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24" class="ref">mprAddFileSystem</a>, <a href="#group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee" class="ref">mprCreateFileSystem</a>, <a href="#group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e" class="ref">mprCreateRomFileSystem</a>, <a href="#group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2" class="ref">mprLookupFileSystem</a>, <a href="#group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812" class="ref">mprSetPathNewline</a>, <a href="#group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c" class="ref">mprSetRomFileSystem</a></dd></dl>
</div>
</div>
<a name="group___mpr_file_system_1ga8ad660a935382da195d08a5d5d63067c"></a>
<div class="api">
<div class="prototype">
int
mprSetRomFileSystem
(<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a> *inodeList)
</div>
<div class="apiDetail">
<p>Set the ROM file system data.</p>
<dl><dt><b>Description</b>:</dt><dd>This defines the list of files present in the ROM file system. Use makerom to generate the inodeList data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">inodeList</td><td>Reference to the ROM file system list of files (inodes). This is generated by the makerom tool.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_rom_inode" class="ref">MprRomInode</a>, <a href="#group___mpr_file_system_1gaace8a812b003454accd5f45079b8dd24" class="ref">mprAddFileSystem</a>, <a href="#group___mpr_file_system_1gadde06254bb6b9cdaa7669d797ccd59ee" class="ref">mprCreateFileSystem</a>, <a href="#group___mpr_file_system_1ga7c499dabec9038118eb7f09ddf5ddd7e" class="ref">mprCreateRomFileSystem</a>, <a href="#group___mpr_file_system_1gae105ccdc8d64f1eab2e31afce29c22c2" class="ref">mprLookupFileSystem</a>, <a href="#group___mpr_file_system_1ga10d97267fcc49bb5126547b3a520d812" class="ref">mprSetPathNewline</a>, <a href="#group___mpr_file_system_1ga604f5f0da674b354c16dc30be6f058d2" class="ref">mprSetPathSeparators</a></dd></dl>
</div>
</div>
<h1>MprFloat</h1>
<a name="group___mpr_float"></a>
<div class="api">
<div class="prototype">MprFloat</div>
<div class="apiDetail">
<p>Floating Point Services.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_float_1ga00cde73edc55911e4ba714f445544502" class="ref">mprIsInfinite</a>, <a href="#group___mpr_float_1ga05a04872e6d51bca40b2223e466984b7" class="ref">mprIsNan</a>, <a href="#group___mpr_float_1gafb9eede8122d445daefbadd3122bba42" class="ref">mprIsZero</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___mpr_float_1ga00cde73edc55911e4ba714f445544502"></a>
<div class="api">
<div class="prototype">
int
mprIsInfinite
(double value)
</div>
<div class="apiDetail">
<p>Test if a double value is infinte.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">value</td><td>Value to test.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the value is +Infinity or -Infinity.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_float_1ga05a04872e6d51bca40b2223e466984b7" class="ref">mprIsNan</a>, <a href="#group___mpr_float_1gafb9eede8122d445daefbadd3122bba42" class="ref">mprIsZero</a></dd></dl>
</div>
</div>
<a name="group___mpr_float_1ga05a04872e6d51bca40b2223e466984b7"></a>
<div class="api">
<div class="prototype">
int
mprIsNan
(double value)
</div>
<div class="apiDetail">
<p>Test if a double value is not-a-number.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">value</td><td>Value to test.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the value is NaN.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_float_1ga00cde73edc55911e4ba714f445544502" class="ref">mprIsInfinite</a>, <a href="#group___mpr_float_1gafb9eede8122d445daefbadd3122bba42" class="ref">mprIsZero</a></dd></dl>
</div>
</div>
<a name="group___mpr_float_1gafb9eede8122d445daefbadd3122bba42"></a>
<div class="api">
<div class="prototype">
int
mprIsZero
(double value)
</div>
<div class="apiDetail">
<p>Test if a double value is zero.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">value</td><td>Value to test.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the value is zero.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_float_1ga00cde73edc55911e4ba714f445544502" class="ref">mprIsInfinite</a>, <a href="#group___mpr_float_1ga05a04872e6d51bca40b2223e466984b7" class="ref">mprIsNan</a></dd></dl>
</div>
</div>
<h1>MprHash</h1>
<a name="struct_mpr_hash"></a>
<div class="api">
<div class="prototype">MprHash</div>
<div class="apiDetail">
<p>Hash table entry structure.</p>
<dl><dt><b>Description</b>:</dt><dd>The hash structure supports growable hash tables with high performance, collision resistant hashes. Each hash entry has a descriptor entry. This is used to manage the hash table link chains.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#mpr_8h_1ad38871e3f9f06db46d2bfd29b4dfe9a3" class="ref">MprHashProc</a>, <a href="#group___mpr_hash_1ga2567b7d48397b6059f76c8589978d654" class="ref">mprAddKey</a>, <a href="#group___mpr_hash_1gaf80b863b16c88df91aad0193b746e4c7" class="ref">mprAddKeyFmt</a>, <a href="#group___mpr_hash_1gae8a8db569fba8c21a10976dd6f2ba3bc" class="ref">mprBlendHash</a>, <a href="#group___mpr_hash_1ga2242c95004582bf394a07caaeaae467e" class="ref">mprCloneHash</a>, <a href="#group___mpr_hash_1ga323fad2d21e620c4a8998aaf8b7f01ed" class="ref">mprCreateHash</a>, <a href="#group___mpr_hash_1gaa26eea3d5e44d4e96aaf93eb200774bc" class="ref">mprGetFirstKey</a>, <a href="#group___mpr_hash_1ga2c078b228b88412f5d922e45c9002c5c" class="ref">mprGetHashLength</a>, <a href="#group___mpr_hash_1ga7be8b20f3f390f7c3c05d90dbbb294b5" class="ref">mprGetNextKey</a>, <a href="#group___mpr_hash_1ga28eaf688ae47d09abd9552fe003cedbb" class="ref">mprLookupKey</a>, <a href="#group___mpr_hash_1gae40e700117eb9799e95daa50fec3e2e6" class="ref">mprLookupKeyEntry</a>, <a href="#group___mpr_hash_1ga1257962021e54d8c6156e49031b7a8ec" class="ref">mprRemoveKey</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">MprKey **</td><td><td>buckets</td><td>
Hash collision bucket table.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Hash control flags.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1ad38871e3f9f06db46d2bfd29b4dfe9a3">MprHashProc</a></td><td><td>fn</td><td>
Hash function.
</td>
<tr><td class="param">int</td><td><td>length</td><td>
Number of symbols in the table.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
GC marker sync.
</td>
<tr><td class="param">int</td><td><td>size</td><td>
Size of the buckets array.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga30fb281d97288573e936facc23efdc49"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_key" class="ref">MprKey</a> *
mprAddDuplicateKey
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)
</div>
<div class="apiDetail">
<p>Add a duplicate symbol value into the hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>Add a symbol to the hash which may clash with an existing entry. Duplicate symbols can be added to the hash, but only one may be retrieved via <a class="ref" href="#group___mpr_hash_1ga28eaf688ae47d09abd9552fe003cedbb">mprLookupKey</a>. To recover duplicate entries walk the hash using <a class="ref" href="#group___mpr_hash_1ga7be8b20f3f390f7c3c05d90dbbb294b5">mprGetNextKey</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
<tr><td class="param">key</td><td>String key of the symbole entry to delete.</td>
<tr><td class="param">ptr</td><td>Arbitrary pointer to associate with the key in the table.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Integer count of the number of entries.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga2567b7d48397b6059f76c8589978d654"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_key" class="ref">MprKey</a> *
mprAddKey
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)
</div>
<div class="apiDetail">
<p>Add a symbol value into the hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>Associate an arbitrary value with a string symbol key and insert into the symbol table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
<tr><td class="param">key</td><td>String key of the symbole entry to delete.</td>
<tr><td class="param">ptr</td><td>Arbitrary pointer to associate with the key in the table.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Integer count of the number of entries.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1gaf80b863b16c88df91aad0193b746e4c7"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_key" class="ref">MprKey</a> *
mprAddKeyFmt
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Add a key with a formatting value into the hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>Associate a formatted value with a key and insert into the symbol table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
<tr><td class="param">key</td><td>String key of the symbole entry to delete.</td>
<tr><td class="param">fmt</td><td>Format string. See <a class="ref" href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1">mprPrintf</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Integer count of the number of entries.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1gae8a8db569fba8c21a10976dd6f2ba3bc"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_hash" class="ref">MprHash</a> *
mprBlendHash
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *target, <a href="#struct_mpr_hash" class="ref">MprHash</a> *other)
</div>
<div class="apiDetail">
<p>Blend two hash tables.</p>
<dl><dt><b>Description</b>:</dt><dd>Blend a hash table into a target hash.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">target</td><td>Target hash to receive the properties from the other hash.</td>
<tr><td class="param">other</td><td>Hash to provide properties to blend.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns target.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga2242c95004582bf394a07caaeaae467e"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_hash" class="ref">MprHash</a> *
mprCloneHash
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table)
</div>
<div class="apiDetail">
<p>Copy a hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a new hash table and copy all the entries from an existing table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A new hash table initialized with the contents of the original hash table.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga323fad2d21e620c4a8998aaf8b7f01ed"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_hash" class="ref">MprHash</a> *
mprCreateHash
(int hashSize, int flags)
</div>
<div class="apiDetail">
<p>Create a hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>Creates a hash table that can store arbitrary objects associated with string key values.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">hashSize</td><td>Size of the hash table for the symbol table. Should be a prime number. Set to 0 or -1 to get a default (small) hash table.</td>
<tr><td class="param">flags</td><td>Table control flags. Use MPR_HASH_CASELESS for case insensitive comparisions, MPR_HASH_UNICODE if the hash keys are unicode strings, MPR_HASH_STATIC_KEYS if the keys are permanent and should not be managed for Garbage collection, and MPR_HASH_STATIC_VALUES if the values are permanent. MPR_HASH_OWN to create an optimized list for private use that is not thread-safe.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the allocated symbol table.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga6925d347168958f1e488ca4054a6d7d9"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_hash" class="ref">MprHash</a> *
mprCreateHashFromWords
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Create a hash of words.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a hash table of words from the given string. The hash key entry is the same as the key.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String containing white space or comma separated words.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a hash of words.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1gaa26eea3d5e44d4e96aaf93eb200774bc"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_key" class="ref">MprKey</a> *
mprGetFirstKey
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table)
</div>
<div class="apiDetail">
<p>Return the first symbol in a symbol entry.</p>
<dl><dt><b>Description</b>:</dt><dd>Prepares for walking the contents of a symbol table by returning the first entry in the symbol table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Pointer to the first entry in the symbol table.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga2c078b228b88412f5d922e45c9002c5c"></a>
<div class="api">
<div class="prototype">
int
mprGetHashLength
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table)
</div>
<div class="apiDetail">
<p>Return the count of symbols in a symbol entry.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the number of symbols currently existing in a symbol table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Integer count of the number of entries.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga7be8b20f3f390f7c3c05d90dbbb294b5"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_key" class="ref">MprKey</a> *
mprGetNextKey
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="#struct_mpr_key" class="ref">MprKey</a> *last)
</div>
<div class="apiDetail">
<p>Return the next symbol in a symbol entry.</p>
<dl><dt><b>Description</b>:</dt><dd>Continues walking the contents of a symbol table by returning the next entry in the symbol table. A previous call to mprGetFirstSymbol or mprGetNextSymbol is required to supply the value of the last argument.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
<tr><td class="param">last</td><td>Symbol table entry returned via mprGetFirstSymbol or mprGetNextSymbol.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Pointer to the first entry in the symbol table.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga28eaf688ae47d09abd9552fe003cedbb"></a>
<div class="api">
<div class="prototype">
void *
mprLookupKey
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key)
</div>
<div class="apiDetail">
<p>Lookup a symbol in the hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>Lookup a symbol key and return the value associated with that key.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
<tr><td class="param">key</td><td>String key of the symbole entry to delete.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Value associated with the key when the entry was inserted via mprInsertSymbol.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1gae40e700117eb9799e95daa50fec3e2e6"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_key" class="ref">MprKey</a> *
mprLookupKeyEntry
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key)
</div>
<div class="apiDetail">
<p>Lookup a symbol in the hash table and return the hash entry.</p>
<dl><dt><b>Description</b>:</dt><dd>Lookup a symbol key and return the hash table descriptor associated with that key.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
<tr><td class="param">key</td><td>String key of the symbole entry to delete.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>MprKey for the entry.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<a name="group___mpr_hash_1ga1257962021e54d8c6156e49031b7a8ec"></a>
<div class="api">
<div class="prototype">
int
mprRemoveKey
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *key)
</div>
<div class="apiDetail">
<p>Remove a symbol entry from the hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>Removes a symbol entry from the symbol table. The entry is looked up via the supplied key.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Symbol table returned via mprCreateSymbolTable.</td>
<tr><td class="param">key</td><td>String key of the symbole entry to delete.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_hash" class="ref">MprHash</a></dd></dl>
</div>
</div>
<h1>MprJson</h1>
<a name="group___mpr_json"></a>
<div class="api">
<div class="prototype">MprJson</div>
<div class="apiDetail">
<p>JSON parser.</p>
<dl><dt>See Also:</dt><dd>
<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a>, <a href="#group___mpr_json_1ga3b4504fc235b9089e35ad3793b78b83e" class="ref">mprDeserialize</a>, <a href="#group___mpr_json_1gaf3a154d27e542e86b53c68812911f41c" class="ref">mprJsonParseError</a>, <a href="#group___mpr_json_1ga49d7cf92024233b5bbabccbee666967f" class="ref">mprSerialize</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___mpr_json_1ga3b4504fc235b9089e35ad3793b78b83e"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a> *
mprDeserialize
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Deserialize a JSON string into an object tree.</p>
<dl><dt><b>Description</b>:</dt><dd>Serializes a top level JSON object created via mprDeserialize into a characters string in JSON format.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>JSON string to deserialize.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a tree of objects. Each object represents a level in the JSON input stream. Each object is a hash table (<a class="ref" href="#struct_mpr_hash">MprHash</a>). The hash table key entry will store the property type in the MprKey.type field. This will be set to MPR_JSON_STRING, MPR_JSON_OBJ or MPR_JSON_ARRAY.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a>, <a href="#group___mpr_json_1gaf3a154d27e542e86b53c68812911f41c" class="ref">mprJsonParseError</a>, <a href="#group___mpr_json_1ga49d7cf92024233b5bbabccbee666967f" class="ref">mprSerialize</a></dd></dl>
</div>
</div>
<a name="group___mpr_json_1gad922d1e5cdc4d4f1c33e5e14b069b98e"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a> *
mprDeserializeCustom
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="#struct_mpr_json_callback" class="ref">MprJsonCallback</a> callback, void *data)
</div>
<div class="apiDetail">
<p>Custom deserialization from a JSON string into an object tree.</p>
<dl><dt><b>Description</b>:</dt><dd>Serializes a top level JSON object created via mprDeserialize into a characters string in JSON format. This extended deserialization API takes callback functions to control how the object tree is constructed.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>JSON string to deserialize.</td>
<tr><td class="param">callback</td><td>Callback functions. This is an instance of the <a class="ref" href="#struct_mpr_json_callback">MprJsonCallback</a> structure.</td>
<tr><td class="param">data</td><td>Opaque object to pass to the given callbacks.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a serialized JSON character string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a>, <a href="#group___mpr_json_1ga3b4504fc235b9089e35ad3793b78b83e" class="ref">mprDeserialize</a>, <a href="#group___mpr_json_1gaf3a154d27e542e86b53c68812911f41c" class="ref">mprJsonParseError</a>, <a href="#group___mpr_json_1ga49d7cf92024233b5bbabccbee666967f" class="ref">mprSerialize</a></dd></dl>
</div>
</div>
<a name="group___mpr_json_1gaf3a154d27e542e86b53c68812911f41c"></a>
<div class="api">
<div class="prototype">
void
mprJsonParseError
(<a href="#group___mpr_json" class="ref">MprJson</a> *jp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Signal a parse error in the JSON input stream.</p>
<dl><dt><b>Description</b>:</dt><dd>JSON callback functions will invoke mprJsonParseError when JSON parse or data semantic errors are encountered.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">jp</td><td>JSON control structure.</td>
<tr><td class="param">fmt</td><td>Printf style format string.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a>, <a href="#group___mpr_json_1ga3b4504fc235b9089e35ad3793b78b83e" class="ref">mprDeserialize</a>, <a href="#group___mpr_json_1ga49d7cf92024233b5bbabccbee666967f" class="ref">mprSerialize</a></dd></dl>
</div>
</div>
<a name="group___mpr_json_1ga49d7cf92024233b5bbabccbee666967f"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprSerialize
(<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a> *obj, int flags)
</div>
<div class="apiDetail">
<p>Serialize a JSON object tree into a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Serializes a top level JSON object created via mprDeserialize into a characters string in JSON format.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">obj</td><td>Object returned via <a class="ref" href="#group___mpr_json_1ga3b4504fc235b9089e35ad3793b78b83e">mprDeserialize</a></td>
<tr><td class="param">flags</td><td>Serialization flags. Supported flags include MPR_JSON_PRETTY.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a serialized JSON character string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574" class="ref">MprObj</a>, <a href="#group___mpr_json_1ga3b4504fc235b9089e35ad3793b78b83e" class="ref">mprDeserialize</a>, <a href="#group___mpr_json_1gaf3a154d27e542e86b53c68812911f41c" class="ref">mprJsonParseError</a></dd></dl>
</div>
</div>
<h1>MprList</h1>
<a name="group___mpr_list"></a>
<div class="api">
<div class="prototype">MprList</div>
<div class="apiDetail">
<p>List data structure.</p>
<dl><dt><b>Description</b>:</dt><dd>The MprList is a dynamic, growable list suitable for storing pointers to arbitrary objects.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>flags</td><td>
Control flags.
</td>
<tr><td class="param">void **</td><td><td>items</td><td>
List item data.
</td>
<tr><td class="param">int</td><td><td>length</td><td>
Current length of the list contents.
</td>
<tr><td class="param">int</td><td><td>maxSize</td><td>
Maximum capacity.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multithread lock.
</td>
<tr><td class="param">int</td><td><td>size</td><td>
Current list capacity.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gabf10109abc063c47702769c0e89442cf"></a>
<div class="api">
<div class="prototype">
int
mprAddItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)
</div>
<div class="apiDetail">
<p>Add an item to a list.</p>
<dl><dt><b>Description</b>:</dt><dd>Add the specified item to the list. The list must have been previously created via mprCreateList. The list will grow as required to store the item.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from <a class="ref" href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65">mprCreateList</a></td>
<tr><td class="param">item</td><td>Pointer to item to store.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a positive list index for the inserted item. If the item cannot be inserted due to a memory allocation failure, -1 is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3"></a>
<div class="api">
<div class="prototype">
int
mprAddNullItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list)
</div>
<div class="apiDetail">
<p>Add a null item to the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Add a null item to the list. This item does not count in the length returned by <a class="ref" href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54">mprGetListLength</a> and will not be visible when iterating using <a class="ref" href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4">mprGetNextItem</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_list" class="ref">MprList</a> *
mprAppendList
(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="#group___mpr_list" class="ref">MprList</a> *add)
</div>
<div class="apiDetail">
<p>Append a list.</p>
<dl><dt><b>Description</b>:</dt><dd>Append the contents of one list to another. The list will grow as required to store the item.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from <a class="ref" href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65">mprCreateList</a></td>
<tr><td class="param">add</td><td>List whose contents are added.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the original list if successful. Returns NULL on memory allocation errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d"></a>
<div class="api">
<div class="prototype">
void
mprClearList
(<a href="#group___mpr_list" class="ref">MprList</a> *list)
</div>
<div class="apiDetail">
<p>Clears the list of all items.</p>
<dl><dt><b>Description</b>:</dt><dd>Resets the list length to zero and clears all items.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_list" class="ref">MprList</a> *
mprCloneList
(<a href="#group___mpr_list" class="ref">MprList</a> *src)
</div>
<div class="apiDetail">
<p>Clone a list and all elements.</p>
<dl><dt><b>Description</b>:</dt><dd>Copy the contents of a list into a new list.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">src</td><td>Source list to copy.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a new list reference.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga9d17735f686e0bc754343253795d79ac"></a>
<div class="api">
<div class="prototype">
int
mprCopyListContents
(<a href="#group___mpr_list" class="ref">MprList</a> *dest, <a href="#group___mpr_list" class="ref">MprList</a> *src)
</div>
<div class="apiDetail">
<p>Copy list contents.</p>
<dl><dt><b>Description</b>:</dt><dd>Copy the contents of a list into an existing list. The destination list is cleared first and has its dimensions set to that of the source clist.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dest</td><td>Destination list for the copy.</td>
<tr><td class="param">src</td><td>Source list.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_key_value" class="ref">MprKeyValue</a> *
mprCreateKeyPair
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Create a key / value pair.</p>
<dl><dt><b>Description</b>:</dt><dd>Allocate and initialize a key value pair for use by the MprList or <a class="ref" href="#struct_mpr_hash">MprHash</a> modules.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">key</td><td>Key string.</td>
<tr><td class="param">value</td><td>Key value string.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An initialized <a class="ref" href="#struct_mpr_key_value">MprKeyValue</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_list" class="ref">MprList</a> *
mprCreateList
(int size, int flags)
</div>
<div class="apiDetail">
<p>Create a list.</p>
<dl><dt><b>Description</b>:</dt><dd>Creates an empty list. MprList&apos;s can store generic pointers. They automatically grow as required when items are added to the list.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">size</td><td>Initial capacity of the list. Set to &lt; 0 to get a growable list with a default initial size. Set to 0 to to create the list but without any initial list storage. Then call mprSetListLimits to define the initial and maximum list size.</td>
<tr><td class="param">flags</td><td>Control flags. Possible values are: MPR_LIST_STATIC_VALUES to indicate list items are static and should not be marked for GC. MPR_LIST_STABLE to create an optimized list for private use that is not thread-safe.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the list.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078"></a>
<div class="api">
<div class="prototype">
void *
mprGetFirstItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list)
</div>
<div class="apiDetail">
<p>Get the first item in the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the value of the first item in the list. After calling this routine, the remaining list items can be walked using mprGetNextItem.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2"></a>
<div class="api">
<div class="prototype">
void *
mprGetItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int index)
</div>
<div class="apiDetail">
<p>Get an list item.</p>
<dl><dt><b>Description</b>:</dt><dd>Get an list item specified by its index.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">index</td><td>Item index into the list. Indexes have a range from zero to the lenghth of the list - 1.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga629c61d9bfbea110851227fd61569093"></a>
<div class="api">
<div class="prototype">
void *
mprGetLastItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list)
</div>
<div class="apiDetail">
<p>Get the last item in the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the value of the last item in the list. After calling this routine, the remaining list items can be walked using mprGetPrevItem.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gac47331b3442493d84405d32ffcb98aba"></a>
<div class="api">
<div class="prototype">
int
mprGetListCapacity
(<a href="#group___mpr_list" class="ref">MprList</a> *list)
</div>
<div class="apiDetail">
<p>Get the current capacity of the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the capacity of the list. This will always be equal to or greater than the list length.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54"></a>
<div class="api">
<div class="prototype">
int
mprGetListLength
(<a href="#group___mpr_list" class="ref">MprList</a> *list)
</div>
<div class="apiDetail">
<p>Get the number of items in the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the number of items in the list. This will always be less than or equal to the list capacity.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4"></a>
<div class="api">
<div class="prototype">
void *
mprGetNextItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int *lastIndex)
</div>
<div class="apiDetail">
<p>Get the next item in the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the value of the next item in the list. Before calling this routine, mprGetFirstItem must be called to initialize the traversal of the list.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">lastIndex</td><td>Pointer to an integer that will hold the last index retrieved.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga31b345e5025febb1faca8311bddd5e1f"></a>
<div class="api">
<div class="prototype">
void *
mprGetNextStableItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int *lastIndex)
</div>
<div class="apiDetail">
<p>Get the next item in a stable list.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the value of the next item in the list. Before calling this routine, mprGetFirstItem must be called to initialize the traversal of the list.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">lastIndex</td><td>Pointer to an integer that will hold the last index retrieved.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga701e2771ac787973c94e523898d596a6"></a>
<div class="api">
<div class="prototype">
void *
mprGetPrevItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int *lastIndex)
</div>
<div class="apiDetail">
<p>Get the previous item in the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the value of the previous item in the list. Before calling this routine, mprGetFirstItem and/or mprGetNextItem must be called to initialize the traversal of the list.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">lastIndex</td><td>Pointer to an integer that will hold the last index retrieved.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399"></a>
<div class="api">
<div class="prototype">
void
mprInitList
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int flags)
</div>
<div class="apiDetail">
<p>Initialize a list structure.</p>
<dl><dt><b>Description</b>:</dt><dd>If a list is statically declared inside another structure, mprInitList can be used to initialize it before use.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>Reference to the MprList struct.</td>
<tr><td class="param">flags</td><td>Control flags. Possible values are: MPR_LIST_STATIC_VALUES to indicate list items are static and should not be marked for GC. MPR_LIST_STABLE to create an optimized list for private use that is not thread-safe.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98"></a>
<div class="api">
<div class="prototype">
int
mprInsertItemAtPos
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int index, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)
</div>
<div class="apiDetail">
<p>Insert an item into a list at a specific position.</p>
<dl><dt><b>Description</b>:</dt><dd>Insert the item into the list before the specified position. The list will grow as required to store the item.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from <a class="ref" href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65">mprCreateList</a></td>
<tr><td class="param">index</td><td>Location at which to store the item. The previous item at this index is moved up to make room.</td>
<tr><td class="param">item</td><td>Pointer to item to store.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The position index (positive integer) if successful. If the item cannot be inserted due to a memory allocation failure, -1 is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb"></a>
<div class="api">
<div class="prototype">
int
mprLookupItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)
</div>
<div class="apiDetail">
<p>Find an item and return its index.</p>
<dl><dt><b>Description</b>:</dt><dd>Search for an item in the list and return its index.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">item</td><td>Pointer to value stored in the list.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Positive list index if found, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad"></a>
<div class="api">
<div class="prototype">
int
mprLookupStringItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Find a string item and return its index.</p>
<dl><dt><b>Description</b>:</dt><dd>Search for the first matching string in the list and return its index.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">str</td><td>Pointer to string to look for.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Positive list index if found, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2"></a>
<div class="api">
<div class="prototype">
void *
mprPopItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list)
</div>
<div class="apiDetail">
<p>Pop an item.</p>
<dl><dt><b>Description</b>:</dt><dd>Treat the list as a stack and pop the last pushed item.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The last pushed item. If the list is empty, returns NULL.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467"></a>
<div class="api">
<div class="prototype">
int
mprPushItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)
</div>
<div class="apiDetail">
<p>Push an item onto the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Treat the list as a stack and push the last pushed item.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">item</td><td>Item to push onto the list.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a positive integer list index for the inserted item. If the item cannot be inserted due to a memory allocation failure, -1 is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798"></a>
<div class="api">
<div class="prototype">
int
mprRemoveItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)
</div>
<div class="apiDetail">
<p>Remove an item from the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Search for a specified item and then remove it from the list.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">item</td><td>Item pointer to remove.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The positive index of the removed item, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c"></a>
<div class="api">
<div class="prototype">
int
mprRemoveItemAtPos
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int index)
</div>
<div class="apiDetail">
<p>Remove an item from the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Removes the element specified by index, from the list. The list index is provided by mprInsertItem.</dd></dl>
<dl><dt>Returns:</dt><dd>The positive index of the removed item, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga85633d8034896cf4f056caa1857bf4a8"></a>
<div class="api">
<div class="prototype">
int
mprRemoveLastItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list)
</div>
<div class="apiDetail">
<p>Remove the last item from the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Remove the item at the highest index position.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The positive index of the removed item, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e"></a>
<div class="api">
<div class="prototype">
int
mprRemoveRangeOfItems
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int start, int end)
</div>
<div class="apiDetail">
<p>Remove a range of items from the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Remove a range of items from the list. The range is specified from the start index up to and including the end index.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">start</td><td>Starting item index to remove (inclusive).</td>
<tr><td class="param">end</td><td>Ending item index to remove (inclusive).</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814"></a>
<div class="api">
<div class="prototype">
int
mprRemoveStringItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Remove a string item from the list.</p>
<dl><dt><b>Description</b>:</dt><dd>Search for the first matching string and then remove it from the list.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">str</td><td>String value to remove.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The positive index of the removed item, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7"></a>
<div class="api">
<div class="prototype">
void *
mprSetItem
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int index, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *item)
</div>
<div class="apiDetail">
<p>Set a list item.</p>
<dl><dt><b>Description</b>:</dt><dd>Update the list item stored at the specified index.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">index</td><td>Location to update.</td>
<tr><td class="param">item</td><td>Pointer to item to store.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The old item previously at that location index.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6"></a>
<div class="api">
<div class="prototype">
int
mprSetListLimits
(<a href="#group___mpr_list" class="ref">MprList</a> *list, int initialSize, int maxSize)
</div>
<div class="apiDetail">
<p>Define the list size limits.</p>
<dl><dt><b>Description</b>:</dt><dd>Define the list initial size and maximum size it can grow to.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">initialSize</td><td>Initial size for the list. This call will allocate space for at least this number of items.</td>
<tr><td class="param">maxSize</td><td>Set the maximum limit the list can grow to become.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga555a5a3f40af20aeb5e4ba99212d4b4e"></a>
<div class="api">
<div class="prototype">
void
mprSort
(void *base, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> num, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> width, <a href="#group___mpr_list_1ga128df90ccf99b25bd404afc01ace1415" class="ref">MprSortProc</a> compare, void *ctx)
</div>
<div class="apiDetail">
<p>Quicksort.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a quicksort with a context argument.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">base</td><td>Base of array to sort.</td>
<tr><td class="param">num</td><td>Number of array elements.</td>
<tr><td class="param">width</td><td>Width of array elements.</td>
<tr><td class="param">compare</td><td>Comparison function.</td>
<tr><td class="param">ctx</td><td>Context argument to provide to comparison function.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_list" class="ref">MprList</a> *
mprSortList
(<a href="#group___mpr_list" class="ref">MprList</a> *list, <a href="#group___mpr_list_1ga128df90ccf99b25bd404afc01ace1415" class="ref">MprSortProc</a> compare, void *ctx)
</div>
<div class="apiDetail">
<p>Sort a list.</p>
<dl><dt><b>Description</b>:</dt><dd>Sort a list using the sort ordering dictated by the supplied compare function.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">list</td><td>List pointer returned from mprCreateList.</td>
<tr><td class="param">compare</td><td>Comparison function. If null, then a default string comparison is used.</td>
<tr><td class="param">ctx</td><td>Context to provide to comparison function.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The sorted list.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a></dd></dl>
</div>
</div>
<h1>MprLog</h1>
<a name="group___mpr_log"></a>
<div class="api">
<div class="prototype">MprLog</div>
<div class="apiDetail">
<p>Logging Services.</p>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga912d39c3467b133438b984c79c02aee3"></a>
<div class="api">
<div class="prototype">
void
mprAssert
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *loc, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *msg)
</div>
<div class="apiDetail">
<p>Output an assure assertion failed message.</p>
<dl><dt><b>Description</b>:</dt><dd>This will emit an assure assertion failed message to the standard error output. It may bypass the logging system.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">loc</td><td>Source code location string. Use MPR_LOC to define a file name and line number string suitable for this parameter.</td>
<tr><td class="param">msg</td><td>Simple string message to output.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga5f95e2768c6f5e77ebec25bc471d55cb"></a>
<div class="api">
<div class="prototype">
int
mprBackupLog
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int count)
</div>
<div class="apiDetail">
<p>Backup a log.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Base log filename.</td>
<tr><td class="param">count</td><td>Count of archived logs to keep.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga45fccdc0d6da1387ae53c9b2fd385c10"></a>
<div class="api">
<div class="prototype">
void
mprCreateLogService
()
</div>
<div class="apiDetail">
<p>Initialize the log service.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209"></a>
<div class="api">
<div class="prototype">
void
mprError
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Log an error message.</p>
<dl><dt><b>Description</b>:</dt><dd>Send an error message to the MPR debug logging subsystem. The message will be to the log handler defined by <a class="ref" href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c">mprSetLogHandler</a>. It is up to the log handler to respond appropriately and log the message.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string. Variable number of arguments to.</td>
<tr><td class="param">...</td><td>Variable number of arguments for printf data.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c"></a>
<div class="api">
<div class="prototype">
struct MprFile *
MprFile* mprGetLogFile
()
</div>
<div class="apiDetail">
<p>Get the log file object.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns the MprFile object used for logging.</dd></dl>
<dl><dt>Returns:</dt><dd>An MprFile object for logging.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>
mprGetLogHandler
()
</div>
<div class="apiDetail">
<p>Get the current MPR debug log handler.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the log handler defined via <a class="ref" href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c">mprSetLogHandler</a></dd></dl>
<dl><dt>Returns:</dt><dd>A function of the signature <a class="ref" href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951">MprLogHandler</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1"></a>
<div class="api">
<div class="prototype">
void
mprInfo
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Log an informational message.</p>
<dl><dt><b>Description</b>:</dt><dd>Send an informational message to the MPR debug logging subsystem. The message will be to the log handler defined by <a class="ref" href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c">mprSetLogHandler</a>. It is up to the log handler to respond appropriately and log the message.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string. Variable number of arguments to.</td>
<tr><td class="param">...</td><td>Variable number of arguments for printf data.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf"></a>
<div class="api">
<div class="prototype">
void
mprLog
(int level, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Write a message to the log file.</p>
<dl><dt><b>Description</b>:</dt><dd>Send a message to the MPR logging subsystem. Logging support is enabled via the BIT_MPR_LOGGING define which is typically set via the Bit setting &quot;logging: true&quot;. Logging typically is enabled in both debug and release builds. The mprLog function is a macro which translates into the mprLogProc function.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">level</td><td>Logging level for this message. The level is 0-9 with zero being the most verbose.</td>
<tr><td class="param">fmt</td><td>Printf style format string. Variable number of arguments to.</td>
<tr><td class="param">...</td><td>Variable number of arguments for printf data.</td>
</table></dd></dl>
<dl><dt>Remarks:</dt><dd>MprLog is highly useful as a debugging aid when integrating or when developing new modules.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1gaeaa023b9736347b621f77f765f6b91ba"></a>
<div class="api">
<div class="prototype">
void
mprLogHeader
()
</div>
<div class="apiDetail">
<p>Emit a descriptive log header.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7"></a>
<div class="api">
<div class="prototype">
void
mprRawLog
(int level, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Write a raw log message to the diagnostic log file.</p>
<dl><dt><b>Description</b>:</dt><dd>Send a raw message to the MPR logging subsystem. Raw messages do not have any application prefix attached to the message and do not append a newline to the message.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">level</td><td>Logging level for this message. The level is 0-9 with zero being the most verbose.</td>
<tr><td class="param">fmt</td><td>Printf style format string. Variable number of arguments to.</td>
<tr><td class="param">...</td><td>Variable number of arguments for printf data.</td>
</table></dd></dl>
<dl><dt>Remarks:</dt><dd>MprLog is highly useful as a debugging aid when integrating or when developing new modules.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1gad1c46a00821497d3146925dde1980791"></a>
<div class="api">
<div class="prototype">
void
mprSetLogBackup
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> logSize, int backupCount, int flags)
</div>
<div class="apiDetail">
<p>Set the log rotation parameters.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">logSize</td><td>If the size is zero, then the log file will be rotated on each application boot. Otherwise, the log file will be rotated if on application boot, the log file is larger than this size.</td>
<tr><td class="param">backupCount</td><td>Count of the number of log files to keep.</td>
<tr><td class="param">flags</td><td>Set to MPR_LOG_APPEND to append to existing log files. Set to MPR_LOG_TRUNCATE to truncate log files on application restart.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162"></a>
<div class="api">
<div class="prototype">
void
mprSetLogLevel
(int level)
</div>
<div class="apiDetail">
<p>Set the current logging level.</p>
<dl><dt><b>Description</b>:</dt><dd>This call defines the maximum level of messages that will be logged. Calls to mprLog specify a message level. If the message level is greater than the defined logging level, the message is ignored.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">level</td><td>New logging level. Must be 0-9 inclusive.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The previous logging level.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1gaaa6773428f23b0a3cede171550bb4abc"></a>
<div class="api">
<div class="prototype">
int
mprStartLogging
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *logSpec, int showConfig)
</div>
<div class="apiDetail">
<p>Start logging.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">logSpec</td><td>Set the log file name and level. The format is &quot;pathName[:level]&quot;. The following levels are generally observed: <ul><li>0 - Essential messages, fatal errors and critical warnings </li><li>1 - Hard errors </li><li>2 - Configuration setup and soft warnings </li><li>3 - Useful informational messages </li><li>4 - Debug information </li><li>5-9 - Increasing levels of internal Appweb trace useful for debugging </li></ul></td>
<tr><td class="param">showConfig</td><td>Set to true to log an initial system configuration.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative Mpr error code. See the Appweb log for diagnostics.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga61399f9e62412467e471690627570014"></a>
<div class="api">
<div class="prototype">
void
mprTrace
(int level, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Write a trace message to the diagnostic log file.</p>
<dl><dt><b>Description</b>:</dt><dd>Send a trace message to the MPR logging subsystem. Debug tracing support is enabled via the BIT_MPR_TRACING define which is typically set via the Bit setting &quot;tracing: true&quot;. Tracing is typically is enabled in only debug builds. The mprTrace function is a macro which translates into the mprTraceProc function.</dd></dl>
<dl><dt><b>Description</b>:</dt><dd>Sends a debug trace message to the MPR logging subsystem.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">level</td><td>Logging level for this message. The level is 0-9 with zero being the most verbose.</td>
<tr><td class="param">fmt</td><td>Printf style format string. Variable number of arguments to.</td>
<tr><td class="param">...</td><td>Variable number of arguments for printf data.</td>
</table></dd></dl>
<dl><dt>Remarks:</dt><dd>MprTrace is highly useful as a debugging aid when integrating or when developing new modules.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f"></a>
<div class="api">
<div class="prototype">
int
mprUsingDefaultLogHandler
()
</div>
<div class="apiDetail">
<p>Determine if the app is using the default MPR log handler.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns true if no custom log handler has been installed.</dd></dl>
<dl><dt>Returns:</dt><dd>True if using the default log handler.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929"></a>
<div class="api">
<div class="prototype">
void
mprWarn
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Log a warning message.</p>
<dl><dt><b>Description</b>:</dt><dd>Send a warning message to the MPR debug logging subsystem. The message will be to the log handler defined by <a class="ref" href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c">mprSetLogHandler</a>. It is up to the log handler to respond appropriately and log the message.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string. Variable number of arguments to.</td>
<tr><td class="param">...</td><td>Variable number of arguments for printf data.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a>, <a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a></dd></dl>
</div>
</div>
<h1>MprMem</h1>
<a name="group___mpr_mem"></a>
<div class="api">
<div class="prototype">MprMem</div>
<div class="apiDetail">
<p>Memory Allocation Service.</p>
<dl><dt><b>Description</b>:</dt><dd>The MPR provides an application specific memory allocator to use instead of malloc. This allocator is tailored to the needs of embedded applications and is faster than most general purpose malloc allocators. It is deterministic and allocates and frees in constant time O(1). It exhibits very low fragmentation and accurate coalescing. <br/><br/>
The allocator uses a garbage collector for freeing unused memory. The collector is a generational, cooperative, non-compacting, parallel collector. The allocator is optimized for frequent allocations of small blocks (&lt; 4K) and uses a scheme of free queues for fast allocation. Allocations are aligned on 16 byte boundaries on 64-bit systems and otherwise on 8 byte boundaries. It will return chunks unused memory back to the O/S. <br/><br/>
The allocator handles memory allocation errors globally. The application may configure a memory limit so that memory depletion can be proactively detected and handled before memory allocations actually fail. <br/><br/>
A memory block that is being used must be marked as active to prevent the garbage collector from reclaiming it. To mark a block as active, <a class="ref" href="#group___mpr_mem_1ga145c345997c2bf0d15e5830736fbe657">mprMarkBlock</a> must be called for each garbage collection cycle. When allocating non-temporal memroy blocks, a manager callback can be specified via <a class="ref" href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a">mprAllocObj</a>. This manager routine will be called by the collector so that dependant memory blocks can be marked as active.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">size_t</td><td><td>field1</td><td>
Pointer to adjacent, prior block in memory with last, manager fields.
</td>
<tr><td class="param">size_t</td><td><td>field2</td><td>
Internal block length including header with gen and mark fields.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547"></a>
<div class="api">
<div class="prototype">
void
mprAddRoot
(void *ptr)
</div>
<div class="apiDetail">
<p>Add a memory block as a root for garbage collection.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Any memory pointer.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5"></a>
<div class="api">
<div class="prototype">
void *
mprAlloc
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Allocate a block of memory.</p>
<dl><dt><b>Description</b>:</dt><dd>Allocates a block of memory of the required size. The memory is not zeroed.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">size</td><td>Size of the memory block to allocate.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the allocated block. If memory is not available the memory exhaustion handler specified via mprCreate will be called to allow global recovery.</dd></dl>
<dl><dt>Remarks:</dt><dd>Do not mix calls to malloc and mprAlloc.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9"></a>
<div class="api">
<div class="prototype">
void *
mprAllocMem
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, int flags)
</div>
<div class="apiDetail">
<p>Allocate a block of memory.</p>
<dl><dt><b>Description</b>:</dt><dd>This is the lowest level of memory allocation routine. Memory is freed via the garbage collector. To protect an active memory block memory block from being reclaimed, it must have a reference to it. Memory blocks can specify a manager routine via <a class="ref" href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a">mprAllocObj</a>. The manager is is invoked by the garbage collector to &quot;mark&quot; dependant active blocks. Marked blocks will not be reclaimed by the garbage collector.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">size</td><td>Size of the memory block to allocate.</td>
<tr><td class="param">flags</td><td>Allocation flags. Supported flags include: MPR_ALLOC_MANAGER to reserve room for a manager callback and MPR_ALLOC_ZERO to zero allocated memory.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the allocated block. If memory is not available the memory exhaustion handler specified via mprCreate will be called to allow global recovery.</dd></dl>
<dl><dt>Remarks:</dt><dd>Do not mix calls to malloc and mprAlloc.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a"></a>
<div class="api">
<div class="prototype">
void *
mprAllocObj
(<a href="#mpr_8h_1aa49213f0ee6903f508c444506c07dae1" class="ref">Type</a> type, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a> manager)
</div>
<div class="apiDetail">
<p>Allocate an object of a given type.</p>
<dl><dt><b>Description</b>:</dt><dd>Allocates a zeroed block of memory large enough to hold an instance of the specified type with a manager callback. This call associates a manager function with an object that will be invoked when the object is freed or the garbage collector needs the object to mark internal properties as being used. This call is implemented as a macro.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">type</td><td>Type of the object to allocate.</td>
<tr><td class="param">manager</td><td>Manager function to invoke when the allocation is managed.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the allocated block. If memory is not available the memory exhaustion handler specified via mprCreate will be called to allow global recovery.</dd></dl>
<dl><dt>Remarks:</dt><dd>Do not mix calls to malloc and mprAlloc.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33"></a>
<div class="api">
<div class="prototype">
void *
mprAllocZeroed
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Allocate a zeroed block of memory.</p>
<dl><dt><b>Description</b>:</dt><dd>Allocates a zeroed block of memory.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">size</td><td>Size of the memory block to allocate.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the allocated block. If memory is not available the memory exhaustion handler specified via mprCreate will be called to allow global recovery.</dd></dl>
<dl><dt>Remarks:</dt><dd>Do not mix calls to malloc and mprAlloc.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4"></a>
<div class="api">
<div class="prototype">
struct Mpr *
Mpr* mprCreateMemService
(<a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a> manager, int flags)
</div>
<div class="apiDetail">
<p>Create and initialize the Memory service.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">manager</td><td>Memory manager to manage the Mpr object.</td>
<tr><td class="param">flags</td><td>Memory initialization control flags.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The Mpr control structure.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea"></a>
<div class="api">
<div class="prototype">
void
mprDestroyMemService
()
</div>
<div class="apiDetail">
<p>Destroy the memory service.</p>
Called as the last thing before exiting
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprEnableGC
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Enable or disable the garbage collector.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">on</td><td>Set to one to enable and zero to disable.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns one if the collector was previously enabled. Otherwise returns zero.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprGetBlockSize
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)
</div>
<div class="apiDetail">
<p>Get the allocated size of a memory block.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Any memory allocated by mprAlloc.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The block size in bytes.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprGetMem
()
</div>
<div class="apiDetail">
<p>Return the amount of memory currently used by the application.</p>
On Unix, this returns the total application memory size including code, stack, data and heap. On Windows, VxWorks and other operatings systems, it returns the amount of allocated heap memory
<dl><dt>Returns:</dt><dd>The amount of memory used by the application in bytes.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_mem_stats" class="ref">MprMemStats</a> *
mprGetMemStats
()
</div>
<div class="apiDetail">
<p>Return the current allocation memory statistics block.</p>
<dl><dt>Returns:</dt><dd>A reference to the allocation memory statistics. Do not modify its contents.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga36c229b490da17109e4342139775fbfa"></a>
<div class="api">
<div class="prototype">
int
mprGetPageSize
()
</div>
<div class="apiDetail">
<p>Get the current O/S virtual page size.</p>
<dl><dt>Returns:</dt><dd>The page size in bytes.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprHasMemError
()
</div>
<div class="apiDetail">
<p>Determine if the MPR has encountered memory allocation errors.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns true if the MPR has had a memory allocation error. Allocation errors occur if any memory allocation would cause the application to exceed the configured redline limit, or if any O/S memory allocation request fails.</dd></dl>
<dl><dt>Returns:</dt><dd>TRUE if a memory allocation error has occurred. Otherwise returns FALSE.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea"></a>
<div class="api">
<div class="prototype">
void
mprHold
(void *ptr)
</div>
<div class="apiDetail">
<p>Hold a memory block.</p>
<dl><dt><b>Description</b>:</dt><dd>This call will protect a memory block from freeing by the garbage collector. Call mprRelease to allow the block to be collected.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Any memory block.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300"></a>
<div class="api">
<div class="prototype">
int
mprIsValid
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)
</div>
<div class="apiDetail">
<p>Test is a pointer is a valid memory context.</p>
This is used to test if a block has been dynamically allocated
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Any memory context allocated by mprAlloc or mprCreate.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga145c345997c2bf0d15e5830736fbe657"></a>
<div class="api">
<div class="prototype">
void
mprMarkBlock
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr)
</div>
<div class="apiDetail">
<p>Mark a block as &quot;in-use&quot; for the Garbage Collector.</p>
The MPR memory garbage collector requires that all allocated memory be marked as in-use during a garbage collection sweep. When a memory block is allocated, it may provide a &quot;manage&quot; callback function that will be invoked during garbage collection so the block can be marked as &quot;in-use&quot;
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Reference to the block to mark as currently being used.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51"></a>
<div class="api">
<div class="prototype">
int
mprMemcmp
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *b1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> b1Len, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *b2, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> b2Len)
</div>
<div class="apiDetail">
<p>Compare two byte strings.</p>
<dl><dt><b>Description</b>:</dt><dd>Safely compare two byte strings. This is a safe replacement for memcmp.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">b1</td><td>Pointer to the first byte string.</td>
<tr><td class="param">b1Len</td><td>Length of the first byte string.</td>
<tr><td class="param">b2</td><td>Pointer to the second byte string.</td>
<tr><td class="param">b2Len</td><td>Length of the second byte string.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if the byte strings are identical. Otherwise returns -1 if the first string is less than the second. Returns 1 if the first is greater than the first.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprMemcpy
(void *dest, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> destMax, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *src, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> nbytes)
</div>
<div class="apiDetail">
<p>Safe copy for a block of data.</p>
<dl><dt><b>Description</b>:</dt><dd>Safely copy a block of data into an existing memory block. The call ensures the destination block is not overflowed and returns the size of the block actually copied. This is similar to memcpy, but is a safer alternative.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dest</td><td>Pointer to the destination block.</td>
<tr><td class="param">destMax</td><td>Maximum size of the destination block.</td>
<tr><td class="param">src</td><td>Block to copy.</td>
<tr><td class="param">nbytes</td><td>Size of the source block.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of characters in the allocated block.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd"></a>
<div class="api">
<div class="prototype">
void *
mprMemdup
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Duplicate a block of memory.</p>
<dl><dt><b>Description</b>:</dt><dd>Copy a block of memory into a newly allocated block.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Pointer to the block to duplicate.</td>
<tr><td class="param">size</td><td>Size of the block to copy.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an allocated block.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370"></a>
<div class="api">
<div class="prototype">
void
mprPrintMem
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *msg, int detail)
</div>
<div class="apiDetail">
<p>Print a memory usage report to stdout.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">msg</td><td>Prefix message to the report.</td>
<tr><td class="param">detail</td><td>If true, print free queue detail report.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772"></a>
<div class="api">
<div class="prototype">
void *
mprRealloc
(void *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Reallocate a block.</p>
<dl><dt><b>Description</b>:</dt><dd>Reallocates a block increasing its size. If the specified size is less than the current block size, the call will ignore the request and simply return the existing block. The memory is not zeroed.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Memory to reallocate. If NULL, call malloc.</td>
<tr><td class="param">size</td><td>New size of the required memory block.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the allocated block. If memory is not available the memory exhaustion handler specified via mprCreate will be called to allow global recovery.</dd></dl>
<dl><dt>Remarks:</dt><dd>Do not mix calls to realloc and mprRealloc.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga973f9af2499b277c8013db636f806e18"></a>
<div class="api">
<div class="prototype">
void
mprRelease
(void *ptr)
</div>
<div class="apiDetail">
<p>Release a memory block.</p>
<dl><dt><b>Description</b>:</dt><dd>This call is used to allow a memory block to be freed by the garbage collector after calling mprHold.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Any memory block.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0"></a>
<div class="api">
<div class="prototype">
void
mprRemoveRoot
(void *ptr)
</div>
<div class="apiDetail">
<p>remove a memory block as a root for garbage collection.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Any memory pointer.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020"></a>
<div class="api">
<div class="prototype">
void
mprRequestGC
(int flags)
</div>
<div class="apiDetail">
<p>Collect garbage.</p>
<dl><dt><b>Description</b>:</dt><dd>Initiates garbage collection to free unreachable memory blocks. This call may return before collection is complete if garbage collection has been configured via <a class="ref" href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37">mprCreate()</a> to use dedicated threads for collection. A single garbage collection may not free all memory. Use mprRequestGC(MPR_GC_FORCE) to free all unused memory blocks.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">flags</td><td>Flags to control the collection. Set flags to MPR_GC_FORCE to force one sweep. Set to zero to perform a conditional sweep where the sweep is only performed if there is sufficient garbage to warrant a collection.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a"></a>
<div class="api">
<div class="prototype">
void
mprResetMemError
()
</div>
<div class="apiDetail">
<p>Reset the memory allocation error flag.</p>
<dl><dt><b>Description</b>:</dt><dd>Reset the alloc error flag triggered.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6"></a>
<div class="api">
<div class="prototype">
void *
mprSetManager
(void *ptr, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a> manager)
</div>
<div class="apiDetail">
<p>Update the manager for a block of memory.</p>
<dl><dt><b>Description</b>:</dt><dd>This call updates the manager for a block of memory allocated via mprAllocWithManager.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Memory to free. If NULL, take no action.</td>
<tr><td class="param">manager</td><td>Manager function to invoke when the memory is released.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The original object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23"></a>
<div class="api">
<div class="prototype">
void
mprSetMemError
()
</div>
<div class="apiDetail">
<p>Set an memory allocation error condition on a memory context.</p>
This will set an allocation error condition on the given context and all its parents. This way, you can test the ultimate parent and detect if any memory allocation errors have occurred
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed"></a>
<div class="api">
<div class="prototype">
void
mprSetMemLimits
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> redline, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxMemory)
</div>
<div class="apiDetail">
<p>Configure the application memory limits.</p>
<dl><dt><b>Description</b>:</dt><dd>Configure memory limits to constrain memory usage by the application. The memory allocation subsystem will check these limits before granting memory allocation requrests. The redLine is a soft limit that if exceeded will invoke the memory allocation callback, but will still honor the request. The maxMemory limit is a hard limit. The MPR will prevent allocations which exceed this maximum. The memory callback handler is defined via the <a class="ref" href="#group___mpr_1ga7efcdd2a5f01795791fbb21f4b073d37">mprCreate</a> call.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">redline</td><td>Soft memory limit. If exceeded, the request will be granted, but the memory handler will be invoked.</td>
<tr><td class="param">maxMemory</td><td>Hard memory limit. If exceeded, the request will not be granted, and the memory handler will be invoked.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824"></a>
<div class="api">
<div class="prototype">
void
mprSetMemNotifier
(<a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a> cback)
</div>
<div class="apiDetail">
<p>Define a memory notifier.</p>
<dl><dt><b>Description</b>:</dt><dd>A notifier callback will be invoked for memory allocation errors for the given memory context.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cback</td><td>Notifier callback function.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3"></a>
<div class="api">
<div class="prototype">
void
mprSetMemPolicy
(int policy)
</div>
<div class="apiDetail">
<p>Set the memory allocation policy for when allocations fail.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">policy</td><td>Set to MPR_ALLOC_POLICY_EXIT for the application to immediately exit on memory allocation errors. Set to MPR_ALLOC_POLICY_RESTART to restart the appplication on memory allocation errors.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907"></a>
<div class="api">
<div class="prototype">
void
mprValidateBlock
(void *ptr)
</div>
<div class="apiDetail">
<p>Validate a memory block and issue asserts if the memory block is not valid.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Pointer to allocated memory.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1"></a>
<div class="api">
<div class="prototype">
void
mprVerifyMem
()
</div>
<div class="apiDetail">
<p>Verify all memory.</p>
This checks the integrity of all memory blocks by verifying the block headers and contents of all free memory blocks. Will only do anything meaningful when the product is compiled in debug mode
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa"></a>
<div class="api">
<div class="prototype">
void *
mprVirtAlloc
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, int mode)
</div>
<div class="apiDetail">
<p>Memory virtual memory into the applications address space.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">size</td><td>of virtual memory to map. This size will be rounded up to the nearest page boundary.</td>
<tr><td class="param">mode</td><td>Mask set to MPR_MAP_READ | MPR_MAP_WRITE.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733"></a>
<div class="api">
<div class="prototype">
void
mprVirtFree
(void *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Free (unpin) a mapped section of virtual memory.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Virtual address to free. Should be page aligned.</td>
<tr><td class="param">size</td><td>Size of memory to free in bytes.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga47bb56ef181bc5f922d08080677ae5b9"></a>
<div class="api">
<div class="prototype">
void *
palloc
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Allocate a &quot;permanent&quot; block of memory that is not subject GC.</p>
<dl><dt><b>Description</b>:</dt><dd>This allocates a block of memory using the MPR allocator. It then calls mprHold on the block. to prevent GC from freeing the block.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">size</td><td>Size of the memory block to allocate.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the allocated block. If memory is not available the memory exhaustion handler specified via mprCreate will be called to allow global recovery.</dd></dl>
<dl><dt>Remarks:</dt><dd>Do not mix calls to palloc and malloc.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Prototype.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gaeaa51be2edf47468d51a0c6881d5f818"></a>
<div class="api">
<div class="prototype">
void
pfree
(void *ptr)
</div>
<div class="apiDetail">
<p>Free a &quot;permanent&quot; block of memory allocated via &quot;palloc&quot;.</p>
<dl><dt><b>Description</b>:</dt><dd>This releases a block of memory allocated via &quot;palloc&quot; to be collected by the garbage collector.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Pointer to the block.</td>
</table></dd></dl>
<dl><dt>Remarks:</dt><dd>Do not mix calls to pfree and free.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Prototype.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gacaa3314aaa745c54fd2390d4b5370500"></a>
<div class="api">
<div class="prototype">
void *
prealloc
(void *ptr, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Reallocate a &quot;permanent&quot; block of memory allocated via &quot;palloc&quot;.</p>
<dl><dt><b>Description</b>:</dt><dd>This increases the size of a block of memory allocated via &quot;palloc&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Pointer to the block.</td>
<tr><td class="param">size</td><td>New block size.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the allocated block. If memory is not available the memory exhaustion handler specified via mprCreate will be called to allow global recovery.</dd></dl>
<dl><dt>Remarks:</dt><dd>Do not mix calls to prealloc and malloc.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Prototype.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<h1>MprMime</h1>
<a name="group___mpr_mime"></a>
<div class="api">
<div class="prototype">MprMime</div>
<div class="apiDetail">
<p>Mime Type hash table entry (the URL extension is the key).</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_mime_1ga3eefe2cfee75a6ad3011ec9dde191399" class="ref">mprAddMime</a>, <a href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d" class="ref">mprCreateMimeTypes</a>, <a href="#group___mpr_mime_1gab7c0d14ebd022bcac4156c3f59320dfe" class="ref">mprGetMimeProgram</a>, <a href="#group___mpr_mime_1ga013e01965b445bb9d61337fc9e13fa9a" class="ref">mprLookupMime</a>, <a href="#group___mpr_mime_1ga5f1165a45b9a43aed99b1e25900b0fbd" class="ref">mprSetMimeProgram</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>program</td><td>
Mime type string.
</td>
<tr><td class="param">char *</td><td><td>type</td><td>
Mime type string.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_mime_1ga3eefe2cfee75a6ad3011ec9dde191399"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_mime" class="ref">MprMime</a> *
mprAddMime
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ext, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType)
</div>
<div class="apiDetail">
<p>Add a mime type to the mime type table.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>type hash table returned by <a class="ref" href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d">mprCreateMimeTypes</a></td>
<tr><td class="param">ext</td><td>Filename extension to use as a key for the given mime type.</td>
<tr><td class="param">mimeType</td><td>Mime type string to associate with the ext key.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Mime type entry object. This is owned by the mime type table.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_mime" class="ref">MprMime</a>, <a href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d" class="ref">mprCreateMimeTypes</a>, <a href="#group___mpr_mime_1gab7c0d14ebd022bcac4156c3f59320dfe" class="ref">mprGetMimeProgram</a>, <a href="#group___mpr_mime_1ga013e01965b445bb9d61337fc9e13fa9a" class="ref">mprLookupMime</a>, <a href="#group___mpr_mime_1ga5f1165a45b9a43aed99b1e25900b0fbd" class="ref">mprSetMimeProgram</a></dd></dl>
</div>
</div>
<a name="group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_hash" class="ref">MprHash</a> *
mprCreateMimeTypes
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Create the mime types.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Filename of a mime types definition file.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Hash table of mime types keyed by file extension.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_mime" class="ref">MprMime</a>, <a href="#group___mpr_mime_1ga3eefe2cfee75a6ad3011ec9dde191399" class="ref">mprAddMime</a>, <a href="#group___mpr_mime_1gab7c0d14ebd022bcac4156c3f59320dfe" class="ref">mprGetMimeProgram</a>, <a href="#group___mpr_mime_1ga013e01965b445bb9d61337fc9e13fa9a" class="ref">mprLookupMime</a>, <a href="#group___mpr_mime_1ga5f1165a45b9a43aed99b1e25900b0fbd" class="ref">mprSetMimeProgram</a></dd></dl>
</div>
</div>
<a name="group___mpr_mime_1gab7c0d14ebd022bcac4156c3f59320dfe"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetMimeProgram
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType)
</div>
<div class="apiDetail">
<p>Get the mime type program for a given mimeType.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>type hash table returned by <a class="ref" href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d">mprCreateMimeTypes</a></td>
<tr><td class="param">mimeType</td><td>Mime type to update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The program name associated with this mime type.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_mime" class="ref">MprMime</a>, <a href="#group___mpr_mime_1ga3eefe2cfee75a6ad3011ec9dde191399" class="ref">mprAddMime</a>, <a href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d" class="ref">mprCreateMimeTypes</a>, <a href="#group___mpr_mime_1ga013e01965b445bb9d61337fc9e13fa9a" class="ref">mprLookupMime</a>, <a href="#group___mpr_mime_1ga5f1165a45b9a43aed99b1e25900b0fbd" class="ref">mprSetMimeProgram</a></dd></dl>
</div>
</div>
<a name="group___mpr_mime_1ga013e01965b445bb9d61337fc9e13fa9a"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprLookupMime
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ext)
</div>
<div class="apiDetail">
<p>Get the mime type for an extension.</p>
This call will return the mime type from a limited internal set of mime types for the given path or extension
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>Hash table of mime types to examine.</td>
<tr><td class="param">ext</td><td>Path or extension to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Mime type string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_mime" class="ref">MprMime</a>, <a href="#group___mpr_mime_1ga3eefe2cfee75a6ad3011ec9dde191399" class="ref">mprAddMime</a>, <a href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d" class="ref">mprCreateMimeTypes</a>, <a href="#group___mpr_mime_1gab7c0d14ebd022bcac4156c3f59320dfe" class="ref">mprGetMimeProgram</a>, <a href="#group___mpr_mime_1ga5f1165a45b9a43aed99b1e25900b0fbd" class="ref">mprSetMimeProgram</a></dd></dl>
</div>
</div>
<a name="group___mpr_mime_1ga5f1165a45b9a43aed99b1e25900b0fbd"></a>
<div class="api">
<div class="prototype">
int
mprSetMimeProgram
(<a href="#struct_mpr_hash" class="ref">MprHash</a> *table, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *program)
</div>
<div class="apiDetail">
<p>Set the mime type program.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">table</td><td>type hash table returned by <a class="ref" href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d">mprCreateMimeTypes</a></td>
<tr><td class="param">mimeType</td><td>Mime type to update.</td>
<tr><td class="param">program</td><td>Program name to associate with this mime type.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the update is successful. Otherwise return MPR_ERR_CANT_FIND if the mime type is not present in the mime type table.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_mime" class="ref">MprMime</a>, <a href="#group___mpr_mime_1ga3eefe2cfee75a6ad3011ec9dde191399" class="ref">mprAddMime</a>, <a href="#group___mpr_mime_1ga6a3d1d998854ba4779ad2b6615d9819d" class="ref">mprCreateMimeTypes</a>, <a href="#group___mpr_mime_1gab7c0d14ebd022bcac4156c3f59320dfe" class="ref">mprGetMimeProgram</a>, <a href="#group___mpr_mime_1ga013e01965b445bb9d61337fc9e13fa9a" class="ref">mprLookupMime</a></dd></dl>
</div>
</div>
<h1>MprModule</h1>
<a name="group___mpr_module"></a>
<div class="api">
<div class="prototype">MprModule</div>
<div class="apiDetail">
<p>Loadable Module Service.</p>
<dl><dt><b>Description</b>:</dt><dd>The MPR provides services to load and unload shared libraries.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>entry</td><td>
Module library init entry point.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Module control flags.
</td>
<tr><td class="param">void *</td><td><td>handle</td><td>
O/S shared library load handle.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319">MprTicks</a></td><td><td>lastActivity</td><td>
When the module was last used.
</td>
<tr><td class="param">MprTime</td><td><td>modified</td><td>
When the module file was last modified.
</td>
<tr><td class="param">void *</td><td><td>moduleData</td><td>
Module specific data - must be alloced data.
</td>
<tr><td class="param">char *</td><td><td>name</td><td>
Unique module name.
</td>
<tr><td class="param">char *</td><td><td>path</td><td>
Module library filename.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb">MprModuleProc</a></td><td><td>start</td><td>
Start the module.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb">MprModuleProc</a></td><td><td>stop</td><td>
Stop the module.
Should be unloadable after stopping.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319">MprTicks</a></td><td><td>timeout</td><td>
Inactivity unload timeout.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga126d18e60c799eaee488841f25bef39c"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_module" class="ref">MprModule</a> *
mprCreateModule
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *entry, void *data)
</div>
<div class="apiDetail">
<p>Create a module.</p>
<dl><dt><b>Description</b>:</dt><dd>This call will create a module object for a loadable module. This should be invoked by the module itself in its module entry point to register itself with the MPR.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Name of the module.</td>
<tr><td class="param">path</td><td>Optional filename of a module library to load. When loading, the filename will be searched using the defined module search path (see <a class="ref" href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7">mprSetModuleSearchPath</a>). The filename may or may not include a platform specific shared library extension such as .dll, .so or .dylib. By omitting the library extension, code can portably load shared libraries.</td>
<tr><td class="param">entry</td><td>Name of function to invoke after loading the module.</td>
<tr><td class="param">data</td><td>Arbitrary data pointer. This will be defined in MprModule.data and passed into the module initialization entry point.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A module object for this module.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetModuleSearchPath
()
</div>
<div class="apiDetail">
<p>Get the module search path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the directory search path used by the MPR when loading dynamic modules. This is a colon separated (or semicolon on Windows) set of directories.</dd></dl>
<dl><dt>Returns:</dt><dd>The module search path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312"></a>
<div class="api">
<div class="prototype">
int
mprLoadModule
(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)
</div>
<div class="apiDetail">
<p>Load a module.</p>
<dl><dt><b>Description</b>:</dt><dd>Load a module library. This will load a dynamic shared object (shared library) and call the modules library entry point. If the module is already loaded, this call will do nothing.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mp</td><td>Module object created via <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga585388ae65782b535dcea572e65ed94b"></a>
<div class="api">
<div class="prototype">
int
mprLoadNativeModule
(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)
</div>
<div class="apiDetail">
<p>Load a native module.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mp</td><td>Module object created via <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_module" class="ref">MprModule</a> *
mprLookupModule
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)
</div>
<div class="apiDetail">
<p>Lookup a module.</p>
<dl><dt><b>Description</b>:</dt><dd>Lookup a module by name and return the module object.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Name of the module specified to <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A module object for this module created in the module entry point by calling <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68"></a>
<div class="api">
<div class="prototype">
void *
mprLookupModuleData
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)
</div>
<div class="apiDetail">
<p>Lookup a module and return the module data.</p>
<dl><dt><b>Description</b>:</dt><dd>Lookup a module by name and return the module specific data defined via <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Name of the module specified to <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The module data.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab"></a>
<div class="api">
<div class="prototype">
char *
mprSearchForModule
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *module)
</div>
<div class="apiDetail">
<p>Search for a module on the current module path.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">module</td><td>Name of the module to locate.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A string containing the full path to the module. Returns NULL if the module filename cannot be found.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917"></a>
<div class="api">
<div class="prototype">
void
mprSetModuleFinalizer
(<a href="#group___mpr_module" class="ref">MprModule</a> *module, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a> stop)
</div>
<div class="apiDetail">
<p>Define a module finalizer that will be called before a module is stopped.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">module</td><td>Module object to modify.</td>
<tr><td class="param">stop</td><td>Callback function to invoke before stopping the module.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7"></a>
<div class="api">
<div class="prototype">
void
mprSetModuleSearchPath
(char *searchPath)
</div>
<div class="apiDetail">
<p>Set the module search path.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the directory search path used by the MPR when loading dynamic modules. This path string must should be a colon separated (or semicolon on Windows) set of directories.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">searchPath</td><td>Colon separated set of directories.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The module search path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a"></a>
<div class="api">
<div class="prototype">
void
mprSetModuleTimeout
(<a href="#group___mpr_module" class="ref">MprModule</a> *module, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Set a module timeout.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">module</td><td>Module object to modify.</td>
<tr><td class="param">timeout</td><td>Inactivity timeout in milliseconds before unloading the module.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1gada93a8c2366fe16efc767791d81793bd"></a>
<div class="api">
<div class="prototype">
int
mprStartModule
(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)
</div>
<div class="apiDetail">
<p>Start a module.</p>
<dl><dt><b>Description</b>:</dt><dd>Invoke the module start entry point. The start routine is only called once.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mp</td><td>Module object returned via <a class="ref" href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb">mprLookupModule</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f"></a>
<div class="api">
<div class="prototype">
int
mprStopModule
(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)
</div>
<div class="apiDetail">
<p>Stop a module.</p>
<dl><dt><b>Description</b>:</dt><dd>Invoke the module stop entry point. The stop routine is only called once.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mp</td><td>Module object returned via <a class="ref" href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb">mprLookupModule</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9"></a>
<div class="api">
<div class="prototype">
int
mprUnloadModule
(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)
</div>
<div class="apiDetail">
<p>Unload a module.</p>
<dl><dt><b>Description</b>:</dt><dd>Unload a module from the MPR. This will unload a dynamic shared object (shared library). This routine is not fully supported by the MPR and is often fraught with issues. A module must usually be completely inactive with no allocated memory when it is unloaded. USE WITH CARE.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mp</td><td>Module object returned via <a class="ref" href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb">mprLookupModule</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the module can be unloaded. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565"></a>
<div class="api">
<div class="prototype">
int
mprUnloadNativeModule
(<a href="#group___mpr_module" class="ref">MprModule</a> *mp)
</div>
<div class="apiDetail">
<p>Unload a native module.</p>
<dl><dt><b>Description</b>:</dt><dd>WARNING: modules must be designed to be unloaded and must be quiesced before unloading.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mp</td><td>Module object created via <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a></dd></dl>
</div>
</div>
<h1>MprModuleSerivce</h1>
<a name="group___mpr_module_serivce"></a>
<div class="api">
<div class="prototype">MprModuleSerivce</div>
<div class="apiDetail">
<p>Loadable module service.</p>
<dl><dt>See Also:</dt><dd>
<a href="#mpr_8h_1abfbf7a6be96787a293dde205f6b70bb5" class="ref">mprCreateModuleService</a>, <a href="#mpr_8h_1abab36952856d0d468adaffd764d00a3e" class="ref">mprStartModuleService</a>, <a href="#mpr_8h_1a4a74ded985a5d974beb42618de5a07af" class="ref">mprStopModuleService</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<h1>MprPath</h1>
<a name="group___mpr_path"></a>
<div class="api">
<div class="prototype">MprPath</div>
<div class="apiDetail">
<p>Path (filename) Information.</p>
<dl><dt><b>Description</b>:</dt><dd>MprPath is the cross platform Path (filename) information structure.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">MprTime</td><td><td>atime</td><td>
Access time.
</td>
<tr><td class="param">bool</td><td><td>caseMatters</td><td>
Case comparisons matter.
</td>
<tr><td class="param">int</td><td><td>checked</td><td>
Path has been checked.
</td>
<tr><td class="param">MprTime</td><td><td>ctime</td><td>
Create time.
</td>
<tr><td class="param">int</td><td><td>group</td><td>
Group ID.
</td>
<tr><td class="param">int64</td><td><td>inode</td><td>
Inode number.
</td>
<tr><td class="param">bool</td><td><td>isDir</td><td>
Set if directory.
</td>
<tr><td class="param">bool</td><td><td>isLink</td><td>
Set if a symbolic link.
</td>
<tr><td class="param">bool</td><td><td>isReg</td><td>
Set if a regular file.
</td>
<tr><td class="param">MprTime</td><td><td>mtime</td><td>
Modified time.
</td>
<tr><td class="param">int</td><td><td>owner</td><td>
Owner ID.
</td>
<tr><td class="param">int</td><td><td>perms</td><td>
Permission mask.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20">MprOff</a></td><td><td>size</td><td>
File length.
</td>
<tr><td class="param">int</td><td><td>valid</td><td>
Valid data bit.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721"></a>
<div class="api">
<div class="prototype">
int
mprCopyPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *from, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *to, int omode)
</div>
<div class="apiDetail">
<p>Copy a file.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a new copy of a file with the specified open permissions mode.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">from</td><td>Path of the existing file to copy.</td>
<tr><td class="param">to</td><td>Name of the new file copy.</td>
<tr><td class="param">omode</td><td>Posix style file open mode mask. See <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a> for the various modes.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the file exists and can be accessed.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga411af02ac646daeb80cd31eb54606976"></a>
<div class="api">
<div class="prototype">
int
mprDeletePath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Delete a file.</p>
<dl><dt><b>Description</b>:</dt><dd>Delete a file or directory.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>String containing the path to delete.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful otherwise a negative MPR error code is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03"></a>
<div class="api">
<div class="prototype">
char *
mprGetAbsPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Convert a path to an absolute path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get an absolute (canonical) equivalent representation of a path. On windows this path will have back-slash directory separators and will have a drive specifier. On Cygwin, the path will be a Cygwin style path with forward-slash directory specifiers and without a drive specifier. If the path is outside the cygwin filesystem (outside c:/cygwin), the path will have a /cygdrive/DRIVE prefix. To get a windows style path, use mprGetWinPath.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An absolute path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891"></a>
<div class="api">
<div class="prototype">
char *
mprGetCurrentPath
()
</div>
<div class="apiDetail">
<p>Return the current working directory.</p>
<dl><dt>Returns:</dt><dd>Returns an allocated string with the current working directory as an absolute path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetFirstPathSeparator
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the first path separator in a path.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a reference to the first path separator in the given path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e"></a>
<div class="api">
<div class="prototype">
char *
mprGetNativePath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get a path formatted according to the native O/S conventions.</p>
<dl><dt><b>Description</b>:</dt><dd>Get an equivalent absolute path formatted using the directory separators native to the O/S platform. On Windows, it will use backward slashes (&quot;\&quot;) as the directory separator and will contain a drive specification.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the new path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68"></a>
<div class="api">
<div class="prototype">
char *
mprGetPathBase
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the base portion of a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the base portion of a path by stripping off all directory components.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A path without any directory portion.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga74c1b093a73d3090e7a2cfe65b484a73"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetPathBaseRef
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get a reference to the base portion of a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the base portion of a path by stripping off all directory components. This returns a reference into the original path.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A path without any directory portion. The path is a reference into the original file string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273"></a>
<div class="api">
<div class="prototype">
char *
mprGetPathDir
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the directory portion of a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the directory portion of a path by stripping off the base name.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A new string containing the directory name.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7"></a>
<div class="api">
<div class="prototype">
char *
mprGetPathExt
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the file extension portion of a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the file extension portion of a path. The file extension is the portion starting with the last &quot;.&quot; in the path. It thus includes &quot;.&quot; as the first charcter.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A path extension.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_list" class="ref">MprList</a> *
mprGetPathFiles
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *dir, int flags)
</div>
<div class="apiDetail">
<p>Create a list of files in a directory or subdirectories.</p>
This call returns a list of
MprDirEntry
objects
<dl><dt><b>Description</b>:</dt><dd>Get the list of files in a directory and return a list.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dir</td><td>Directory to list.</td>
<tr><td class="param">flags</td><td>The flags may be set to <a class="ref" href="#mpr_8h_1a38348b56856049b3ea9ec95744093fdd">MPR_PATH_DESCEND</a> to traverse subdirectories. Set <a class="ref" href="#mpr_8h_1a84562a2d6625c6121c9489d114c0a9ec">MPR_PATH_NODIRS</a> to exclude directories from the results. Set to MPR_PATH_HIDDEN to include hidden files that start with &quot;.&quot;. Set to MPR_PATH_DEPTH_FIRST to do a depth-first traversal, i.e. traverse subdirectories before considering adding the directory to the list.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A list (MprList) of <a class="ref" href="#struct_mpr_dir_entry">MprDirEntry</a> objects.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga435c9c0fb265e43a6720c1780bc10d4c"></a>
<div class="api">
<div class="prototype">
char *
mprGetPathFirstDir
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the first directory portion of a path.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A new string containing the directory name.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga918a614957a1d6f2a5aba18ef24532c8"></a>
<div class="api">
<div class="prototype">
int
mprGetPathInfo
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="#group___mpr_path" class="ref">MprPath</a> *info)
</div>
<div class="apiDetail">
<p>Return information about a file represented by a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Returns file status information regarding the path.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>String containing the path to query.</td>
<tr><td class="param">info</td><td>Pointer to a pre-allocated MprPath structure.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d"></a>
<div class="api">
<div class="prototype">
char *
mprGetPathLink
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the target of a symbolic link.</p>
<dl><dt><b>Description</b>:</dt><dd>Return the path pointed to by a symbolic link. Not all platforms support symbolic links.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A path representing the target of the symbolic link.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetPathNewline
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the file newline character string for a given path.</p>
Return the character string used to delimit new lines in text files
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Use this path to specify either the root of the file system or a file on the file system.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A string used to delimit new lines. This is typically &quot;\n&quot; or &quot;\r\n&quot;.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820"></a>
<div class="api">
<div class="prototype">
char *
mprGetPathParent
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the parent directory of a path.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the parent directory.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetPathSeparators
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get the path directory separator.</p>
Return the directory separator characters used to separate directories on a given file system. Typically &quot;/&quot; or &quot;\&quot; The first entry is the default separator
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Use this path to specify either the root of the file system or a file on the file system.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The string of path separators. The first entry is the default separator.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga4f27be793467e65120ae447408142cff"></a>
<div class="api">
<div class="prototype">
char *
mprGetPortablePath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Get a portable path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get an equivalent absolute path that is somewhat portable. This means it will use forward slashes (&quot;/&quot;) as the directory separator. This call will not remove drive specifiers.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the new path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gadd1d84683017a93af83a32ca2be19531"></a>
<div class="api">
<div class="prototype">
char *
mprGetRelPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *dest, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *origin)
</div>
<div class="apiDetail">
<p>Get a relative path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get a relative path path from an origin path to a destination.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dest</td><td>Destination file.</td>
<tr><td class="param">origin</td><td>Starting location from which to compute a relative path to the destination If the origin is null, use the application&apos;s current working directory as the origin.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the relative directory.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga04997c227955efe25553e3631a9045b1"></a>
<div class="api">
<div class="prototype">
char *
mprGetTempPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tmpDir)
</div>
<div class="apiDetail">
<p>Make a temporary file.</p>
<dl><dt><b>Description</b>:</dt><dd>Thread-safe way to make a unique temporary file.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tmpDir</td><td>Base directory in which the temp file will be allocated.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the path of the temp file.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2"></a>
<div class="api">
<div class="prototype">
char *
mprGetWinPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Convert a path to an absolute windows path.</p>
<dl><dt><b>Description</b>:</dt><dd>Get a windows style, absolute (canonical) equivalent representation of a path. This path will have back-slash delimiters and a drive specifier. On non-windows systems, this returns an absolute path using mprGetAbsPath.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A windows-style absolute path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga2049719abeb04bb8cc89e89dbc8ad4aa"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsPathAbs
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Determine if a path is absolute.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the path is absolue.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga3e583d5b6b29cdc5cf686802c2ca40f3"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsPathDir
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Determine if a path is a directory.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the path is a directory.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga932b2591cfd0deda28a559c9286800ba"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsPathRel
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Determine if a path is relative.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the path is relative.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga4328cbd16ad63b5ddcfa1db28192a53c"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsPathSeparator
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> c)
</div>
<div class="apiDetail">
<p>Test if a character is a path separarator.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to identify the file system.</td>
<tr><td class="param">c</td><td>Character to test.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns true if the character is a path separator on the file system containing the given path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee"></a>
<div class="api">
<div class="prototype">
char *
mprJoinPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *base, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Join paths.</p>
<dl><dt><b>Description</b>:</dt><dd>Join a path to a base path. If path is absolute, it will be returned.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">base</td><td>Directory path name to use as the base.</td>
<tr><td class="param">path</td><td>Other path name to join to the base path.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Allocated string containing the resolved path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gac958ff64eb60c5716514790871314294"></a>
<div class="api">
<div class="prototype">
char *
mprJoinPathExt
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ext)
</div>
<div class="apiDetail">
<p>Join an extension to a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Add an extension to a path if it does not already have one.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to use as a base. Path is not modified.</td>
<tr><td class="param">ext</td><td>Extension to add. Must should not have a period prefix.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Allocated string containing the resolved path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb"></a>
<div class="api">
<div class="prototype">
int
mprMakeDir
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int perms, int owner, int group, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> makeMissing)
</div>
<div class="apiDetail">
<p>Make a directory.</p>
<dl><dt><b>Description</b>:</dt><dd>Make a directory using the supplied path. Intermediate directories are created as required.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>String containing the directory pathname to create.</td>
<tr><td class="param">makeMissing</td><td>If true make all required intervening directory segments.</td>
<tr><td class="param">perms</td><td>Posix style file permissions mask.</td>
<tr><td class="param">owner</td><td>User to own the directory. Set to -1 not change the owner.</td>
<tr><td class="param">group</td><td>Group to own the directory. Set to -1 not change the group.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gab87f107b898264faed9e921d6a3669e3"></a>
<div class="api">
<div class="prototype">
int
mprMakeLink
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> hard)
</div>
<div class="apiDetail">
<p>Make a link.</p>
<dl><dt><b>Description</b>:</dt><dd>Make a link at the target to the specified path. This will make symbolic or hard links depending on the value of the hard parameter.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>String containing the path to link to.</td>
<tr><td class="param">target</td><td>String containing the new link path to be created.</td>
<tr><td class="param">hard</td><td>If true, make a hard link, otherwise make a soft link.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code is returned.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4"></a>
<div class="api">
<div class="prototype">
void
mprMapSeparators
(char *path, int separator)
</div>
<div class="apiDetail">
<p>Map the separators in a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Map the directory separators in a path to the specified separators. This is useful to change from backward to forward slashes when dealing with Windows paths.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to examine.</td>
<tr><td class="param">separator</td><td>Separator character to use.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string containing the parent directory.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gad90f17e239122a86c109dd4051665152"></a>
<div class="api">
<div class="prototype">
char *
mprNormalizePath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Normalize a path.</p>
<dl><dt><b>Description</b>:</dt><dd>A path is normalized by redundant segments such as &quot;./&quot; and &quot;../dir&quot; and duplicate path separators. Path separators are mapped. Paths are not converted to absolute paths.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>First path to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A newly allocated, clean path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprPathExists
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int omode)
</div>
<div class="apiDetail">
<p>Determine if a file exists for a path name and can be accessed.</p>
<dl><dt><b>Description</b>:</dt><dd>Test if a file can be accessed for a given mode.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to test.</td>
<tr><td class="param">omode</td><td>Posix style file open mode mask. See <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a> for the various modes.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the file exists and can be accessed.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac"></a>
<div class="api">
<div class="prototype">
char *
mprReplacePathExt
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *dir, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ext)
</div>
<div class="apiDetail">
<p>Replace an extension to a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Remove any existing path extension and then add the given path extension.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dir</td><td>Directory path name to test use as the base/dir.</td>
<tr><td class="param">ext</td><td>Extension to add. The extension should not have a period prefix.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Allocated string containing the resolved path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435"></a>
<div class="api">
<div class="prototype">
char *
mprResolvePath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *base, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Resolve paths.</p>
<dl><dt><b>Description</b>:</dt><dd>Resolve paths in the neighborhood of this path. Resolve operates like join, except that it joins the given paths to the directory portion of the current (&quot;this&quot;) path. For example: Path(&quot;/usr/bin/ejs/bin&quot;).resolve(&quot;lib&quot;) will return &quot;/usr/lib/ejs/lib&quot;. i.e. it will return the sibling directory &quot;lib&quot;.</dd></dl>
Resolve operates by determining a virtual current directory for this Path object. It then successively joins the given paths to the directory portion of the current result. If the next path is an absolute path, it is used unmodified. The effect is to find the given paths with a virtual current directory set to the directory containing the prior path
Resolve is useful for creating paths in the region of the current path and gracefully handles both absolute and relative path segments
Returns a joined (normalized) path. If path is absolute, then return path. If path is null, empty or &quot;.&quot; then return path
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">base</td><td>Base path to use as the base.</td>
<tr><td class="param">path</td><td>Path name to resolve against base.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Allocated string containing the resolved path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d"></a>
<div class="api">
<div class="prototype">
int
mprSamePath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path2)
</div>
<div class="apiDetail">
<p>Compare two paths if they are the same.</p>
<dl><dt><b>Description</b>:</dt><dd>Compare two paths to see if they are equal. This normalizes the paths to absolute paths first before comparing. It does handle case sensitivity appropriately.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path1</td><td>First path to compare.</td>
<tr><td class="param">path2</td><td>Second path to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the file exists and can be accessed.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gaefab5559ec726c9e2d08e20211177249"></a>
<div class="api">
<div class="prototype">
int
mprSamePathCount
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path2, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Compare two paths if they are the same for a given length.</p>
<dl><dt><b>Description</b>:</dt><dd>Compare two paths to see if they are equal. This normalizes the paths to absolute paths first before comparing. It does handle case sensitivity appropriately. The len parameter if non-zero, specifies how many characters of the paths to compare.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path1</td><td>First path to compare.</td>
<tr><td class="param">path2</td><td>Second path to compare.</td>
<tr><td class="param">len</td><td>How many characters to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the file exists and can be accessed.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d"></a>
<div class="api">
<div class="prototype">
char *
mprSearchPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int flags, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *search, ...)
</div>
<div class="apiDetail">
<p>Search for a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Search for a file using a given set of search directories.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path name to locate. Must be an existing file or directory.</td>
<tr><td class="param">flags</td><td>Flags.</td>
<tr><td class="param">search</td><td>Variable number of directories to search.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Allocated string containing the full path name of the located file.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb"></a>
<div class="api">
<div class="prototype">
char *
mprTransformPath
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, int flags)
</div>
<div class="apiDetail">
<p>Transform a path.</p>
<dl><dt><b>Description</b>:</dt><dd>A path is transformed by cleaning and then transforming according to the flags.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>First path to compare.</td>
<tr><td class="param">flags</td><td>Flags to modify the path representation.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A newly allocated, clean path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga4945b9360d7d3cb11b490d2e67e580fc"></a>
<div class="api">
<div class="prototype">
char *
mprTrimPathDrive
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Trim the drive from a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Trim a drive specifier (&quot;c:&quot;) from the start of a path.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string with the trimmed drive.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642"></a>
<div class="api">
<div class="prototype">
char *
mprTrimPathExt
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Trim an extension from a path.</p>
<dl><dt><b>Description</b>:</dt><dd>Trim a file extension (&quot;.ext&quot;) from a path name.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Path to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string with the trimmed path.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a></dd></dl>
</div>
</div>
<a name="group___mpr_path_1ga493014d6c3a406207003a3f40eb06843"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWritePathContents
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len, int mode)
</div>
<div class="apiDetail">
<p>Create a file and write contents.</p>
<dl><dt><b>Description</b>:</dt><dd>The file is created, written and closed. If the file already exists, it is recreated.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Filename to create.</td>
<tr><td class="param">buf</td><td>Buffer of data to write to the file.</td>
<tr><td class="param">len</td><td>Size of the buf parameter in bytes.</td>
<tr><td class="param">mode</td><td>File permissions with which to create the file. E.g. 0644.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of bytes written. Should equal len. Otherwise return a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_dir_entry" class="ref">MprDirEntry</a>, <a href="#group___mpr_file" class="ref">MprFile</a>, <a href="#group___mpr_path" class="ref">MprPath</a>, <a href="#group___mpr_path_1ga358d2532cd4fe229f4118ca181b4b721" class="ref">mprCopyPath</a>, <a href="#group___mpr_path_1ga411af02ac646daeb80cd31eb54606976" class="ref">mprDeletePath</a>, <a href="#group___mpr_path_1ga1172d381790b8084ba79de901d4d3a03" class="ref">mprGetAbsPath</a>, <a href="#group___mpr_path_1ga368d0fe452a2d7216b32dda604e05891" class="ref">mprGetCurrentPath</a>, <a href="#group___mpr_path_1ga147053f0fdde33d5995c0e7e6413c1bd" class="ref">mprGetFirstPathSeparator</a>, <a href="#group___mpr_path_1ga652e05d48e7c4ce7584f58b52440023e" class="ref">mprGetNativePath</a>, <a href="#group___mpr_path_1gabd75bccc31adfe405ad12b566badcc68" class="ref">mprGetPathBase</a>, <a href="#group___mpr_path_1ga5c35e4a5ce2956be15060fd4a6468273" class="ref">mprGetPathDir</a>, <a href="#group___mpr_path_1ga6a91f4e854e2514ac5bbca70b3a510f7" class="ref">mprGetPathExt</a>, <a href="#group___mpr_path_1gaeb36791bb1c740ffac5062250b9de42e" class="ref">mprGetPathFiles</a>, <a href="#group___mpr_path_1ga89360c9cb1376857882eeab8de709d6d" class="ref">mprGetPathLink</a>, <a href="#group___mpr_path_1gab0bcfb84b2617f571b60c4bcb49c9680" class="ref">mprGetPathNewline</a>, <a href="#group___mpr_path_1gafc2c998b374d9699e74dd8919a24d820" class="ref">mprGetPathParent</a>, <a href="#group___mpr_path_1ga9c4005abea0f134dc54489e8185fd79e" class="ref">mprGetPathSeparators</a>, <a href="#group___mpr_path_1ga4f27be793467e65120ae447408142cff" class="ref">mprGetPortablePath</a>, <a href="#group___mpr_path_1gadd1d84683017a93af83a32ca2be19531" class="ref">mprGetRelPath</a>, <a href="#group___mpr_path_1ga04997c227955efe25553e3631a9045b1" class="ref">mprGetTempPath</a>, <a href="#group___mpr_path_1ga9bd48520260bb07575ca7899da34c0a2" class="ref">mprGetWinPath</a>, <a href="#group___mpr_path_1ga95a127cc1d35b7f330a85690363df8ee" class="ref">mprJoinPath</a>, <a href="#group___mpr_path_1gac958ff64eb60c5716514790871314294" class="ref">mprJoinPathExt</a>, <a href="#group___mpr_path_1ga8b825c9125a21012024b9b76f2683edb" class="ref">mprMakeDir</a>, <a href="#group___mpr_path_1gab87f107b898264faed9e921d6a3669e3" class="ref">mprMakeLink</a>, <a href="#group___mpr_path_1gab9be6174f5d4126e39a9380c0386e6a4" class="ref">mprMapSeparators</a>, <a href="#group___mpr_path_1gad90f17e239122a86c109dd4051665152" class="ref">mprNormalizePath</a>, <a href="#group___mpr_path_1gadbed992189919b8d40b5008ee54a0ccb" class="ref">mprPathExists</a>, <a href="#group___mpr_path_1gab3e429338388ed1516ac47d14c0cf1ac" class="ref">mprReplacePathExt</a>, <a href="#group___mpr_path_1ga5ae4330b58e82eb1202e9783fdbda435" class="ref">mprResolvePath</a>, <a href="#group___mpr_path_1ga05f5c0032fd356cf18c2580ffb37be4d" class="ref">mprSamePath</a>, <a href="#group___mpr_path_1gaefab5559ec726c9e2d08e20211177249" class="ref">mprSamePathCount</a>, <a href="#group___mpr_path_1ga38fb4d9b61ce3309125fae25538dc18d" class="ref">mprSearchPath</a>, <a href="#group___mpr_path_1ga7e21012e1efb9cd5b62fbcce55728deb" class="ref">mprTransformPath</a>, <a href="#group___mpr_path_1gada66ac05bfc058e1de68ebcc58e68642" class="ref">mprTrimPathExt</a></dd></dl>
</div>
</div>
<h1>MprSignal</h1>
<a name="group___mpr_signal"></a>
<div class="api">
<div class="prototype">MprSignal</div>
<div class="apiDetail">
<p>Signal control structure.</p>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_signal_1ga6d0d3705ec4497587e56828084fb95b0" class="ref">MprSignalProc</a>, <a href="#struct_mpr_signal_service" class="ref">MprSignalService</a>, <a href="#group___mpr_signal_1gabcf186c6becc236eb4f4c8416b709f5f" class="ref">mprAddSignalHandler</a>, <a href="#group___mpr_signal_1ga107d9cacb23e9cddb7fcd1e6244638b7" class="ref">mprAddStandardSignals</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">void *</td><td><td>data</td><td>
Handler data.
</td>
<tr><td class="param">MprDispatcher *</td><td><td>dispatcher</td><td>
Dispatcher to service handler.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Control flags.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_signal_1ga6d0d3705ec4497587e56828084fb95b0">MprSignalProc</a></td><td><td>handler</td><td>
Signal handler (non-native).
</td>
<tr><td class="param">struct MprSignal *</td><td><td>next</td><td>
Chain of handlers on the same signo.
</td>
<tr><td class="param">void(*</td><td><td>sigaction)()</td><td>
Prior sigaction handler.
</td>
<tr><td class="param">int</td><td><td>signo</td><td>
Signal number.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_signal_1gabcf186c6becc236eb4f4c8416b709f5f"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_signal" class="ref">MprSignal</a> *
mprAddSignalHandler
(int signo, void *handler, void *arg, <a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, int flags)
</div>
<div class="apiDetail">
<p>Add a signal handler.</p>
The signal handling mechanism will trap the specified signal if issued and create an event on the given dispatcher. This will cause the handler function to be safely run by the dispatcher. Normally, signal handlers are difficult to write as the code must be Async-safe. This API permits the use of common, single-threaded code to be used for signal handlers without worrying about pre-emption by other signals or threads
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">signo</td><td>Signal number to handle.</td>
<tr><td class="param">handler</td><td>Call back procedure to invoke. This has the signature <a class="ref" href="#group___mpr_signal_1ga6d0d3705ec4497587e56828084fb95b0">MprSignalProc</a></td>
<tr><td class="param">arg</td><td>Argument to provide to the handler.</td>
<tr><td class="param">dispatcher</td><td>Event dispatcher on which to queue an event to run the handler.</td>
<tr><td class="param">flags</td><td>Set to either MPR_SIGNAL_BEFORE or MPR_SIGNAL_AFTER to run the handler before/after existing handlers.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_signal_1ga6d0d3705ec4497587e56828084fb95b0" class="ref">MprSignalProc</a>, <a href="#struct_mpr_signal_service" class="ref">MprSignalService</a>, <a href="#group___mpr_signal_1ga107d9cacb23e9cddb7fcd1e6244638b7" class="ref">mprAddStandardSignals</a></dd></dl>
</div>
</div>
<a name="group___mpr_signal_1ga107d9cacb23e9cddb7fcd1e6244638b7"></a>
<div class="api">
<div class="prototype">
void
mprAddStandardSignals
()
</div>
<div class="apiDetail">
<p>Add standard trapping of system signals.</p>
The trapped signals are SIGINT, SIGQUIT, SIGTERM, SIGPIPE and SIGXFSZ. SIGPIPE and SIGXFSZ are ignored. A graceful shutdown is initiated for SIGTERM whereas SIGINT and SIGQUIT will do an immediate exit
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_signal_1ga6d0d3705ec4497587e56828084fb95b0" class="ref">MprSignalProc</a>, <a href="#struct_mpr_signal_service" class="ref">MprSignalService</a>, <a href="#group___mpr_signal_1gabcf186c6becc236eb4f4c8416b709f5f" class="ref">mprAddSignalHandler</a></dd></dl>
</div>
</div>
<h1>MprSocket</h1>
<a name="group___mpr_socket"></a>
<div class="api">
<div class="prototype">MprSocket</div>
<div class="apiDetail">
<p>Socket Service.</p>
<dl><dt><b>Description</b>:</dt><dd>The MPR Socket service provides IPv4 and IPv6 capabilities for both client and server endpoints. Datagrams, Broadcast and point to point services are supported. The APIs can be used in both blocking and non-blocking modes. <br/><br/>
The socket service integrates with the MPR worker thread pool and eventing services. Socket connections can be handled by threads from the worker thread pool for scalable, multithreaded applications.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>acceptIp</td><td>
Server addresss that accepted a new connection (actual interface).
</td>
<tr><td class="param">int</td><td><td>acceptPort</td><td>
Server port doing the listening.
</td>
<tr><td class="param">char *</td><td><td>errorMsg</td><td>
Connection related error messages.
</td>
<tr><td class="param">Socket</td><td><td>fd</td><td>
Actual socket file handle.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Current state flags.
</td>
<tr><td class="param">MprWaitHandler *</td><td><td>handler</td><td>
Wait handler.
</td>
<tr><td class="param">char *</td><td><td>ip</td><td>
Server listen address or remote client address.
</td>
<tr><td class="param">struct MprSocket *</td><td><td>listenSock</td><td>
Listening socket.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multi-thread sync.
</td>
<tr><td class="param">int</td><td><td>port</td><td>
Port to listen or connect on.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_socket_provider">MprSocketProvider</a> *</td><td><td>provider</td><td>
Socket implementation provider.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_socket_service">MprSocketService</a> *</td><td><td>service</td><td>
Socket service.
</td>
<tr><td class="param">struct MprSsl *</td><td><td>ssl</td><td>
SSL configuration.
</td>
<tr><td class="param">void *</td><td><td>sslSocket</td><td>
Extended SSL socket state.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga8e5dff8e25775b63954faa81e54c7f82"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_socket" class="ref">MprSocket</a> *
mprAcceptSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *listen)
</div>
<div class="apiDetail">
<p>Accept an incoming connection.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">listen</td><td>Listening server socket.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A new socket connection.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *
mprAddSocketHandler
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, int mask, <a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, void *proc, void *data, int flags)
</div>
<div class="apiDetail">
<p>Add a wait handler to a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a wait handler that will be invoked when I/O of interest occurs on the specified socket. The wait handler is registered with the MPR event I/O mechanism.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object created via mprCreateSocket.</td>
<tr><td class="param">mask</td><td>Mask of events of interest. This is made by oring MPR_READABLE and MPR_WRITABLE.</td>
<tr><td class="param">dispatcher</td><td>Dispatcher object to use for scheduling the I/O event.</td>
<tr><td class="param">proc</td><td>Callback function to invoke when an I/O event of interest has occurred.</td>
<tr><td class="param">data</td><td>Data item to pass to the callback.</td>
<tr><td class="param">flags</td><td>Socket handler flags.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A new wait handler registered with the MPR event mechanism.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga48875519d20f48a69a66b233d411f62f"></a>
<div class="api">
<div class="prototype">
void
mprAddSocketProvider
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a> *provider)
</div>
<div class="apiDetail">
<p>Add a secure socket provider for SSL communications.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Name of the secure socket provider.</td>
<tr><td class="param">provider</td><td>Socket provider object.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726"></a>
<div class="api">
<div class="prototype">
void
mprCloseSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> graceful)
</div>
<div class="apiDetail">
<p>Close a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Close a socket. If the graceful option is true, the socket will first wait for written data to drain before doing a graceful close.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">graceful</td><td>Set to true to do a graceful close. Otherwise, an abortive close will be performed.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7"></a>
<div class="api">
<div class="prototype">
int
mprConnectSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip, int port, int flags)
</div>
<div class="apiDetail">
<p>Connect a client socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Open a client connection.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned via <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">ip</td><td>Host or IP address to connect to.</td>
<tr><td class="param">port</td><td>TCP/IP port number to connect to.</td>
<tr><td class="param">flags</td><td>Socket flags may use the following flags ored together: <ul><li>MPR_SOCKET_BLOCK - to use blocking I/O. The default is non-blocking. </li><li>MPR_SOCKET_BROADCAST - Use IPv4 broadcast </li><li>MPR_SOCKET_DATAGRAM - Use IPv4 datagrams </li><li>MPR_SOCKET_NOREUSE - Set NOREUSE flag on the socket </li><li>MPR_SOCKET_NODELAY - Set NODELAY on the socket </li><li>MPR_SOCKET_THREAD - Process callbacks on a separate thread. </li></ul></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the connection is successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_socket" class="ref">MprSocket</a> *
mprCreateSocket
()
</div>
<div class="apiDetail">
<p>Create a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a new socket.</dd></dl>
<dl><dt>Returns:</dt><dd>A new socket object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40"></a>
<div class="api">
<div class="prototype">
void
mprDisconnectSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Disconnect a socket by closing its underlying file descriptor.</p>
This is used to prevent further I/O wait events while still preserving the socket object
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854"></a>
<div class="api">
<div class="prototype">
void
mprEnableSocketEvents
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, int mask)
</div>
<div class="apiDetail">
<p>Enable socket events for a socket callback.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">mask</td><td>Mask of events to enable.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprFlushSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Flush a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Flush any buffered data in a socket. Standard sockets do not use buffering and this call will do nothing. SSL sockets do buffer and calling mprFlushSocket will write pending written data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of bytes actually written. Return a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprGetSocketBlockingMode
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Get the socket blocking mode.</p>
<dl><dt><b>Description</b>:</dt><dd>Return the current blocking mode setting.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the socket is in blocking mode. Otherwise false.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a"></a>
<div class="api">
<div class="prototype">
int
mprGetSocketError
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Get a socket error code.</p>
<dl><dt><b>Description</b>:</dt><dd>This will map a Windows socket error code into a posix error code.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A posix error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0"></a>
<div class="api">
<div class="prototype">
Socket
mprGetSocketFd
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Get the socket file descriptor.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the file descriptor associated with a socket.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The Socket file descriptor used by the O/S for the socket.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c"></a>
<div class="api">
<div class="prototype">
int
mprGetSocketInfo
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip, int port, int *family, int *protocol, struct sockaddr **addr, <a href="#mpr_8h_1a7e81f05ea37d05efc10e7c45c1111d0d" class="ref">Socklen</a> *addrlen)
</div>
<div class="apiDetail">
<p>Get the socket for an IP:Port address.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ip</td><td>IP address or hostname.</td>
<tr><td class="param">port</td><td>Port number.</td>
<tr><td class="param">family</td><td>Output parameter to contain the Internet protocol family.</td>
<tr><td class="param">protocol</td><td>Output parameter to contain the Internet TCP/IP protocol.</td>
<tr><td class="param">addr</td><td>Output parameter to contain the sockaddr description of the socket address.</td>
<tr><td class="param">addrlen</td><td>Output parameter to hold the length of the sockaddr object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the call is successful. Otherwise return a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab"></a>
<div class="api">
<div class="prototype">
int
mprGetSocketPort
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Get the port used by a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the TCP/IP port number used by the socket.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The integer TCP/IP port number used by the socket.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa"></a>
<div class="api">
<div class="prototype">
char *
mprGetSocketState
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Get the socket state.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the socket state as a parseable string description.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The an allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga5225bb78e37d614aa23ea152458f3037"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprHasDualNetworkStack
()
</div>
<div class="apiDetail">
<p>has the system got a dual IPv4 + IPv6 network stack.</p>
<dl><dt>Returns:</dt><dd>True if the network can listen on IPv4 and IPv6 on a single socket.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga5c17fdbbeb17d1464a97fcbc669838be"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprHasIPv6
()
</div>
<div class="apiDetail">
<p>Determine if the system support IPv6.</p>
<dl><dt>Returns:</dt><dd>True if the address system supports IPv6 networking.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprHasSecureSockets
()
</div>
<div class="apiDetail">
<p>Determine if SSL is available.</p>
<dl><dt>Returns:</dt><dd>True if SSL is available.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gaec9134c334a714e44c62396c88a012c9"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsIPv6
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip)
</div>
<div class="apiDetail">
<p>Determine if the IP address is an IPv6 address.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ip</td><td>IP address.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the address is an IPv6 address, otherwise zero.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsSocketEof
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Test if the other end of the socket has been closed.</p>
<dl><dt><b>Description</b>:</dt><dd>Determine if the other end of the socket has been closed and the socket is at end-of-file.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the socket is at end-of-file.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsSocketSecure
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Determine if the socket is secure.</p>
<dl><dt><b>Description</b>:</dt><dd>Determine if the socket is using SSL to provide enhanced security.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the socket is using SSL, otherwise zero.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a"></a>
<div class="api">
<div class="prototype">
Socket
mprListenOnSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ip, int port, int flags)
</div>
<div class="apiDetail">
<p>Listen on a server socket for incoming connections.</p>
<dl><dt><b>Description</b>:</dt><dd>Open a server socket and listen for client connections. If ip is null, then this will listen on both IPv6 and IPv4.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned via <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">ip</td><td>IP address to bind to. Set to 0.0.0.0 to bind to all possible addresses on a given port.</td>
<tr><td class="param">port</td><td>TCP/IP port number to connect to.</td>
<tr><td class="param">flags</td><td>Socket flags may use the following flags ored together: <ul><li>MPR_SOCKET_BLOCK - to use blocking I/O. The default is non-blocking. </li><li>MPR_SOCKET_BROADCAST - Use IPv4 broadcast </li><li>MPR_SOCKET_DATAGRAM - Use IPv4 datagrams </li><li>MPR_SOCKET_NOREUSE - Set NOREUSE flag on the socket </li><li>MPR_SOCKET_NODELAY - Set NODELAY on the socket </li><li>MPR_SOCKET_THREAD - Process callbacks on a separate thread. </li></ul></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the connection is successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gab4fc05336b092c46ca726f3aae3f1007"></a>
<div class="api">
<div class="prototype">
int
mprParseSocketAddress
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *address, char **ip, int *port, int *secure, int defaultPort)
</div>
<div class="apiDetail">
<p>Parse an socket address IP address.</p>
<dl><dt><b>Description</b>:</dt><dd>This parses a string containing an IP:PORT specification and returns the IP address and port components. Handles ipv4 and ipv6 addresses.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">address</td><td>An IP:PORT specification. The :PORT is optional. When an IP address contains an ipv6 port it should be written as aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh:iiii or.</td>
<tr><td class="param">ip</td><td>Pointer to receive a dynamically allocated IP string.</td>
<tr><td class="param">port</td><td>Pointer to an integer to receive the port value.</td>
<tr><td class="param">secure</td><td>Pointer to an integer to receive true if the address requires SSL.</td>
<tr><td class="param">defaultPort</td><td>The default port number to use if the address does not contain a port.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprReadSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, void *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Read from a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Read data from a socket. The read will return with whatever bytes are available. If none and the socket is in blocking mode, it will block untill there is some data available or the socket is disconnected.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">buf</td><td>Pointer to a buffer to hold the read data.</td>
<tr><td class="param">size</td><td>Size of the buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of bytes actually read. Return a negative MPR error code on errors. Return -1 for EOF and errors. On success, return the number of bytes read. Use mprIsSocketEof to distinguision between EOF and errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga02e481047fbc58df3cf3afc31f15a2b4"></a>
<div class="api">
<div class="prototype">
void
mprRemoveSocketHandler
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Remove a socket wait handler.</p>
<dl><dt><b>Description</b>:</dt><dd>Removes the socket wait handler created via mprAddSocketHandler.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object created via mprCreateSocket.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gad69af558283f6f1f3277ae9e77029017"></a>
<div class="api">
<div class="prototype">
int
mprSetMaxSocketAccept
(int max)
</div>
<div class="apiDetail">
<p>Set the maximum number of accepted client connections that are permissable.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">max</td><td>New maximum number of accepted client connections.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904"></a>
<div class="api">
<div class="prototype">
int
mprSetSocketBlockingMode
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Set the socket blocking mode.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the blocking mode for a socket. By default a socket is in non-blocking mode where read / write calls will not block.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">on</td><td>Set to zero to put the socket into non-blocking mode. Set to non-zero to enable blocking mode.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The old blocking mode if successful or a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314"></a>
<div class="api">
<div class="prototype">
void
mprSetSocketEof
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> eof)
</div>
<div class="apiDetail">
<p>Set an EOF condition on the socket.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">eof</td><td>Set to true to set an EOF condition. Set to false to clear it.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga51594bafaa2003511990ffd804189a31"></a>
<div class="api">
<div class="prototype">
int
mprSetSocketNoDelay
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Set the socket delay mode.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the socket delay behavior (nagle algorithm). By default a socket will partial packet writes a little to try to accumulate data and coalesce TCP/IP packages. Setting the delay mode to false may result in higher performance for interactive applications.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">on</td><td>Set to non-zero to put the socket into no delay mode. Set to zero to enable the nagle algorithm.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The old delay mode if successful or a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprSocketHandshaking
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Test if the socket is doing an SSL handshake.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the SSL stack is handshaking.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprSocketHasBufferedRead
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Test if the socket has buffered read data.</p>
<dl><dt><b>Description</b>:</dt><dd>Use this function to avoid waiting for incoming I/O if data is already buffered.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the socket has pending read data.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprSocketHasBufferedWrite
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Test if the socket has buffered write data.</p>
<dl><dt><b>Description</b>:</dt><dd>Use this function to detect that there is buffer data to write in a SSL stack.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the socket has pending write data.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e"></a>
<div class="api">
<div class="prototype">
int
mprUpgradeSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *peerName)
</div>
<div class="apiDetail">
<p>Upgrade a socket to use SSL/TLS.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket to upgrade.</td>
<tr><td class="param">ssl</td><td>SSL configuration to use. Set to NULL to use the default.</td>
<tr><td class="param">peerName</td><td>Required peer name in handshake with peer. Used by clients to verify the server hostname.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteSocket
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Write to a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Write a block of data to a socket. If the socket is in non-blocking mode (the default), the write may return having written less than the required bytes.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">buf</td><td>Reference to a block to write to the socket.</td>
<tr><td class="param">len</td><td>Length of data to write. This may be less than the requested write length if the socket is in non-blocking mode. Will return a negative MPR error code on errors.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of bytes actually written. Return a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteSocketString
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Write to a string to a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Write a string to a socket. If the socket is in non-blocking mode (the default), the write may return having written less than the required bytes.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">str</td><td>Null terminated string to write.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of bytes actually written. Return a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprWriteSocketVector
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="#struct_mpr_i_o_vec" class="ref">MprIOVec</a> *iovec, int count)
</div>
<div class="apiDetail">
<p>Write a vector to a socket.</p>
<dl><dt><b>Description</b>:</dt><dd>Do scatter/gather I/O by writing a vector of buffers to a socket.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">iovec</td><td>Vector of data to write before the file contents.</td>
<tr><td class="param">count</td><td>Count of entries in beforeVect.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of bytes actually written. Return a negative MPR error code on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a></dd></dl>
</div>
</div>
<h1>MprSsl</h1>
<a name="group___mpr_ssl"></a>
<div class="api">
<div class="prototype">MprSsl</div>
<div class="apiDetail">
<p>SSL control structure.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>caFile</td><td>
Certificate verification cert file or bundle.
</td>
<tr><td class="param">char *</td><td><td>caPath</td><td>
Certificate verification cert directory (OpenSSL only).
</td>
<tr><td class="param">char *</td><td><td>certFile</td><td>
Alternatively, locate the cert in a file.
</td>
<tr><td class="param">int</td><td><td>changed</td><td>
Set if there is a change in the SSL config.
Reset by providers.
</td>
<tr><td class="param">char *</td><td><td>ciphers</td><td>
Candidate ciphers to use.
</td>
<tr><td class="param">void *</td><td><td>config</td><td>
Extended provider SSL configuration.
</td>
<tr><td class="param">int</td><td><td>configured</td><td>
Set if this SSL configuration has been processed.
</td>
<tr><td class="param">char *</td><td><td>key</td><td>
Key string.
</td>
<tr><td class="param">char *</td><td><td>keyFile</td><td>
Alternatively, locate the key in a file.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multithread sync.
</td>
<tr><td class="param">int</td><td><td>protocols</td><td>
SSL protocols.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_socket_provider">MprSocketProvider</a> *</td><td><td>provider</td><td>
Cached SSL provider to use.
</td>
<tr><td class="param">char *</td><td><td>providerName</td><td>
SSL provider to use - null if default.
</td>
<tr><td class="param">int</td><td><td>verifyDepth</td><td>
Set if the cert chain depth should be verified.
</td>
<tr><td class="param">int</td><td><td>verifyIssuer</td><td>
Set if the certificate issuer should be also verified.
</td>
<tr><td class="param">int</td><td><td>verifyPeer</td><td>
Verify the peer verificate.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga86d99126f5c4cf54edda02c98a9142a3"></a>
<div class="api">
<div class="prototype">
void
mprAddSslCiphers
(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ciphers)
</div>
<div class="apiDetail">
<p>Add the ciphers to use for SSL.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">ciphers</td><td>Cipher string to add to any existing ciphers.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34"></a>
<div class="api">
<div class="prototype">
struct MprSsl *
MprSsl* mprCloneSsl
(<a href="#group___mpr_ssl" class="ref">MprSsl</a> *src)
</div>
<div class="apiDetail">
<p>Create the a new SSL control structure based on an existing structure.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">src</td><td>Structure to clone.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802"></a>
<div class="api">
<div class="prototype">
struct MprSsl *
MprSsl* mprCreateSsl
(int server)
</div>
<div class="apiDetail">
<p>Create the SSL control structure.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">server</td><td>True if the SSL configuration will be used on the server side.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga0751a98b49aa54ef0b416d892e072270"></a>
<div class="api">
<div class="prototype">
int
mprGetSslCipherCode
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cipher)
</div>
<div class="apiDetail">
<p>Lookup an SSL cipher by its IANA name and return the cipher IANA code.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cipher</td><td>Cipher IANA name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String cipher code. For example: given &quot;TLS_RSA_WITH_AES_256_CBC_SHA&quot; return 0x35.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga2726c76da3ced81e8ebb5a573573d1c9"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetSslCipherName
(int cipher)
</div>
<div class="apiDetail">
<p>Lookup an SSL cipher by its IANA code and return the string name.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cipher</td><td>Cipher IANA code.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String cipher name. For example: given 0x35, return &quot;TLS_RSA_WITH_AES_256_CBC_SHA&quot;.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51"></a>
<div class="api">
<div class="prototype">
int
mprLoadSsl
()
</div>
<div class="apiDetail">
<p>Load the SSL module.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577"></a>
<div class="api">
<div class="prototype">
void
mprSetSslCaFile
(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *caFile)
</div>
<div class="apiDetail">
<p>Set the client certificate file to use for SSL.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">caFile</td><td>Path to the SSL client certificate file.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b"></a>
<div class="api">
<div class="prototype">
void
mprSetSslCaPath
(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *caPath)
</div>
<div class="apiDetail">
<p>Set the path for the client certificate directory.</p>
<dl><dt><b>Description</b>:</dt><dd>This is supported for OpenSSL only.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">caPath</td><td>Path to the SSL client certificate directory.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Deprecated.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658"></a>
<div class="api">
<div class="prototype">
void
mprSetSslCertFile
(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *certFile)
</div>
<div class="apiDetail">
<p>Set certificate to use for SSL.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">certFile</td><td>Path to the SSL certificate file.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20"></a>
<div class="api">
<div class="prototype">
void
mprSetSslCiphers
(<a href="#group___mpr_ssl" class="ref">MprSsl</a> *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *ciphers)
</div>
<div class="apiDetail">
<p>Set the ciphers to use.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">ciphers</td><td>String of suitable ciphers.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f"></a>
<div class="api">
<div class="prototype">
void
mprSetSslKeyFile
(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *keyFile)
</div>
<div class="apiDetail">
<p>Set the key file to use for SSL.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">keyFile</td><td>Path to the SSL key file.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga00cd731b20d96a0b0080637d59becd4a"></a>
<div class="api">
<div class="prototype">
void
mprSetSslProtocols
(struct MprSsl *ssl, int protocols)
</div>
<div class="apiDetail">
<p>Set the SSL protocol to use.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">protocols</td><td>SSL protocols mask.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga98e6c82c9ff89135aea961c2ff3d4de4"></a>
<div class="api">
<div class="prototype">
void
mprSetSslProvider
(<a href="#group___mpr_ssl" class="ref">MprSsl</a> *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *provider)
</div>
<div class="apiDetail">
<p>Set the SSL provider to use.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">provider</td><td>SSL provider name (openssl | matrixssl | est | nanossl).</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga541aec6f41d797ea79ca2df68836bc8b"></a>
<div class="api">
<div class="prototype">
void
mprVerifySslDepth
(struct MprSsl *ssl, int depth)
</div>
<div class="apiDetail">
<p>Control the depth of SSL SSL certificate verification.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">depth</td><td>Set to the number of intermediate certificates to verify. Defaults to 1.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1gaa94da504a06310268bed77f129201803"></a>
<div class="api">
<div class="prototype">
void
mprVerifySslIssuer
(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Control the verification of SSL certificate issuers.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">on</td><td>Set to true to enable SSL certificate issuer verification.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_ssl_1ga4af0a4a1cfe174e1782027fc09faaeee"></a>
<div class="api">
<div class="prototype">
void
mprVerifySslPeer
(struct MprSsl *ssl, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Require verification of peer certificates.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssl</td><td>SSL instance returned from <a class="ref" href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802">mprCreateSsl</a></td>
<tr><td class="param">on</td><td>Set to true to enable peer SSL certificate verification.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<h1>MprString</h1>
<a name="group___mpr_string"></a>
<div class="api">
<div class="prototype">MprString</div>
<div class="apiDetail">
<p>Safe String Module.</p>
<dl><dt><b>Description</b>:</dt><dd>The MPR provides a suite of safe ascii string manipulation routines to help prevent buffer overflows and other potential security traps.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c"></a>
<div class="api">
<div class="prototype">
char *
fmt
(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Format a string into a static buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>This call format a string using printf style formatting arguments. A trailing null will always be appended. The call returns the size of the allocated string excluding the null.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Pointer to the buffer.</td>
<tr><td class="param">maxSize</td><td>Size of the buffer.</td>
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>Variable arguments to format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The buffer.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952"></a>
<div class="api">
<div class="prototype">
char *
fmtv
(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, va_list args)
</div>
<div class="apiDetail">
<p>Format a string into a statically allocated buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>This call format a string using printf style formatting arguments. A trailing null will always be appended. The call returns the size of the allocated string excluding the null.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Pointer to the buffer.</td>
<tr><td class="param">maxSize</td><td>Size of the buffer.</td>
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">args</td><td>Varargs argument obtained from va_start.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The buffer;.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga3274fba2fee514f336703ded246885f4"></a>
<div class="api">
<div class="prototype">
char *
itos
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> value)
</div>
<div class="apiDetail">
<p>Convert an integer to a string.</p>
<dl><dt><b>Description</b>:</dt><dd>This call converts the supplied 64 bit integer to a string using base 10.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">value</td><td>Integer value to convert.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string with the converted number.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780"></a>
<div class="api">
<div class="prototype">
char *
itosbuf
(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> value, int radix)
</div>
<div class="apiDetail">
<p>Convert an integer to a string buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>This call converts the supplied 64 bit integer into a string formatted into the supplied buffer according to the specified radix.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Pointer to the buffer that will hold the string.</td>
<tr><td class="param">size</td><td>Size of the buffer.</td>
<tr><td class="param">value</td><td>Integer value to convert.</td>
<tr><td class="param">radix</td><td>The base radix to use when encoding the number.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a reference to the string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb"></a>
<div class="api">
<div class="prototype">
char *
itosradix
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a> value, int radix)
</div>
<div class="apiDetail">
<p>Convert an integer to a string.</p>
<dl><dt><b>Description</b>:</dt><dd>This call converts the supplied 64 bit integer to a string according to the specified radix.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">value</td><td>Integer value to convert.</td>
<tr><td class="param">radix</td><td>The base radix to use when encoding the number.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated string with the converted number.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprEprintf
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Print a formatted message to the standard error channel.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a secure replacement for fprintf(stderr).</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>Variable arguments to format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of bytes written.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprFprintf
(struct MprFile *file, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Print a formatted message to a file descriptor.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a replacement for fprintf as part of the safe string MPR library. It minimizes memory use and uses a file descriptor instead of a File pointer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>MprFile object returned via <a class="ref" href="#group___mpr_file_1ga0cfed380f506b05b2eea9ec7e671a7f9">mprOpenFile</a></td>
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>Variable arguments to format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of bytes written.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
mprPrintf
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Formatted print.</p>
This is a secure verion of printf that can handle null args
<dl><dt><b>Description</b>:</dt><dd>This is a secure replacement for printf. It can handle null arguments without crashes.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>Variable arguments to format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of bytes written.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga2d741b3b924272af2121323cf1669a69"></a>
<div class="api">
<div class="prototype">
char *
mprPrintfCore
(char *buf, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxsize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, va_list args)
</div>
<div class="apiDetail">
<p>Format a string into a buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine will format the arguments into a result. If a buffer is supplied, it will be used. Otherwise if the buf argument is NULL, a buffer will be allocated. The arguments will be formatted up to the maximum size supplied by the maxsize argument. A trailing null will always be appended.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Optional buffer to contain the formatted result.</td>
<tr><td class="param">maxsize</td><td>Maximum size of the result.</td>
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">args</td><td>Variable arguments to format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of characters in the string.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb"></a>
<div class="api">
<div class="prototype">
char *
scamel
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Create a camel case version of the string.</p>
<dl><dt><b>Description</b>:</dt><dd>Copy a string into a newly allocated block and make the first character lower case.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>Pointer to the block to duplicate.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a newly allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2"></a>
<div class="api">
<div class="prototype">
int
scaselesscmp
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2)
</div>
<div class="apiDetail">
<p>Compare strings ignoring case.</p>
This is a safe replacement for strcasecmp. It can handle NULL args
<dl><dt><b>Description</b>:</dt><dd>Compare two strings ignoring case differences. This call operates similarly to strcmp.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s1</td><td>First string to compare.</td>
<tr><td class="param">s2</td><td>Second string to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if the strings are equivalent, &lt; 0 if s1 sorts lower than s2 in the collating sequence or &gt; 0 if it sorts higher.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
scaselessmatch
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2)
</div>
<div class="apiDetail">
<p>Compare strings ignoring case.</p>
This is similar to scaselesscmp but it returns a boolean
<dl><dt><b>Description</b>:</dt><dd>Compare two strings ignoring case differences.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s1</td><td>First string to compare.</td>
<tr><td class="param">s2</td><td>Second string to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns true if the strings are equivalent, otherwise false.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gacd3476278a75c78c76205094231fef4d"></a>
<div class="api">
<div class="prototype">
char *
schr
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, int c)
</div>
<div class="apiDetail">
<p>Find a character in a string.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a safe replacement for strchr. It can handle NULL args.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">c</td><td>Character to search for.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>If the character is found, the call returns a reference to the character position in the string. Otherwise, returns NULL.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46"></a>
<div class="api">
<div class="prototype">
char *
sclone
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Clone a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Copy a string into a newly allocated block.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>Pointer to the block to duplicate.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a newly allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga130862b0d455d9584014457bfeb4c139"></a>
<div class="api">
<div class="prototype">
int
scmp
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2)
</div>
<div class="apiDetail">
<p>Compare strings.</p>
<dl><dt><b>Description</b>:</dt><dd>Compare two strings. This is a safe replacement for strcmp. It can handle null args.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s1</td><td>First string to compare.</td>
<tr><td class="param">s2</td><td>Second string to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if the strings are identical. Return -1 if the first string is less than the second. Return 1 if the first string is greater than the second.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462"></a>
<div class="api">
<div class="prototype">
char *
scontains
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *pattern)
</div>
<div class="apiDetail">
<p>Find a pattern in a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Locate the first occurrence of pattern in a string.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>Pointer to the string to search.</td>
<tr><td class="param">pattern</td><td>String pattern to search for.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a reference to the start of the pattern in the string. If not found, returns NULL.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
scopy
(char *dest, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> destMax, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *src)
</div>
<div class="apiDetail">
<p>Copy a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Safe replacement for strcpy. Copy a string and ensure the destination buffer is not overflowed. The call returns the length of the resultant string or an error code if it will not fit into the target string. This is similar to strcpy, but it will enforce a maximum size for the copied string and will ensure it is always terminated with a null.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dest</td><td>Pointer to a pointer that will hold the address of the allocated block.</td>
<tr><td class="param">destMax</td><td>Maximum size of the target string in characters.</td>
<tr><td class="param">src</td><td>String to copy.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The number of characters in the target string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
sends
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *suffix)
</div>
<div class="apiDetail">
<p>Test if the string ends with a given pattern.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">suffix</td><td>Pattern to search for.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns TRUE if the pattern was found. Otherwise returns zero.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12"></a>
<div class="api">
<div class="prototype">
char *
sfmt
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Format a string.</p>
This is a secure verion of printf that can handle null args
<dl><dt><b>Description</b>:</dt><dd>Format the given arguments according to the printf style format. See mprPrintf for a full list of the format specifies. This is a secure replacement for sprintf, it can handle null arguments without crashes.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>Variable arguments for the format string.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a newly allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481"></a>
<div class="api">
<div class="prototype">
char *
sfmtv
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, va_list args)
</div>
<div class="apiDetail">
<p>Format a string.</p>
This is a secure verion of printf that can handle null args
<dl><dt><b>Description</b>:</dt><dd>Format the given arguments according to the printf style format. See mprPrintf for a full list of the format specifies. This is a secure replacement for sprintf, it can handle null arguments without crashes.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">args</td><td>Varargs argument obtained from va_start.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a newly allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a91ad9478d81a7aaf2593e8d9c3d06a14" class="ref">uint</a>
shash
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Compute a hash code for a string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">len</td><td>Length in characters of the string to include in the hash code.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an unsigned integer hash code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a91ad9478d81a7aaf2593e8d9c3d06a14" class="ref">uint</a>
shashlower
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Compute a caseless hash code for a string.</p>
<dl><dt><b>Description</b>:</dt><dd>This computes a hash code for the string after converting it to lower case.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">len</td><td>Length in characters of the string to include in the hash code.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an unsigned integer hash code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb"></a>
<div class="api">
<div class="prototype">
char *
sjoin
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, ...)
</div>
<div class="apiDetail">
<p>Catenate strings.</p>
<dl><dt><b>Description</b>:</dt><dd>This catenates strings together with an optional string separator. If the separator is NULL, not separator is used. This call accepts a variable list of strings to append, terminated by a null argument.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>First string to catentate.</td>
<tr><td class="param">...</td><td>Variable number of string arguments to append. Terminate list with NULL.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2"></a>
<div class="api">
<div class="prototype">
char *
sjoinv
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, va_list args)
</div>
<div class="apiDetail">
<p>Catenate strings.</p>
<dl><dt><b>Description</b>:</dt><dd>This catenates strings together with an optional string separator. If the separator is NULL, not separator is used. This call accepts a variable list of strings to append, terminated by a null argument.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>First string to catentate.</td>
<tr><td class="param">args</td><td>Varargs argument obtained from va_start.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gade405095134ad54db6dc94fcd6216961"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
slen
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Return the length of a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Safe replacement for strlen. This call returns the length of a string and tests if the length is less than a given maximum. It will return zero for NULL args.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to measure.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The length of the string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a"></a>
<div class="api">
<div class="prototype">
char *
slower
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Convert a string to lower case.</p>
<dl><dt><b>Description</b>:</dt><dd>Convert a string to its lower case equivalent.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to convert.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
smatch
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2)
</div>
<div class="apiDetail">
<p>Compare strings.</p>
<dl><dt><b>Description</b>:</dt><dd>Compare two strings. This is similar to <a class="ref" href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139">scmp</a> but it returns a boolean.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s1</td><td>First string to compare.</td>
<tr><td class="param">s2</td><td>Second string to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns true if the strings are equivalent, otherwise false.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972"></a>
<div class="api">
<div class="prototype">
int
sncaselesscmp
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Compare strings ignoring case.</p>
<dl><dt><b>Description</b>:</dt><dd>Compare two strings ignoring case differences for a given string length. This call operates similarly to strncasecmp.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s1</td><td>First string to compare.</td>
<tr><td class="param">s2</td><td>Second string to compare.</td>
<tr><td class="param">len</td><td>Length of characters to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if the strings are equivalent, &lt; 0 if s1 sorts lower than s2 in the collating sequence or &gt; 0 if it sorts higher.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4"></a>
<div class="api">
<div class="prototype">
char *
snclone
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Clone a substring.</p>
<dl><dt><b>Description</b>:</dt><dd>Copy a substring into a newly allocated block.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>Pointer to the block to duplicate.</td>
<tr><td class="param">len</td><td>Number of bytes to copy. The actual length copied is the minimum of the given length and the length of the supplied string. The result is null terminated.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a newly allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7"></a>
<div class="api">
<div class="prototype">
int
sncmp
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s1, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s2, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Compare strings.</p>
<dl><dt><b>Description</b>:</dt><dd>Compare two strings for a given string length. This call operates similarly to strncmp.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">s1</td><td>First string to compare.</td>
<tr><td class="param">s2</td><td>Second string to compare.</td>
<tr><td class="param">len</td><td>Length of characters to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if the strings are equivalent, &lt; 0 if s1 sorts lower than s2 in the collating sequence or &gt; 0 if it sorts higher.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573"></a>
<div class="api">
<div class="prototype">
char *
sncontains
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *pattern, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> limit)
</div>
<div class="apiDetail">
<p>Find a pattern in a string with a limit.</p>
<dl><dt><b>Description</b>:</dt><dd>Locate the first occurrence of pattern in a string, but do not search more than the given character limit.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>Pointer to the string to search.</td>
<tr><td class="param">pattern</td><td>String pattern to search for.</td>
<tr><td class="param">limit</td><td>Count of characters in the string to search.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a reference to the start of the pattern in the string. If not found, returns NULL.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
sncopy
(char *dest, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> destMax, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *src, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len)
</div>
<div class="apiDetail">
<p>Copy characters from a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Safe replacement for strncpy. Copy bytes from a string and ensure the target string is not overflowed. The call returns the length of the resultant string or an error code if it will not fit into the target string. This is similar to strcpy, but it will enforce a maximum size for the copied string and will ensure it is terminated with a null.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dest</td><td>Pointer to a pointer that will hold the address of the allocated block.</td>
<tr><td class="param">destMax</td><td>Maximum size of the target string in characters.</td>
<tr><td class="param">src</td><td>String to copy.</td>
<tr><td class="param">len</td><td>Maximum count of characters to copy.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a reference to the destination if successful or NULL if the string won&apos;t fit.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga835751c2314927f5a4865f663aed7de8"></a>
<div class="api">
<div class="prototype">
char *
spascal
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Create a Pascal case version of the string.</p>
<dl><dt><b>Description</b>:</dt><dd>Copy a string into a newly allocated block and make the first character upper case.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>Pointer to the block to duplicate.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a newly allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gab67674c48f5c02c68c4d094305118515"></a>
<div class="api">
<div class="prototype">
char *
spbrk
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *set)
</div>
<div class="apiDetail">
<p>Locate the a character in a string.</p>
<dl><dt><b>Description</b>:</dt><dd>This locates in the string the first occurence of any character from a given set of characters.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">set</td><td>Set of characters to scan for.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a reference to the first character from the given set. Returns NULL if none found.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45"></a>
<div class="api">
<div class="prototype">
char *
srchr
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, int c)
</div>
<div class="apiDetail">
<p>Find a character in a string by searching backwards.</p>
<dl><dt><b>Description</b>:</dt><dd>This locates in the string the last occurence of a character.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">c</td><td>Character to scan for.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a reference in the string to the requested character. Returns NULL if none found.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b"></a>
<div class="api">
<div class="prototype">
char *
srejoin
(char *buf, ...)
</div>
<div class="apiDetail">
<p>Append strings to an existing string and reallocate as required.</p>
<dl><dt><b>Description</b>:</dt><dd>Append a list of strings to an existing string. The list of strings is terminated by a null argument. The call returns the size of the allocated block.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Existing (allocated) string to reallocate. May be null. May not be a string literal.</td>
<tr><td class="param">...</td><td>Variable number of string arguments to append. Terminate list with NULL.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga89a414007291955a580d862f52ce2baa"></a>
<div class="api">
<div class="prototype">
char *
srejoinv
(char *buf, va_list args)
</div>
<div class="apiDetail">
<p>Append strings to an existing string and reallocate as required.</p>
<dl><dt><b>Description</b>:</dt><dd>Append a list of strings to an existing string. The list of strings is terminated by a null argument. The call returns the size of the allocated block.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Existing (allocated) string to reallocate. May be null. May not be a string literal.</td>
<tr><td class="param">args</td><td>Varargs argument obtained from va_start.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns an allocated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
sspn
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *set)
</div>
<div class="apiDetail">
<p>Find the end of a spanning prefix.</p>
<dl><dt><b>Description</b>:</dt><dd>This scans the given string for characters from the set and returns a reference to the first character not in the set.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">set</td><td>Set of characters to span.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a reference to the first character after the spanning set.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
sstarts
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *prefix)
</div>
<div class="apiDetail">
<p>Test if the string starts with a given pattern.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">prefix</td><td>Pattern to search for.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns TRUE if the pattern was found. Otherwise returns zero.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gae66616518d07c30d19286e06ebbde2db"></a>
<div class="api">
<div class="prototype">
char *
ssub
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> offset, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> length)
</div>
<div class="apiDetail">
<p>Create a substring.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to examine.</td>
<tr><td class="param">offset</td><td>Starting offset within str for the beginning of the substring.</td>
<tr><td class="param">length</td><td>Length of the substring in characters.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a newly allocated substring.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090"></a>
<div class="api">
<div class="prototype">
char *
stemplate
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, struct MprHash *tokens)
</div>
<div class="apiDetail">
<p>Replace template tokens in a string with values from a lookup table.</p>
Tokens are ${variable} references
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to expand.</td>
<tr><td class="param">tokens</td><td>Hash table of token values to use.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An expanded string. May return the original string if no &quot;$&quot; references are present.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a>
stoi
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Convert a string to an integer.</p>
<dl><dt><b>Description</b>:</dt><dd>This call converts the supplied string to an integer using base 10.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>Pointer to the string to parse.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The integer equivalent value of the string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga851760bd4787be87c785d158892eaf82"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a168afaa12b2c08e4ae1d11ea4c296e64" class="ref">int64</a>
stoiradix
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, int radix, int *err)
</div>
<div class="apiDetail">
<p>Convert a string to an integer.</p>
<dl><dt><b>Description</b>:</dt><dd>This call converts the supplied string to an integer using the specified radix (base).</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>Pointer to the string to parse.</td>
<tr><td class="param">radix</td><td>Base to use when parsing the string.</td>
<tr><td class="param">err</td><td>Return error code. Set to 0 if successful.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The integer equivalent value of the string.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1gad8ce8e873964777734fcf16459fcd177"></a>
<div class="api">
<div class="prototype">
char *
stok
(char *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *delim, char **last)
</div>
<div class="apiDetail">
<p>Tokenize a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Split a string into tokens.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to tokenize.</td>
<tr><td class="param">delim</td><td>Set of characters that are used as token separators.</td>
<tr><td class="param">last</td><td>Last token pointer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the next token.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00"></a>
<div class="api">
<div class="prototype">
char *
strim
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *set, int where)
</div>
<div class="apiDetail">
<p>Trim a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Trim leading and trailing characters off a string.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to trim.</td>
<tr><td class="param">set</td><td>String of characters to remove.</td>
<tr><td class="param">where</td><td>Flags to indicate trim from the start, end or both. Use MPR_TRIM_START, MPR_TRIM_END, MPR_TRIM_BOTH.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the trimmed string. May not equal str.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319" class="ref">supper</a></dd></dl>
</div>
</div>
<a name="group___mpr_string_1ga2517aeeff1cb0806c6c2491406a65319"></a>
<div class="api">
<div class="prototype">
char *
supper
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *str)
</div>
<div class="apiDetail">
<p>Convert a string to upper case.</p>
<dl><dt><b>Description</b>:</dt><dd>Convert a string to its upper case equivalent.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">str</td><td>String to convert.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a pointer to the converted string. Will always equal str.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_string" class="ref">MprString</a>, <a href="#group___mpr_string_1gabf10ae3bef0267314c1a4a66ace2965c" class="ref">fmt</a>, <a href="#group___mpr_string_1ga14db538ef7e8224840f6349cd4e94952" class="ref">fmtv</a>, <a href="#group___mpr_string_1ga3274fba2fee514f336703ded246885f4" class="ref">itos</a>, <a href="#group___mpr_string_1gabe1fb7ce5588a9f2ccc311f1dad44780" class="ref">itosbuf</a>, <a href="#group___mpr_string_1ga3fdd7eab89b37f294f6181f352d7b1bb" class="ref">itosradix</a>, <a href="#group___mpr_string_1ga0cea68b46722b2c2790d72d69cdb7892" class="ref">mprEprintf</a>, <a href="#group___mpr_string_1gae16e7d6d4e162a0a4bd120999994f908" class="ref">mprFprintf</a>, <a href="#group___mpr_string_1ga46a349c094d8523f31190345c4a3eeb1" class="ref">mprPrintf</a>, <a href="#group___mpr_string_1gabba8458242234f65e8ed9e3fbe190dfb" class="ref">scamel</a>, <a href="#group___mpr_string_1gaf9cb27956141ddc4724cca9903fa69b2" class="ref">scaselesscmp</a>, <a href="#group___mpr_string_1ga021eac46fe21719fb1f9c9d257f64280" class="ref">scaselessmatch</a>, <a href="#group___mpr_string_1gacd3476278a75c78c76205094231fef4d" class="ref">schr</a>, <a href="#group___mpr_string_1ga9f21afff72f27c5504c4188324a8ff46" class="ref">sclone</a>, <a href="#group___mpr_string_1ga130862b0d455d9584014457bfeb4c139" class="ref">scmp</a>, <a href="#group___mpr_string_1ga3e0b725c7dc165d8e468928ddc1a4462" class="ref">scontains</a>, <a href="#group___mpr_string_1ga96df0c576bf6004507a3d0d11e18599a" class="ref">scopy</a>, <a href="#group___mpr_string_1ga2bec6f1bdddf77d00badb855098b9ec6" class="ref">sends</a>, <a href="#group___mpr_string_1ga4a005b18a11bbfb1ed24a09111c9be12" class="ref">sfmt</a>, <a href="#group___mpr_string_1gaae9073f3f178bdf2a75ddc9cbeb95481" class="ref">sfmtv</a>, <a href="#group___mpr_string_1ga28eb81d75667d4866e1cf05c0ae5d3c5" class="ref">shash</a>, <a href="#group___mpr_string_1ga0fa08b3d620074fc5959db864f0d448a" class="ref">shashlower</a>, <a href="#group___mpr_string_1ga7cd1d95fc19a644ec75f713d8b2fd9fb" class="ref">sjoin</a>, <a href="#group___mpr_string_1gaeedb5790ac6e89b799cf680e398b24b2" class="ref">sjoinv</a>, <a href="#group___mpr_string_1gade405095134ad54db6dc94fcd6216961" class="ref">slen</a>, <a href="#group___mpr_string_1ga9ed9ab2286e802e7001d13a2a3fb740a" class="ref">slower</a>, <a href="#group___mpr_string_1gabe7d2af6c4afc8a57904b9276a43ffea" class="ref">smatch</a>, <a href="#group___mpr_string_1ga30d6259caa94ed51abd25be83c0c4972" class="ref">sncaselesscmp</a>, <a href="#group___mpr_string_1gafc391546b97fb1fefb3dd78a96acb1b4" class="ref">snclone</a>, <a href="#group___mpr_string_1ga5217429e3f1dd3731530fe287bd893a7" class="ref">sncmp</a>, <a href="#group___mpr_string_1ga264efcf6cbe5b0258e4947b9d1fce573" class="ref">sncontains</a>, <a href="#group___mpr_string_1ga9e34c10326cd5ffd7a9865bb224960b0" class="ref">sncopy</a>, <a href="#group___mpr_string_1ga835751c2314927f5a4865f663aed7de8" class="ref">spascal</a>, <a href="#group___mpr_string_1gab67674c48f5c02c68c4d094305118515" class="ref">spbrk</a>, <a href="#group___mpr_string_1gaaebeb2311c90e1689b4adb5b2c068f45" class="ref">srchr</a>, <a href="#group___mpr_string_1ga22fb1137e2e3da0a394d08980d31196b" class="ref">srejoin</a>, <a href="#group___mpr_string_1ga89a414007291955a580d862f52ce2baa" class="ref">srejoinv</a>, <a href="#group___mpr_string_1ga812228240ff7b596dd2caaac2b9c5a35" class="ref">sspn</a>, <a href="#group___mpr_string_1ga5eec22bfd3a58a8c344d30175849f2ee" class="ref">sstarts</a>, <a href="#group___mpr_string_1gae66616518d07c30d19286e06ebbde2db" class="ref">ssub</a>, <a href="#group___mpr_string_1gaa1d5a78d1cabfb34f12c883d68007090" class="ref">stemplate</a>, <a href="#group___mpr_string_1gab24da0fe30b572a18321fa16e3dbfa19" class="ref">stoi</a>, <a href="#group___mpr_string_1ga851760bd4787be87c785d158892eaf82" class="ref">stoiradix</a>, <a href="#group___mpr_string_1gad8ce8e873964777734fcf16459fcd177" class="ref">stok</a>, <a href="#group___mpr_string_1ga9f8d30988495fa192ec7409abc219b00" class="ref">strim</a></dd></dl>
</div>
</div>
<h1>MprSynch</h1>
<a name="group___mpr_synch"></a>
<div class="api">
<div class="prototype">MprSynch</div>
<div class="apiDetail">
<p>Multithreaded Synchronization Services.</p>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3"></a>
<div class="api">
<div class="prototype">
void
mprAtomicAdd
(volatile int *target, int value)
</div>
<div class="apiDetail">
<p>Atomic Add.</p>
This is a lock free function
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">target</td><td>Address of the target word to add to.</td>
<tr><td class="param">value</td><td>Value to add to the target.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99"></a>
<div class="api">
<div class="prototype">
void
mprAtomicAdd64
(volatile int64 *target, int value)
</div>
<div class="apiDetail">
<p>Atomic 64 bit Add.</p>
This is a lock free function
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">target</td><td>Address of the target word to add to.</td>
<tr><td class="param">value</td><td>Value to add to the target.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d"></a>
<div class="api">
<div class="prototype">
void
mprAtomicBarrier
()
</div>
<div class="apiDetail">
<p>Apply a full (read+write) memory barrier.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749"></a>
<div class="api">
<div class="prototype">
int
mprAtomicCas
(void *volatile *target, void *expected, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *value)
</div>
<div class="apiDetail">
<p>Atomic Compare and Swap.</p>
This is a lock free function
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">target</td><td>Address of the target word to swap.</td>
<tr><td class="param">expected</td><td>Expected value of the target.</td>
<tr><td class="param">value</td><td>New value to store at the target.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>TRUE if the swap was successful.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7"></a>
<div class="api">
<div class="prototype">
void *
mprAtomicExchange
(void *volatile *target, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *value)
</div>
<div class="apiDetail">
<p>Exchange the target and a value.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">target</td><td>Address of the target word to exchange.</td>
<tr><td class="param">value</td><td>Value to store to the target.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd"></a>
<div class="api">
<div class="prototype">
void
mprAtomicListInsert
(void *volatile *head, volatile void **link, void *item)
</div>
<div class="apiDetail">
<p>Atomic list insertion.</p>
Inserts &quot;item&quot; at the &quot;head&quot; of the list. The &quot;link&quot; field is the next field in item. This is a lock-free function
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">head</td><td>list head.</td>
<tr><td class="param">link</td><td>Reference to the list head link field.</td>
<tr><td class="param">item</td><td>Item to insert.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_cond" class="ref">MprCond</a> *
mprCreateCond
()
</div>
<div class="apiDetail">
<p>Create a condition lock variable.</p>
<dl><dt><b>Description</b>:</dt><dd>This call creates a condition variable object that can be used in <a class="ref" href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7">mprWaitForCond</a> and <a class="ref" href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b">mprSignalCond</a> calls.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga68fe682a34151374ac03be971192a54d"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *
mprCreateLock
()
</div>
<div class="apiDetail">
<p>Create a Mutex lock object.</p>
<dl><dt><b>Description</b>:</dt><dd>This call creates a Mutex lock object that can be used in <a class="ref" href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede">mprLock</a>, <a class="ref" href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d">mprTryLock</a> and <a class="ref" href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad">mprUnlock</a> calls.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_spin" class="ref">MprSpin</a> *
mprCreateSpinLock
()
</div>
<div class="apiDetail">
<p>Create a spin lock lock object.</p>
<dl><dt><b>Description</b>:</dt><dd>This call creates a spinlock object that can be used in <a class="ref" href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795">mprSpinLock</a>, and <a class="ref" href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e">mprSpinUnlock</a> calls. Spin locks using <a class="ref" href="#struct_mpr_spin">MprSpin</a> are much faster than <a class="ref" href="#struct_mpr_mutex">MprMutex</a> based locks on some systems.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3"></a>
<div class="api">
<div class="prototype">
void
mprGlobalLock
()
</div>
<div class="apiDetail">
<p>Globally lock the application.</p>
<dl><dt><b>Description</b>:</dt><dd>This call asserts the application global lock so that other threads calling mprGlobalLock will block until the current thread calls mprGlobalUnlock. WARNING: Use this API very sparingly.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a"></a>
<div class="api">
<div class="prototype">
void
mprGlobalUnlock
()
</div>
<div class="apiDetail">
<p>Unlock the global mutex.</p>
<dl><dt><b>Description</b>:</dt><dd>This call unlocks the global mutex previously locked via mprGlobalLock.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *
mprInitLock
(<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *mutex)
</div>
<div class="apiDetail">
<p>Initialize a statically allocated Mutex lock object.</p>
<dl><dt><b>Description</b>:</dt><dd>This call initialized a Mutex lock object without allocation. The object can then be used used in <a class="ref" href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede">mprLock</a>, <a class="ref" href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d">mprTryLock</a> and <a class="ref" href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad">mprUnlock</a> calls.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mutex</td><td>Reference to an <a class="ref" href="#struct_mpr_mutex">MprMutex</a> structure to initialize.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A reference to the supplied mutex. Returns null on errors.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_spin" class="ref">MprSpin</a> *
mprInitSpinLock
(<a href="#struct_mpr_spin" class="ref">MprSpin</a> *lock)
</div>
<div class="apiDetail">
<p>Initialize a statically allocated spinlock object.</p>
<dl><dt><b>Description</b>:</dt><dd>This call initialized a spinlock lock object without allocation. The object can then be used used in <a class="ref" href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795">mprSpinLock</a> and <a class="ref" href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e">mprSpinUnlock</a> calls.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">lock</td><td>Reference to a static <a class="ref" href="#struct_mpr_spin">MprSpin</a> object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A reference to the <a class="ref" href="#struct_mpr_spin">MprSpin</a> object. Returns null on errors.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gad193cb5549a1101dc17177f046144ede"></a>
<div class="api">
<div class="prototype">
void
mprLock
(<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *lock)
</div>
<div class="apiDetail">
<p>Lock access.</p>
<dl><dt><b>Description</b>:</dt><dd>This call asserts a lock on the given lock mutex so that other threads calling mprLock will block until the current thread calls mprUnlock.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b"></a>
<div class="api">
<div class="prototype">
void
mprResetCond
(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond)
</div>
<div class="apiDetail">
<p>Reset a condition variable.</p>
This sets the condition variable to the unsignalled condition
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cond</td><td>Condition variable object created via <a class="ref" href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54">mprCreateCond</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b"></a>
<div class="api">
<div class="prototype">
void
mprSignalCond
(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond)
</div>
<div class="apiDetail">
<p>Signal a condition lock variable.</p>
<dl><dt><b>Description</b>:</dt><dd>Signal a condition variable and set it to the triggered status. Existing or future caller of <a class="ref" href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7">mprWaitForCond</a> will be awakened. The condition variable will be automatically reset when the waiter awakes. Should only be used for single waiters. Use mprSignalMultiCond for use with multiple waiters.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cond</td><td>Condition variable object created via <a class="ref" href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54">mprCreateCond</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b"></a>
<div class="api">
<div class="prototype">
void
mprSignalMultiCond
(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond)
</div>
<div class="apiDetail">
<p>Signal a condition lock variable for use with multiple waiters.</p>
<dl><dt><b>Description</b>:</dt><dd>Signal a condition variable and set it to the triggered status. Existing or future callers of <a class="ref" href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7">mprWaitForCond</a> will be awakened. The conditional variable will not be automatically reset and must be reset manually via mprResetCond.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cond</td><td>Condition variable object created via <a class="ref" href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54">mprCreateCond</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795"></a>
<div class="api">
<div class="prototype">
void
mprSpinLock
(<a href="#struct_mpr_spin" class="ref">MprSpin</a> *lock)
</div>
<div class="apiDetail">
<p>Lock a spinlock.</p>
<dl><dt><b>Description</b>:</dt><dd>This call asserts a lock on the given spinlock so that other threads calling mprSpinLock will block until the curren thread calls mprSpinUnlock.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e"></a>
<div class="api">
<div class="prototype">
void
mprSpinUnlock
(<a href="#struct_mpr_spin" class="ref">MprSpin</a> *lock)
</div>
<div class="apiDetail">
<p>Unlock a spinlock.</p>
<dl><dt><b>Description</b>:</dt><dd>This call unlocks a spinlock previously locked via mprSpinLock or mprTrySpinLock.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprTryLock
(<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *lock)
</div>
<div class="apiDetail">
<p>Attempt to lock access.</p>
<dl><dt><b>Description</b>:</dt><dd>This call attempts to assert a lock on the given lock mutex so that other threads calling mprLock or mprTryLock will block until the current thread calls mprUnlock.</dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if the successful in locking the mutex. Returns a negative MPR error code if unsuccessful.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1gac257b932fcc7140852e6830640d2301b"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprTrySpinLock
(<a href="#struct_mpr_spin" class="ref">MprSpin</a> *lock)
</div>
<div class="apiDetail">
<p>Attempt to lock access on a spin lock.</p>
<dl><dt><b>Description</b>:</dt><dd>This call attempts to assert a lock on the given spin lock so that other threads calling mprSpinLock or mprTrySpinLock will block until the current thread calls mprSpinUnlock.</dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if the successful in locking the spinlock. Returns a negative MPR error code if unsuccessful.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad"></a>
<div class="api">
<div class="prototype">
void
mprUnlock
(<a href="#struct_mpr_mutex" class="ref">MprMutex</a> *lock)
</div>
<div class="apiDetail">
<p>Unlock a mutex.</p>
<dl><dt><b>Description</b>:</dt><dd>This call unlocks a mutex previously locked via mprLock or mprTryLock.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga2902c6005212638d289e867d567e16d7"></a>
<div class="api">
<div class="prototype">
int
mprWaitForCond
(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait for a condition lock variable.</p>
<dl><dt><b>Description</b>:</dt><dd>Wait for a condition lock variable to be signaled. If the condition is signaled before the timeout expires, this call will reset the condition variable and return. This way, it automatically resets the variable for future waiters.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cond</td><td>Condition variable object created via <a class="ref" href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54">mprCreateCond</a></td>
<tr><td class="param">timeout</td><td>Time in milliseconds to wait for the condition variable to be signaled.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the event was signalled. Returns &lt; 0 for a timeout.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289" class="ref">mprWaitForMultiCond</a></dd></dl>
</div>
</div>
<a name="group___mpr_synch_1ga0b4bca5c7c7922fddc14e08213892289"></a>
<div class="api">
<div class="prototype">
int
mprWaitForMultiCond
(<a href="#struct_mpr_cond" class="ref">MprCond</a> *cond, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait for a condition lock variable for use with multiple waiters.</p>
<dl><dt><b>Description</b>:</dt><dd>Wait for a condition lock variable to be signaled. Multiple waiters are supported and the condition variable must be manually reset via mprResetCond. The condition may signaled before calling mprWaitForMultiCond.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cond</td><td>Condition variable object created via <a class="ref" href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54">mprCreateCond</a></td>
<tr><td class="param">timeout</td><td>Time in milliseconds to wait for the condition variable to be signaled.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the event was signalled. Returns &lt; 0 for a timeout.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_cond" class="ref">MprCond</a>, <a href="#struct_mpr_mutex" class="ref">MprMutex</a>, <a href="#struct_mpr_spin" class="ref">MprSpin</a>, <a href="#group___mpr_synch_1gaf64ed09ca5470083fd11e73c9611b3f3" class="ref">mprAtomicAdd</a>, <a href="#group___mpr_synch_1ga953be70aa977b3204ca4df3983db5d99" class="ref">mprAtomicAdd64</a>, <a href="#group___mpr_synch_1gafa0c319f7e96e03123a67cfd50c1a46d" class="ref">mprAtomicBarrier</a>, <a href="#group___mpr_synch_1gadfb5ebec7f3b7ce4922916dcc49a5749" class="ref">mprAtomicCas</a>, <a href="#group___mpr_synch_1gaf31f12f66dadcc39b4b5d393737afdc7" class="ref">mprAtomicExchange</a>, <a href="#group___mpr_synch_1ga6b59ddeb275360c3c428f66c649fc5cd" class="ref">mprAtomicListInsert</a>, <a href="#group___mpr_synch_1ga56428893b86e3bf9e3dd411587a2cf54" class="ref">mprCreateCond</a>, <a href="#group___mpr_synch_1ga68fe682a34151374ac03be971192a54d" class="ref">mprCreateLock</a>, <a href="#group___mpr_synch_1gabd38617b3f690c3b21487982b440d1bb" class="ref">mprCreateSpinLock</a>, <a href="#group___mpr_synch_1ga45e1ba55d1912b43ca7c638e489b4bc3" class="ref">mprGlobalLock</a>, <a href="#group___mpr_synch_1gacafc4433dfa8809f7e764683dcb7639a" class="ref">mprGlobalUnlock</a>, <a href="#group___mpr_synch_1gac0374683f5c3f5b97199b31fd94630d3" class="ref">mprInitLock</a>, <a href="#group___mpr_synch_1ga2e9ecc3090f226d6f6bb9c6bd35ca811" class="ref">mprInitSpinLock</a>, <a href="#group___mpr_synch_1gad193cb5549a1101dc17177f046144ede" class="ref">mprLock</a>, <a href="#group___mpr_synch_1ga3db47bdecb58c2c52197d625377cf71b" class="ref">mprResetCond</a>, <a href="#group___mpr_synch_1gab014329886bcb9a8cb9b970afc30378b" class="ref">mprSignalCond</a>, <a href="#group___mpr_synch_1ga9b20d1bf69e28579dd968c1c0daf976b" class="ref">mprSignalMultiCond</a>, <a href="#group___mpr_synch_1gaf2a84bc9cee343c8ebfc3bfa49751795" class="ref">mprSpinLock</a>, <a href="#group___mpr_synch_1gaeb11c8a1f0c2c3f905967a932626121e" class="ref">mprSpinUnlock</a>, <a href="#group___mpr_synch_1ga2b3b8e824b92499192ea48512e31c26d" class="ref">mprTryLock</a>, <a href="#group___mpr_synch_1gac257b932fcc7140852e6830640d2301b" class="ref">mprTrySpinLock</a>, <a href="#group___mpr_synch_1ga40a516fe58b4b2998852cd0c853027ad" class="ref">mprUnlock</a>, <a href="#group___mpr_synch_1ga2902c6005212638d289e867d567e16d7" class="ref">mprWaitForCond</a></dd></dl>
</div>
</div>
<h1>MprTestService</h1>
<a name="group___mpr_test_service"></a>
<div class="api">
<div class="prototype">MprTestService</div>
<div class="apiDetail">
<p>Test service facility.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>activeThreadCount</td><td>
Currently active test threads.
</td>
<tr><td class="param">int</td><td><td>argc</td><td>
Count of arguments.
</td>
<tr><td class="param">char **</td><td><td>argv</td><td>
Arguments for test (not alloced).
</td>
<tr><td class="param">bool</td><td><td>continueOnFailures</td><td>
Keep testing on failures.
</td>
<tr><td class="param">bool</td><td><td>debugOnFailures</td><td>
Break to the debugger.
</td>
<tr><td class="param">int</td><td><td>echoCmdLine</td><td>
Echo the command line.
</td>
<tr><td class="param">int</td><td><td>firstArg</td><td>
Count of arguments.
</td>
<tr><td class="param">MprList *</td><td><td>groups</td><td>
Master list of test groups.
</td>
<tr><td class="param">int</td><td><td>iterations</td><td>
Times to run the test.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multi-thread sync.
</td>
<tr><td class="param">cchar *</td><td><td>name</td><td>
Name for entire test.
</td>
<tr><td class="param">int</td><td><td>numThreads</td><td>
Number of test threads.
</td>
<tr><td class="param">bool</td><td><td>singleStep</td><td>
Pause between tests.
</td>
<tr><td class="param">MprTime</td><td><td>start</td><td>
When testing began.
</td>
<tr><td class="param">int</td><td><td>testDepth</td><td>
Depth of entire test.
</td>
<tr><td class="param">MprList *</td><td><td>testFilter</td><td>
Test groups to run.
</td>
<tr><td class="param">MprList *</td><td><td>threadData</td><td>
Per thread objects.
</td>
<tr><td class="param">int</td><td><td>totalFailedCount</td><td>
Total count of failing tests.
</td>
<tr><td class="param">int</td><td><td>totalTestCount</td><td>
Total count of all tests.
</td>
<tr><td class="param">int</td><td><td>verbose</td><td>
Output activity trace.
</td>
<tr><td class="param">int</td><td><td>workers</td><td>
Count of worker threads.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1ga7f44ec8c71e361a86def92a6d0911c79"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
assertTrue
(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *loc, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> success, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *msg)
</div>
<div class="apiDetail">
<p>Test assert.</p>
<dl><dt><b>Description</b>:</dt><dd>This is the primary assertion test routine for unit tests. This is typically invoked by using the <a class="ref" href="#group___mpr_1ga80adc8087f3a20a2669565b281d57a38">assert</a> macro.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">gp</td><td>Test group reference.</td>
<tr><td class="param">loc</td><td>Program location string including filename and line number.</td>
<tr><td class="param">success</td><td>Boolean indicating whether the test passed or failed.</td>
<tr><td class="param">msg</td><td>Message to display if the test failed.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1gacce17c35eeabad004c762116576636d6"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *
mprAddTestGroup
(<a href="#group___mpr_test_service" class="ref">MprTestService</a> *ts, <a href="#struct_mpr_test_def" class="ref">MprTestDef</a> *def)
</div>
<div class="apiDetail">
<p>Add a test group to the test service.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ts</td><td>Test service object returned from <a class="ref" href="#group___mpr_test_service_1ga5f0e737ddfec241ca2387dee7cf068ee">mprCreateTestService</a></td>
<tr><td class="param">def</td><td>Test group definition to add.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd><a class="ref" href="#struct_mpr_test_group">MprTestGroup</a> record for the test group.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1ga5f0e737ddfec241ca2387dee7cf068ee"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_test_service" class="ref">MprTestService</a> *
mprCreateTestService
()
</div>
<div class="apiDetail">
<p>Create the test service.</p>
<dl><dt>Returns:</dt><dd>An MprTestService control object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1ga7cc536ed137426a2c12419fb71cfbad9"></a>
<div class="api">
<div class="prototype">
int
mprParseTestArgs
(<a href="#group___mpr_test_service" class="ref">MprTestService</a> *ts, int argc, char **argv, <a href="#group___mpr_test_service_1gad9ed01b45cca9fda02f9eb692e28cd69" class="ref">MprTestParser</a> extraParser)
</div>
<div class="apiDetail">
<p>Parse test command arguments.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ts</td><td>Test service object returned from <a class="ref" href="#group___mpr_test_service_1ga5f0e737ddfec241ca2387dee7cf068ee">mprCreateTestService</a></td>
<tr><td class="param">argc</td><td>Count of arguments in argv.</td>
<tr><td class="param">argv</td><td>Argument array.</td>
<tr><td class="param">extraParser</td><td>Callback function to invoke to parse non-standard arguments.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if the command have been successfully parsed. Otherwise return a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1ga240dcddc4f94f7020a5f19f62f50c349"></a>
<div class="api">
<div class="prototype">
void
mprReportTestResults
(<a href="#group___mpr_test_service" class="ref">MprTestService</a> *ts)
</div>
<div class="apiDetail">
<p>Report the test results.</p>
<dl><dt><b>Description</b>:</dt><dd>Test results are written to stdout.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ts</td><td>Test service object returned from <a class="ref" href="#group___mpr_test_service_1ga5f0e737ddfec241ca2387dee7cf068ee">mprCreateTestService</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1gaeb846dc87e4083577ca675746525425a"></a>
<div class="api">
<div class="prototype">
void
mprResetTestGroup
(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp)
</div>
<div class="apiDetail">
<p>Reset a test group.</p>
<dl><dt><b>Description</b>:</dt><dd>This resets the success/fail flag for the group.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">gp</td><td>Test group reference.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1ga7db4de7f1b7418ed3a955567fe67e893"></a>
<div class="api">
<div class="prototype">
int
mprRunTests
(<a href="#group___mpr_test_service" class="ref">MprTestService</a> *ts)
</div>
<div class="apiDetail">
<p>Run the define unit tests.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ts</td><td>Test service object returned from <a class="ref" href="#group___mpr_test_service_1ga5f0e737ddfec241ca2387dee7cf068ee">mprCreateTestService</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1gafc5c0f319089d68b7ddc4838aec22db1"></a>
<div class="api">
<div class="prototype">
void
mprSignalTest2Complete
(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp)
</div>
<div class="apiDetail">
<p>Signal a test is complete.</p>
<dl><dt><b>Description</b>:</dt><dd>This awakens a thread that has called mprWaitForTest2ToComplete.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">gp</td><td>Test group reference.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1gabc396ef1ecce963fbcb17ee8d713d3c0"></a>
<div class="api">
<div class="prototype">
void
mprSignalTestComplete
(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp)
</div>
<div class="apiDetail">
<p>Signal a test is complete.</p>
<dl><dt><b>Description</b>:</dt><dd>This awakens a thread that has called mprWaitForTestToComplete.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">gp</td><td>Test group reference.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1ga8de80fc08cc763d79fa85689c5eb212a"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprWaitForTest2ToComplete
(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait for a test to complete.</p>
<dl><dt><b>Description</b>:</dt><dd>This blocks a thread until a test has completed and is signalled by another thread calling <a class="ref" href="#group___mpr_test_service_1gafc5c0f319089d68b7ddc4838aec22db1">mprSignalTest2Complete</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">gp</td><td>Test group reference.</td>
<tr><td class="param">timeout</td><td>Timeout in milliseconds to block waiting for the test to complete.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the test was completed within the timeout.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1ga24a30e124641f6b6d7f2da514e4b948c"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprWaitForTestToComplete
(<a href="#struct_mpr_test_group" class="ref">MprTestGroup</a> *gp, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait for a test to complete.</p>
<dl><dt><b>Description</b>:</dt><dd>This blocks a thread until a test has completed and is signalled by another thread calling <a class="ref" href="#group___mpr_test_service_1gabc396ef1ecce963fbcb17ee8d713d3c0">mprSignalTestComplete</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">gp</td><td>Test group reference.</td>
<tr><td class="param">timeout</td><td>Timeout in milliseconds to block waiting for the test to complete.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the test was completed within the timeout.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<h1>MprThread</h1>
<a name="group___mpr_thread"></a>
<div class="api">
<div class="prototype">MprThread</div>
<div class="apiDetail">
<p>Thread Service.</p>
<dl><dt><b>Description</b>:</dt><dd>The MPR provides a cross-platform thread abstraction above O/S native threads. It supports arbitrary thread creation, thread priorities, thread management and thread local storage. By using these thread primitives with the locking and synchronization primitives offered by <a class="ref" href="#struct_mpr_mutex">MprMutex</a>, <a class="ref" href="#struct_mpr_spin">MprSpin</a> and <a class="ref" href="#struct_mpr_cond">MprCond</a> - you can create cross platform multi-threaded applications.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" href="#struct_mpr_cond">MprCond</a> *</td><td><td>cond</td><td>
Multi-thread synchronization.
</td>
<tr><td class="param">void *</td><td><td>data</td><td>
Data argument.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d">MprThreadProc</a></td><td><td>entry</td><td>
Users thread entry point.
</td>
<tr><td class="param">int</td><td><td>isMain</td><td>
Is the main thread.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multi-thread locking.
</td>
<tr><td class="param">char *</td><td><td>name</td><td>
Name of thead for trace.
</td>
<tr><td class="param">MprOsThread</td><td><td>osThread</td><td>
O/S thread id.
</td>
<tr><td class="param">ulong</td><td><td>pid</td><td>
Owning process id.
</td>
<tr><td class="param">int</td><td><td>priority</td><td>
Current priority.
</td>
<tr><td class="param">ssize</td><td><td>stackSize</td><td>
Only VxWorks implements.
</td>
<tr><td class="param">int</td><td><td>stickyYield</td><td>
Yielded does not auto-clear after GC.
</td>
<tr><td class="param">int</td><td><td>yielded</td><td>
Thread has yielded to GC.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_thread" class="ref">MprThread</a> *
mprCreateThread
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, void *proc, void *data, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> stackSize)
</div>
<div class="apiDetail">
<p>Create a new thread.</p>
<dl><dt><b>Description</b>:</dt><dd>MPR threads are usually real O/S threads and can be used with the various locking services (<a class="ref" href="#struct_mpr_mutex">MprMutex</a>, <a class="ref" href="#struct_mpr_cond">MprCond</a>, <a class="ref" href="#struct_mpr_spin">MprSpin</a>) to enable scalable multithreaded applications.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Unique name to give the thread.</td>
<tr><td class="param">proc</td><td>Entry point function for the thread. <a class="ref" href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1">mprStartThread</a> will invoke this function to start the thread.</td>
<tr><td class="param">data</td><td>Thread private data stored in MprThread.data.</td>
<tr><td class="param">stackSize</td><td>Stack size to use for the thread. On VM based systems, increasing this value, does not necessarily incurr a real memory (working-set) increase. Set to zero for a default stack size.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A MprThread object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<a name="group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1a7c5ca1c1ea9197509c0e60d9f6a8fed7" class="ref">MprOsThread</a>
mprGetCurrentOsThread
()
</div>
<div class="apiDetail">
<p>Get the O/S thread.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the O/S thread ID for the currently executing thread.</dd></dl>
<dl><dt>Returns:</dt><dd>Returns a platform specific O/S thread ID. On Unix, this is a pthread reference. On other systems it is a thread integer value.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<a name="group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_thread" class="ref">MprThread</a> *
mprGetCurrentThread
()
</div>
<div class="apiDetail">
<p>Get the currently executing thread.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the thread object for the currently executing O/S thread.</dd></dl>
<dl><dt>Returns:</dt><dd>Returns a thread object representing the current O/S thread.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<a name="group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetThreadName
(<a href="#group___mpr_thread" class="ref">MprThread</a> *thread)
</div>
<div class="apiDetail">
<p>Get the thread name.</p>
<dl><dt><b>Description</b>:</dt><dd>MPR threads are usually real O/S threads and can be used with the various locking services (<a class="ref" href="#struct_mpr_mutex">MprMutex</a>, <a class="ref" href="#struct_mpr_cond">MprCond</a>, <a class="ref" href="#struct_mpr_spin">MprSpin</a>) to enable scalable multithreaded applications.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">thread</td><td>Thread object returned from <a class="ref" href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1">mprCreateThread</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a string name for the thread.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<a name="group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a"></a>
<div class="api">
<div class="prototype">
int
mprGetThreadPriority
(<a href="#group___mpr_thread" class="ref">MprThread</a> *thread)
</div>
<div class="apiDetail">
<p>Get the thread priroity.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the current priority for the specified thread.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">thread</td><td>Thread object returned by <a class="ref" href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1">mprCreateThread</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An integer MPR thread priority between 0 and 100 inclusive.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<a name="group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd"></a>
<div class="api">
<div class="prototype">
void
mprSetCurrentThreadPriority
(int priority)
</div>
<div class="apiDetail">
<p>Set the thread priroity for the current thread.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the current priority for the specified thread.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">priority</td><td>Priority to associate with the thread. Mpr thread priorities are are integer values between 0 and 100 inclusive with 50 being a normal priority. The MPR maps these priorities in a linear fashion onto native O/S priorites. Useful constants are: <ul><li>MPR_LOW_PRIORITY </li><li>MPR_NORMAL_PRIORITY </li><li>MPR_HIGH_PRIORITY</li></ul></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<a name="group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560"></a>
<div class="api">
<div class="prototype">
void
mprSetThreadPriority
(<a href="#group___mpr_thread" class="ref">MprThread</a> *thread, int priority)
</div>
<div class="apiDetail">
<p>Set the thread priroity.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the current priority for the specified thread.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">thread</td><td>Thread object returned by <a class="ref" href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1">mprCreateThread</a></td>
<tr><td class="param">priority</td><td>Priority to associate with the thread. Mpr thread priorities are are integer values between 0 and 100 inclusive with 50 being a normal priority. The MPR maps these priorities in a linear fashion onto native O/S priorites. Useful constants are: <ul><li>MPR_LOW_PRIORITY </li><li>MPR_NORMAL_PRIORITY </li><li>MPR_HIGH_PRIORITY</li></ul></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<a name="group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1"></a>
<div class="api">
<div class="prototype">
int
mprStartThread
(<a href="#group___mpr_thread" class="ref">MprThread</a> *thread)
</div>
<div class="apiDetail">
<p>Start a thread.</p>
<dl><dt><b>Description</b>:</dt><dd>Start a thread previously created via <a class="ref" href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1">mprCreateThread</a>. The thread will begin at the entry function defined in <a class="ref" href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1">mprCreateThread</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">thread</td><td>Thread object returned from <a class="ref" href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1">mprCreateThread</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d" class="ref">MprThreadProc</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<h1>MprTime</h1>
<a name="group___mpr_time"></a>
<div class="api">
<div class="prototype">MprTime</div>
<div class="apiDetail">
<p>Date and Time Service.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21"></a>
<div class="api">
<div class="prototype">
int
mprCompareTime
(<a href="#group___mpr_time" class="ref">MprTime</a> t1, <a href="#group___mpr_time" class="ref">MprTime</a> t2)
</div>
<div class="apiDetail">
<p>Compare two times.</p>
<dl><dt><b>Description</b>:</dt><dd>Compare two times and return a code indicating which is greater, less or equal.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">t1</td><td>First time.</td>
<tr><td class="param">t2</td><td>Second time.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if equal, -1 if t1 is less than t2 otherwise one.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3"></a>
<div class="api">
<div class="prototype">
int
mprCreateTimeService
()
</div>
<div class="apiDetail">
<p>Mpr time structure.</p>
<dl><dt><b>Description</b>:</dt><dd>MprTime is the cross platform time abstraction structure. Time is stored as milliseconds since the epoch: 00:00:00 UTC Jan 1 1970. MprTime is typically a 64 bit quantity.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57"></a>
<div class="api">
<div class="prototype">
void
mprDecodeLocalTime
(struct tm *timep, <a href="#group___mpr_time" class="ref">MprTime</a> time)
</div>
<div class="apiDetail">
<p>Decode a time value into a tokenized local time value.</p>
<dl><dt><b>Description</b>:</dt><dd>Safe replacement for localtime. This call converts the time value to local time and formats the as a struct tm.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">timep</td><td>Pointer to a tm structure to hold the result.</td>
<tr><td class="param">time</td><td>Time to format.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc"></a>
<div class="api">
<div class="prototype">
void
mprDecodeUniversalTime
(struct tm *timep, <a href="#group___mpr_time" class="ref">MprTime</a> time)
</div>
<div class="apiDetail">
<p>Decode a time value into a tokenized UTC time structure.</p>
<dl><dt><b>Description</b>:</dt><dd>Safe replacement for gmtime. This call converts the supplied time value to UTC time and parses the result into a tm structure.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">timep</td><td>Pointer to a tm structure to hold the result.</td>
<tr><td class="param">time</td><td>The time to format.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300"></a>
<div class="api">
<div class="prototype">
char *
mprFormatLocalTime
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="#group___mpr_time" class="ref">MprTime</a> time)
</div>
<div class="apiDetail">
<p>Convert a time value to local time and format as a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Safe replacement for ctime.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Time format string.</td>
<tr><td class="param">time</td><td>Time to format. Use mprGetTime to retrieve the current time.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The formatting time string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57"></a>
<div class="api">
<div class="prototype">
char *
mprFormatTm
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, struct tm *timep)
</div>
<div class="apiDetail">
<p>Format a time value as a local time.</p>
<dl><dt><b>Description</b>:</dt><dd>This call formats the time value supplied via timep.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>The time format to use.</td>
<tr><td class="param">timep</td><td>The time value to format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The formatting time string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga7c0a389bb64973c848209ba1969f2daf"></a>
<div class="api">
<div class="prototype">
char *
mprFormatUniversalTime
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="#group___mpr_time" class="ref">MprTime</a> time)
</div>
<div class="apiDetail">
<p>Convert a time value to universal time and format as a string.</p>
<dl><dt><b>Description</b>:</dt><dd>Safe replacement for ctime.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Time format string.</td>
<tr><td class="param">time</td><td>Time to format. Use mprGetTime to retrieve the current time.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The formatting time string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d"></a>
<div class="api">
<div class="prototype">
char *
mprGetDate
(char *fmt)
</div>
<div class="apiDetail">
<p>Get a string representation of the current date/time.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the current date/time as a string according to the given format.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Date formatting string. See strftime for acceptable date format specifiers. If null, then this routine uses the <a class="ref" href="#mpr_8h_1ac9fb49d5056d0731ac706c507d31d4e2">MPR_DEFAULT_DATE</a> format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An allocated date string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a>
mprGetElapsedTicks
(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> mark)
</div>
<div class="apiDetail">
<p>Get the elapsed time since a ticks mark.</p>
Create the ticks mark with
mprGetTicks()
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mark</td><td>Starting time stamp.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The time elapsed since the mark was taken.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga56c79ce10b54876dc9488694039a3ea9"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_time" class="ref">MprTime</a>
mprGetElapsedTime
(<a href="#group___mpr_time" class="ref">MprTime</a> mark)
</div>
<div class="apiDetail">
<p>Get the elapsed time since a starting time mark.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mark</td><td>Starting time created via <a class="ref" href="#group___mpr_time_1gaef18991a0e0a55e3a21bf3bf34cfa80b">mprGetTime()</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The time elapsed since the mark was taken.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a>
mprGetRemainingTicks
(<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> mark, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Return the time remaining until a timeout has elapsed.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mark</td><td>Starting time stamp.</td>
<tr><td class="param">timeout</td><td>Time in milliseconds.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Time in milliseconds until the timeout elapses.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1ga1d972a6ab180618674c5f9220f88d68a"></a>
<div class="api">
<div class="prototype">
<a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a>
mprGetTicks
()
</div>
<div class="apiDetail">
<p>Get the system time.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the system time in milliseconds. This is a monotonically increasing time counter. It does not represent wall-clock time.</dd></dl>
<dl><dt>Returns:</dt><dd>The system time in milliseconds.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1gaef18991a0e0a55e3a21bf3bf34cfa80b"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_time" class="ref">MprTime</a>
mprGetTime
()
</div>
<div class="apiDetail">
<p>Get the time.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the date/time in milliseconds since Jan 1 1970.</dd></dl>
<dl><dt>Returns:</dt><dd>The time in milliseconds since Jan 1 1970.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a>, <a href="#group___mpr_time_1gac592bf4081e72d463277963567db5aa4" class="ref">mprGetTimeZoneOffset</a></dd></dl>
</div>
</div>
<a name="group___mpr_time_1gac592bf4081e72d463277963567db5aa4"></a>
<div class="api">
<div class="prototype">
int
mprGetTimeZoneOffset
(<a href="#group___mpr_time" class="ref">MprTime</a> when)
</div>
<div class="apiDetail">
<p>Get the current timezone offset for a given time.</p>
<dl><dt><b>Description</b>:</dt><dd>Calculate the current timezone (including DST).</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">when</td><td>Time to examine to extract the timezone.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a timezone offset in msec. Local time == (UTC + offset).</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_time" class="ref">MprTime</a>, <a href="#group___mpr_time_1ga087ffc47d75b5f88dbfcabb8c3cd2d21" class="ref">mprCompareTime</a>, <a href="#group___mpr_time_1ga4e112c10b03eeb93a0e9da96c5e4fff3" class="ref">mprCreateTimeService</a>, <a href="#group___mpr_time_1ga1e078d6a9ff6fca1fc5cf3653264aa57" class="ref">mprDecodeLocalTime</a>, <a href="#group___mpr_time_1gad52cfde22b75a620147b661f796ba8dc" class="ref">mprDecodeUniversalTime</a>, <a href="#group___mpr_time_1gaaa51bed2a064d4440a0e327f9118a300" class="ref">mprFormatLocalTime</a>, <a href="#group___mpr_time_1ga668d4a60c1e767de5b364507b0884e57" class="ref">mprFormatTm</a>, <a href="#group___mpr_time_1ga8ecdc6cb45d8758203e09764faaf5e2d" class="ref">mprGetDate</a>, <a href="#group___mpr_time_1ga1f88b37382ba7d2e48289415df0383ea" class="ref">mprGetElapsedTicks</a>, <a href="#mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6" class="ref">mprGetHiResTicks</a>, <a href="#group___mpr_time_1ga431da15c3ff9707b89a7097a85bd90de" class="ref">mprGetRemainingTicks</a></dd></dl>
</div>
</div>
<h1>MprWaitHandler</h1>
<a name="group___mpr_wait_handler"></a>
<div class="api">
<div class="prototype">MprWaitHandler</div>
<div class="apiDetail">
<p>Wait Handler Service.</p>
<dl><dt><b>Description</b>:</dt><dd>Wait handlers provide callbacks for when I/O events occur. They provide a wait to service many I/O file descriptors without requiring a thread per descriptor.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="ref">mprCreateWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="ref">mprRecallWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="ref">mprRecallWaitHandlerByFd</a>, <a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="ref">mprRemoveWaitHandler</a>, <a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="ref">mprWaitOn</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" href="#struct_mpr_cond">MprCond</a> *</td><td><td>callbackComplete</td><td>
Signalled when a callback is complete.
</td>
<tr><td class="param">int</td><td><td>desiredMask</td><td>
Mask of desired events.
</td>
<tr><td class="param">MprDispatcher *</td><td><td>dispatcher</td><td>
Event dispatcher to use for I/O events.
</td>
<tr><td class="param">MprEvent *</td><td><td>event</td><td>
Event object to process I/O events.
</td>
<tr><td class="param">int</td><td><td>fd</td><td>
O/S File descriptor (sp-&gt;sock).
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Control flags.
</td>
<tr><td class="param">void *</td><td><td>handlerData</td><td>
Argument to pass to proc.
</td>
<tr><td class="param">struct MprWaitHandler *</td><td><td>next</td><td>
List linkage.
</td>
<tr><td class="param">int</td><td><td>notifierIndex</td><td>
Index for notifier.
</td>
<tr><td class="param">int</td><td><td>presentMask</td><td>
Mask of current events.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d">MprEventProc</a></td><td><td>proc</td><td>
Callback event procedure.
</td>
<tr><td class="param">struct MprWorker *</td><td><td>requiredWorker</td><td>
Designate the required worker thread to run the callback.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_wait_service">MprWaitService</a> *</td><td><td>service</td><td>
Wait service pointer.
</td>
<tr><td class="param">struct MprThread *</td><td><td>thread</td><td>
Thread executing the callback, set even if worker is null.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_wait_handler_1ga8aa37eb2e397ec2d78e6df15a0d303c5"></a>
<div class="api">
<div class="prototype">
int
mprCreateNotifierService
(<a href="#struct_mpr_wait_service" class="ref">MprWaitService</a> *ws)
</div>
<div class="apiDetail">
<p>Internal.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="ref">mprCreateWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="ref">mprRecallWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="ref">mprRecallWaitHandlerByFd</a>, <a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="ref">mprRemoveWaitHandler</a>, <a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="ref">mprWaitOn</a></dd></dl>
</div>
</div>
<a name="group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *
mprCreateWaitHandler
(int fd, int mask, <a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, void *proc, void *data, int flags)
</div>
<div class="apiDetail">
<p>Create a wait handler.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a wait handler that will be invoked when I/O of interest occurs on the specified file handle The wait handler is registered with the MPR event I/O mechanism.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fd</td><td>File descriptor.</td>
<tr><td class="param">mask</td><td>Mask of events of interest. This is made by oring MPR_READABLE and MPR_WRITABLE.</td>
<tr><td class="param">dispatcher</td><td>Dispatcher object to use for scheduling the I/O event.</td>
<tr><td class="param">proc</td><td>Callback function to invoke when an I/O event of interest has occurred.</td>
<tr><td class="param">data</td><td>Data item to pass to the callback.</td>
<tr><td class="param">flags</td><td>Wait handler flags. Use MPR_WAIT_NEW_DISPATCHER to auto-create a new dispatcher for each I/O event.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A new wait handler registered with the MPR event mechanism.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="ref">mprRecallWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="ref">mprRecallWaitHandlerByFd</a>, <a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="ref">mprRemoveWaitHandler</a>, <a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="ref">mprWaitOn</a></dd></dl>
</div>
</div>
<a name="group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc"></a>
<div class="api">
<div class="prototype">
void
mprRecallWaitHandler
(<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp)
</div>
<div class="apiDetail">
<p>Recall a wait handler.</p>
<dl><dt><b>Description</b>:</dt><dd>Signal that a wait handler should be recalled at the earliest opportunity. This is useful when a protocol stack has buffered data that must be processed regardless of whether more I/O occurs.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">wp</td><td>Wait handler to recall.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="ref">mprCreateWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="ref">mprRecallWaitHandlerByFd</a>, <a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="ref">mprRemoveWaitHandler</a>, <a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="ref">mprWaitOn</a></dd></dl>
</div>
</div>
<a name="group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9"></a>
<div class="api">
<div class="prototype">
void
mprRecallWaitHandlerByFd
(int fd)
</div>
<div class="apiDetail">
<p>Recall a wait handler by fd.</p>
<dl><dt><b>Description</b>:</dt><dd>Signal that a wait handler should be recalled at the earliest opportunity. This is useful when a protocol stack has buffered data that must be processed regardless of whether more I/O occurs.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fd</td><td>File descriptor that matches that of a wait handler to recall.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="ref">mprCreateWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="ref">mprRecallWaitHandler</a>, <a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="ref">mprRemoveWaitHandler</a>, <a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="ref">mprWaitOn</a></dd></dl>
</div>
</div>
<a name="group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63"></a>
<div class="api">
<div class="prototype">
void
mprRemoveWaitHandler
(<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp)
</div>
<div class="apiDetail">
<p>Disconnect a wait handler from its underlying file descriptor.</p>
This is used to prevent further I/O wait events while still preserving the wait handler
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">wp</td><td>Wait handler object.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="ref">mprCreateWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="ref">mprRecallWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="ref">mprRecallWaitHandlerByFd</a>, <a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="ref">mprWaitOn</a></dd></dl>
</div>
</div>
<a name="group___mpr_wait_handler_1ga050cd9b37c257aca0790ce48bc760f0b"></a>
<div class="api">
<div class="prototype">
void
mprWaitForIO
(<a href="#struct_mpr_wait_service" class="ref">MprWaitService</a> *ws, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait for I/O.</p>
This call waits for any I/O events on wait handlers until the given timeout expires
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ws</td><td>Wait service object.</td>
<tr><td class="param">timeout</td><td>Timeout in milliseconds to wait for an event.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="ref">mprCreateWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="ref">mprRecallWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="ref">mprRecallWaitHandlerByFd</a>, <a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="ref">mprRemoveWaitHandler</a>, <a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="ref">mprWaitOn</a></dd></dl>
</div>
</div>
<a name="group___mpr_wait_handler_1ga0a93f3ae8149bd4904921ffb36e493c6"></a>
<div class="api">
<div class="prototype">
int
mprWaitForSingleIO
(int fd, int mask, <a href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319" class="ref">MprTicks</a> timeout)
</div>
<div class="apiDetail">
<p>Wait for I/O on a file descriptor.</p>
No processing of the I/O event is done
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fd</td><td>File descriptor to examine.</td>
<tr><td class="param">mask</td><td>Mask of events of interest (MPR_READABLE | MPR_WRITABLE).</td>
<tr><td class="param">timeout</td><td>Timeout in milliseconds to wait for an event.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of events received.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="ref">mprCreateWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="ref">mprRecallWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="ref">mprRecallWaitHandlerByFd</a>, <a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="ref">mprRemoveWaitHandler</a>, <a href="#group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b" class="ref">mprWaitOn</a></dd></dl>
</div>
</div>
<a name="group___mpr_wait_handler_1gaa0e15d53ab8eab3472f5a170d4e3f27b"></a>
<div class="api">
<div class="prototype">
void
mprWaitOn
(<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp, int desiredMask)
</div>
<div class="apiDetail">
<p>Subscribe for desired wait events.</p>
<dl><dt><b>Description</b>:</dt><dd>Subscribe to the desired wait events for a given wait handler.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">wp</td><td>Wait handler created via <a class="ref" href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e">mprCreateWaitHandler</a></td>
<tr><td class="param">desiredMask</td><td>Mask of desired events (MPR_READABLE | MPR_WRITABLE).</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e" class="ref">mprCreateWaitHandler</a>, <a href="#mpr_8h_1a52f88939c5c03270beff007574b4aeb0" class="ref">mprQueueIOEvent</a>, <a href="#group___mpr_wait_handler_1ga82f81798dcccf075cc6fc272a4abcffc" class="ref">mprRecallWaitHandler</a>, <a href="#group___mpr_wait_handler_1ga6301332e3c370e7510738f9c348603e9" class="ref">mprRecallWaitHandlerByFd</a>, <a href="#group___mpr_wait_handler_1gaa7e94f04dd2634590ebf35d099bc3c63" class="ref">mprRemoveWaitHandler</a></dd></dl>
</div>
</div>
<h1>MprWorker</h1>
<a name="group___mpr_worker"></a>
<div class="api">
<div class="prototype">MprWorker</div>
<div class="apiDetail">
<p>Worker thread structure.</p>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="ref">mprDedicateWorker</a>, <a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="ref">mprGetMaxWorkers</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="ref">mprSetMaxWorkers</a>, <a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="ref">mprSetMinWorkers</a>, <a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="ref">mprSetWorkerStackSize</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" href="#group___mpr_worker_1ga1c2789aea11b60b13644c3b4e7c54f99">MprWorkerProc</a></td><td><td>cleanup</td><td>
Procedure to cleanup after run before sleeping.
</td>
<tr><td class="param">void *</td><td><td>data</td><td>
User per-worker data.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_cond">MprCond</a> *</td><td><td>idleCond</td><td>
Used to wait for work.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1adbceeccda24c35e7b4c6090db7065319">MprTicks</a></td><td><td>lastActivity</td><td>
When the worker was last used.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_worker_1ga1c2789aea11b60b13644c3b4e7c54f99">MprWorkerProc</a></td><td><td>proc</td><td>
Procedure to run.
</td>
<tr><td class="param">int</td><td><td>running</td><td>
Worker running a job.
</td>
<tr><td class="param">int</td><td><td>state</td><td>
Worker state.
</td>
<tr><td class="param">MprThread *</td><td><td>thread</td><td>
Thread associated with this worker.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_worker_service">MprWorkerService</a> *</td><td><td>workerService</td><td>
Worker service.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_worker_1gadac0b64baeac13c694c58db896dac1d4"></a>
<div class="api">
<div class="prototype">
int
mprAvailableWorkers
()
</div>
<div class="apiDetail">
<p>Get the count of available worker threads Return the count of free threads in the worker thread pool.</p>
<dl><dt>Returns:</dt><dd>An integer count of worker threads.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="ref">mprDedicateWorker</a>, <a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="ref">mprGetMaxWorkers</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="ref">mprSetMaxWorkers</a>, <a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="ref">mprSetMinWorkers</a>, <a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="ref">mprSetWorkerStackSize</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
</div>
</div>
<a name="group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7"></a>
<div class="api">
<div class="prototype">
void
mprDedicateWorker
(<a href="#group___mpr_worker" class="ref">MprWorker</a> *worker)
</div>
<div class="apiDetail">
<p>Dedicate a worker thread to a current real thread.</p>
This implements thread affinity and is required on some platforms where some APIs (waitpid on uClibc) cannot be called on a different thread
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">worker</td><td>Worker object.</td>
<tr><td class="param">worker</td><td>Worker thread reference.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="ref">mprGetMaxWorkers</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="ref">mprSetMaxWorkers</a>, <a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="ref">mprSetMinWorkers</a>, <a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="ref">mprSetWorkerStackSize</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
</div>
</div>
<a name="group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491"></a>
<div class="api">
<div class="prototype">
int
mprGetMaxWorkers
()
</div>
<div class="apiDetail">
<p>Get the maximum count of worker pool threads Get the maximum limit of worker pool threads.</p>
<dl><dt>Returns:</dt><dd>The maximum count of worker pool threads.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="ref">mprDedicateWorker</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="ref">mprSetMaxWorkers</a>, <a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="ref">mprSetMinWorkers</a>, <a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="ref">mprSetWorkerStackSize</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
</div>
</div>
<a name="group___mpr_worker_1gada34402b39990eab1ff9d55d9e271076"></a>
<div class="api">
<div class="prototype">
void
mprGetWorkerStats
(<a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a> *stats)
</div>
<div class="apiDetail">
<p>Get the Worker service statistics.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">stats</td><td>Reference to stats object to receive the stats.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="ref">mprDedicateWorker</a>, <a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="ref">mprGetMaxWorkers</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="ref">mprSetMaxWorkers</a>, <a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="ref">mprSetMinWorkers</a>, <a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="ref">mprSetWorkerStackSize</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
</div>
</div>
<a name="group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476"></a>
<div class="api">
<div class="prototype">
void
mprSetMaxWorkers
(int count)
</div>
<div class="apiDetail">
<p>Set the maximum count of worker threads Set the maximum number of worker pool threads for the MPR.</p>
If this number if less than the current number of threads, excess threads will be gracefully pruned as they exit
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">count</td><td>Maximum limit of threads to define.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="ref">mprDedicateWorker</a>, <a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="ref">mprGetMaxWorkers</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="ref">mprSetMinWorkers</a>, <a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="ref">mprSetWorkerStackSize</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
</div>
</div>
<a name="group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68"></a>
<div class="api">
<div class="prototype">
void
mprSetMinWorkers
(int count)
</div>
<div class="apiDetail">
<p>Set the minimum count of worker threads Set the count of threads the worker pool will have.</p>
This will cause the worker pool to pre-create at least this many threads
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">count</td><td>Minimum count of threads to use.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="ref">mprDedicateWorker</a>, <a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="ref">mprGetMaxWorkers</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="ref">mprSetMaxWorkers</a>, <a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="ref">mprSetWorkerStackSize</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
</div>
</div>
<a name="group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092"></a>
<div class="api">
<div class="prototype">
void
mprSetWorkerStackSize
(int size)
</div>
<div class="apiDetail">
<p>Set the default worker stack size.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">size</td><td>Stack size in bytes.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="ref">mprDedicateWorker</a>, <a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="ref">mprGetMaxWorkers</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="ref">mprSetMaxWorkers</a>, <a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="ref">mprSetMinWorkers</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
</div>
</div>
<h1>MprXml</h1>
<a name="group___mpr_xml"></a>
<div class="api">
<div class="prototype">MprXml</div>
<div class="apiDetail">
<p>Per XML session structure.</p>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>errMsg</td><td>
Error message text.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346">MprXmlHandler</a></td><td><td>handler</td><td>
Callback function.
</td>
<tr><td class="param">MprBuf *</td><td><td>inBuf</td><td>
Input data queue.
</td>
<tr><td class="param">void *</td><td><td>inputArg</td><td>
Arg for <a class="ref" href="#group___mpr_xml_1ga61144d35daf0b10f9f62bbd14eb106af">mprXmlSetInputStream()</a>
</td>
<tr><td class="param">int</td><td><td>lineNumber</td><td>
Current line no for debug.
</td>
<tr><td class="param">void *</td><td><td>parseArg</td><td>
Arg passed to <a class="ref" href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a">mprXmlParse()</a>
</td>
<tr><td class="param">int</td><td><td>quoteChar</td><td>
XdbAtt quote char.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a">MprXmlInputStream</a></td><td><td>readFn</td><td>
Read data function.
</td>
<tr><td class="param">MprBuf *</td><td><td>tokBuf</td><td>
Parsed token buffer.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprXmlGetErrorMsg
(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp)
</div>
<div class="apiDetail">
<p>Get the XML error message if mprXmlParse fails.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML parser instance returned from mprXmlOpen.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A descriptive null-terminated string.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde"></a>
<div class="api">
<div class="prototype">
int
mprXmlGetLineNumber
(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp)
</div>
<div class="apiDetail">
<p>Get the source XML line number.</p>
<dl><dt><b>Description</b>:</dt><dd>This call can be used from within the parser callback or when mprXmlParse fails.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML parser instance returned from mprXmlOpen.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The line number for the current token or error.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b"></a>
<div class="api">
<div class="prototype">
void *
mprXmlGetParseArg
(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp)
</div>
<div class="apiDetail">
<p>Get the XML callback argument.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML parser instance returned from mprXmlOpen.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Argument defined to use for the callback.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_xml" class="ref">MprXml</a> *
mprXmlOpen
(<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> initialSize, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> maxSize)
</div>
<div class="apiDetail">
<p>Open an XML parser instance.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">initialSize</td><td>Initialize size of XML in-memory token buffer.</td>
<tr><td class="param">maxSize</td><td>Maximum size of XML in-memory token buffer. Set to -1 unlimited.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An XML parser instance.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a"></a>
<div class="api">
<div class="prototype">
int
mprXmlParse
(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp)
</div>
<div class="apiDetail">
<p>Run the XML parser.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML parser instance returned from mprXmlOpen.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise returns a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1ga61144d35daf0b10f9f62bbd14eb106af"></a>
<div class="api">
<div class="prototype">
void
mprXmlSetInputStream
(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a> fn, void *arg)
</div>
<div class="apiDetail">
<p>Define the XML parser input stream.</p>
This
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML parser instance returned from mprXmlOpen.</td>
<tr><td class="param">fn</td><td>Callback function to provide data to the XML parser. The callback is invoked with the signature: ssize callbac(MprXml *xp, void *arg, char *buf, ssize size);.</td>
<tr><td class="param">arg</td><td>Callback argument to pass to the.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3"></a>
<div class="api">
<div class="prototype">
void
mprXmlSetParseArg
(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp, void *parseArg)
</div>
<div class="apiDetail">
<p>Set the XML callback argument.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML parser instance returned from mprXmlOpen.</td>
<tr><td class="param">parseArg</td><td>Argument to use for the callback.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1ga015f91fb1d39230057a368fb225f45b8"></a>
<div class="api">
<div class="prototype">
void
mprXmlSetParserHandler
(<a href="#group___mpr_xml" class="ref">MprXml</a> *xp, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a> h)
</div>
<div class="apiDetail">
<p>Set the XML parser data handle.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML parser instance returned from mprXmlOpen.</td>
<tr><td class="param">h</td><td>Arbitrary data to associate with the parser.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346" class="ref">MprXmlHandler</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
</div>
</div>
<h2>Functions</h2>
<a name="mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7"></a>
<div class="api">
<div class="prototype">
<a href="#group___mpr_buf" class="ref">MprBuf</a> *
mprCloneBuf
(<a href="#group___mpr_buf" class="ref">MprBuf</a> *orig)
</div>
<div class="apiDetail">
<p>Clone a buffer.</p>
<dl><dt><b>Description</b>:</dt><dd>Copy the buffer and contents into a newly allocated buffer.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">orig</td><td>Original buffer to copy.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Returns a newly allocated buffer.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
</div>
</div>
<a name="mpr_8h_1abfbf7a6be96787a293dde205f6b70bb5"></a>
<div class="api">
<div class="prototype">
<a href="#struct_mpr_module_service" class="ref">MprModuleService</a> *
mprCreateModuleService
()
</div>
<div class="apiDetail">
<p>Create and initialize the module service.</p>
<dl><dt>Returns:</dt><dd>MprModuleService object.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="mpr_8h_1a649fb2b3bd4d4f142356f89b8adbaa92"></a>
<div class="api">
<div class="prototype">
void
mprDestroy
(int how)
</div>
<div class="apiDetail">
<p>Destroy the MPR.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">how</td><td>Exit strategy to use when exiting. Set to MPR_EXIT_DEFAULT to use the existing exit strategy. Set to MPR_EXIT_IMMEDIATE for an immediate abortive shutdown. Finalizers will not be run. Use MPR_EXIT_NORMAL to allow garbage collection and finalizers to run. Use MPR_EXIT_GRACEFUL to allow all current requests and commands to complete before exiting.</td>
</table></dd></dl>
</div>
</div>
<a name="mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
mprGetCurrentThreadName
()
</div>
<div class="apiDetail">
<p>Return the name of the current thread.</p>
<dl><dt>Returns:</dt><dd>A static thread name.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
</div>
</div>
<a name="mpr_8h_1a2b3db265ba01f3b265151ec6742b1ab6"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a151d6b4fc026bbbf0b057d78f2543f50" class="ref">uint64</a>
mprGetHiResTicks
()
</div>
<div class="apiDetail">
<p>Get the CPU tick count.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the current CPU tick count. This is a system dependant high resolution timer. On some systems, this returns time in nanosecond resolution.</dd></dl>
<dl><dt>Returns:</dt><dd>The CPU time in ticks. Will return the system time if CPU ticks are not available.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="mpr_8h_1ae5d78c44aca7282c6c5b85dc5b4f162e"></a>
<div class="api">
<div class="prototype">
void
mprHiddenSocketData
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp, <a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> len, int dir)
</div>
<div class="apiDetail">
<p>Indicate that the application layer has buffered data for the socket.</p>
<dl><dt><b>Description</b>:</dt><dd>This is used by SSL and other network stacks that buffer pending data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
<tr><td class="param">len</td><td>Length of buffered data in bytes.</td>
<tr><td class="param">dir</td><td>Buffer direction. Set to MPR_READABLE for buffered read data and MPR_WRITABLE for buffered write data.</td>
</table></dd></dl>
</div>
</div>
<a name="mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d"></a>
<div class="api">
<div class="prototype">
int
mprIsCmdComplete
(<a href="#group___mpr_cmd" class="ref">MprCmd</a> *cmd)
</div>
<div class="apiDetail">
<p>Test if a command is complete.</p>
A command is complete when the child has exited and all command output and error output has been received
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">cmd</td><td>MprCmd object created via mprCreateCmd.</td>
</table></dd></dl>
</div>
</div>
<a name="mpr_8h_1a9077f7fb7f0b3ab411af60dca7324da3"></a>
<div class="api">
<div class="prototype">
<a href="mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
mprIsSocketV6
(<a href="#group___mpr_socket" class="ref">MprSocket</a> *sp)
</div>
<div class="apiDetail">
<p>Determine if the socket is using IPv6 Currently only works for server side addresses.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Socket object returned from <a class="ref" href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4">mprCreateSocket</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if the socket is using IPv6, otherwise zero.</dd></dl>
</div>
</div>
<a name="mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8"></a>
<div class="api">
<div class="prototype">
void
mprMark
(void *ptr)
</div>
<div class="apiDetail">
<p>Mark a memory block as in-use.</p>
<dl><dt><b>Description</b>:</dt><dd>To prevent a memory block being freed by the garbage collector, it must be marked as &quot;active&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Reference to managed memory block. This must be managed memory allocated by the MPR. Do not call mprMark on memory allocated via malloc(), strdup() or other non-MPR allocation routines. It is safe pass a NULL pointer to mprMark and this will have no effect. This is a convenient pattern where manager functions can call <a class="ref" href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8">mprMark()</a> without testing if the element reference is null or not.</td>
</table></dd></dl>
</div>
</div>
<a name="mpr_8h_1a7d645142ebb3d7f1f2df54f7170f5b08"></a>
<div class="api">
<div class="prototype">
int
mprNotifyOn
(<a href="#struct_mpr_wait_service" class="ref">MprWaitService</a> *ws, <a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp, int mask)
</div>
<div class="apiDetail">
<p>Begin I/O notification services on a wait handler.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ws</td><td>Wait Service object.</td>
<tr><td class="param">wp</td><td>Wait handler associated with the file descriptor.</td>
<tr><td class="param">mask</td><td>Mask of events of interest. This is made by oring MPR_READABLE and MPR_WRITABLE.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="mpr_8h_1a52f88939c5c03270beff007574b4aeb0"></a>
<div class="api">
<div class="prototype">
void
mprQueueIOEvent
(<a href="#group___mpr_wait_handler" class="ref">MprWaitHandler</a> *wp)
</div>
<div class="apiDetail">
<p>Queue an IO event for dispatch on the wait handler dispatcher.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">wp</td><td>Wait handler created via <a class="ref" href="#group___mpr_wait_handler_1ga7ef6b4168e5cab0192d6b72e094b2c6e">mprCreateWaitHandler</a></td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
</div>
</div>
<a name="mpr_8h_1a14a802b66bf59a019a884710ce18bdaf"></a>
<div class="api">
<div class="prototype">
void
mprRelayEvent
(<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a> *dispatcher, void *proc, void *data, <a href="#group___mpr_event" class="ref">MprEvent</a> *event)
</div>
<div class="apiDetail">
<p>Relay an event to a dispatcher.</p>
This invokes the callback proc as though it was invoked from the given dispatcher
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">dispatcher</td><td>Dispatcher object created via <a class="ref" href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1">mprCreateDispatcher</a></td>
<tr><td class="param">proc</td><td>Procedure to invoke.</td>
<tr><td class="param">data</td><td>Argument to proc.</td>
<tr><td class="param">event</td><td>Event object.</td>
</table></dd></dl>
</div>
</div>
<a name="mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc"></a>
<div class="api">
<div class="prototype">
void
mprReleaseWorker
(<a href="#group___mpr_worker" class="ref">MprWorker</a> *worker)
</div>
<div class="apiDetail">
<p>Release a worker thread.</p>
This releases a worker thread to be assignable to any real thread
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">worker</td><td>Worker object.</td>
<tr><td class="param">worker</td><td>Worker thread reference.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="mpr_8h_1a126f6aef245167a628a6c0717369b0f7"></a>
<div class="api">
<div class="prototype">
void
mprResetYield
()
</div>
<div class="apiDetail">
<p>Reset a sticky yield.</p>
<dl><dt><b>Description</b>:</dt><dd>This call resets a sticky yield established with <a class="ref" href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4">mprYield</a></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
</div>
</div>
<a name="mpr_8h_1a02941fa13af43f80adda4840d94f215b"></a>
<div class="api">
<div class="prototype">
void
mprSetLogFile
(struct MprFile *file)
</div>
<div class="apiDetail">
<p>Set a file to be used for logging.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>MprFile object instance.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Evolving.</dd></dl>
</div>
</div>
<a name="mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c"></a>
<div class="api">
<div class="prototype">
void
mprSetLogHandler
(<a href="#group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951" class="ref">MprLogHandler</a> handler)
</div>
<div class="apiDetail">
<p>Set an MPR debug log handler.</p>
<dl><dt><b>Description</b>:</dt><dd>Defines a callback handler for MPR debug and error log messages. When output is sent to the debug channel, the log handler will be invoked to accept the output message.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">handler</td><td>Callback handler.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
</div>
</div>
<a name="mpr_8h_1abab36952856d0d468adaffd764d00a3e"></a>
<div class="api">
<div class="prototype">
int
mprStartModuleService
()
</div>
<div class="apiDetail">
<p>Start the module service.</p>
<dl><dt><b>Description</b>:</dt><dd>This calls the start entry point for all registered modules.</dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11"></a>
<div class="api">
<div class="prototype">
int
mprStartWorker
(<a href="#group___mpr_worker_1ga1c2789aea11b60b13644c3b4e7c54f99" class="ref">MprWorkerProc</a> proc, void *data)
</div>
<div class="apiDetail">
<p>Start a worker thread.</p>
<dl><dt><b>Description</b>:</dt><dd>Start a worker thread executing the given worker procedure callback.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">proc</td><td>Worker procedure callback.</td>
<tr><td class="param">data</td><td>Data parameter to the callback.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="mpr_8h_1a4a74ded985a5d974beb42618de5a07af"></a>
<div class="api">
<div class="prototype">
void
mprStopModuleService
()
</div>
<div class="apiDetail">
<p>Stop the module service.</p>
<dl><dt><b>Description</b>:</dt><dd>This calls the stop entry point for all registered modules.</dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4"></a>
<div class="api">
<div class="prototype">
void
mprYield
(int flags)
</div>
<div class="apiDetail">
<p>Yield a thread to allow garbage collection.</p>
<dl><dt><b>Description</b>:</dt><dd>Long running threads should regularly call mprYield to allow the garbage collector to run. All transient memory must have references from &quot;managed&quot; objects (see mprAlloc) to ensure required memory is retained.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">flags</td><td>Set to MPR_YIELD_BLOCK to wait until the garbage collection is complete. This is not normally required. Set to MPR_YIELD_STICKY to remain in the yielded state. This is useful when sleeping or blocking waiting for I/O. <a class="ref" href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7">mprResetYield</a> must be called after setting a sticky yield.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
</div>
</div>
<h2>Typedefs</h2>
<a name="mpr_8h_1ad38871e3f9f06db46d2bfd29b4dfe9a3"></a>
<div class="api">
<div class="prototype">
typedef uint(* MprHashProc)(cvoid *name, ssize len).
</div>
<div class="apiDetail">
<p>Hashing function to use for the table.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Name to hash.</td>
<tr><td class="param">len</td><td>Length of the name to hash.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An integer hash index.</dd></dl>
</div>
</div>
<a name="mpr_8h_1ae2a3626d38470dba2a56311151b09574"></a>
<div class="api">
<div class="prototype">
typedef void MprObj.
</div>
<div class="apiDetail">
<p>Object container for JSON parse trees.</p>
</div>
</div>
<a name="mpr_8h_1a87e9f435008723c7b1489af1944c6e20"></a>
<div class="api">
<div class="prototype">
typedef Offset MprOff.
</div>
<div class="apiDetail">
<p>Signed file offset data type.</p>
Supports large files greater than 4GB in size on all systems
</div>
</div>
<a name="mpr_8h_1adbceeccda24c35e7b4c6090db7065319"></a>
<div class="api">
<div class="prototype">
typedef Ticks MprTicks.
</div>
<div class="apiDetail">
<p>Elapsed time data type.</p>
Stores time in milliseconds from some arbitrary start epoch
</div>
</div>
<a name="mpr_8h_1ae95233022e6cc90ea564a396cf978e0a"></a>
<div class="api">
<div class="prototype">
typedef ssize(* MprXmlInputStream)(struct MprXml *xp, void *arg, char *buf, ssize size).
</div>
<div class="apiDetail">
<p>XML input stream function.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML instance reference.</td>
<tr><td class="param">arg</td><td>to input stream.</td>
<tr><td class="param">buf</td><td>Buffer into which to read data.</td>
<tr><td class="param">size</td><td>Size of buf.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
</div>
</div>
<a name="group___mpr_buf_1gaa0f2f003728ef5bb244fdabe2edc56f7"></a>
<div class="api">
<div class="prototype">
typedef int(* MprBufProc)(struct MprBuf *bp, void *arg).
</div>
<div class="apiDetail">
<p>Buffer refill callback function.</p>
<dl><dt><b>Description</b>:</dt><dd>Function to call when the buffer is depleted and needs more data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Instance of an MprBuf.</td>
<tr><td class="param">arg</td><td>Data argument supplied to <a class="ref" href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c">mprSetBufRefillProc</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The callback should return 0 if successful, otherwise a negative error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_buf" class="ref">MprBuf</a>, <a href="#group___mpr_buf_1ga159c096de4aec192e25b275f1f5e031d" class="ref">mprAddNullToBuf</a>, <a href="#group___mpr_buf_1ga95de494427536885cd80187593d45d91" class="ref">mprAdjustBufEnd</a>, <a href="#group___mpr_buf_1ga52128fe8a192cd1cf4541cccf6ce3625" class="ref">mprAdjustBufStart</a>, <a href="#group___mpr_buf_1ga82bb10164b117911778ca5ef4bc0862e" class="ref">mprBufToString</a>, <a href="#mpr_8h_1a3855fd262d4f3003b3d4f53288a6ace7" class="ref">mprCloneBuf</a>, <a href="#group___mpr_buf_1gaab2501188e2f3f59008f8f27e14732e9" class="ref">mprCompactBuf</a>, <a href="#group___mpr_buf_1ga74c3067411dfb45ad0bbd94787320238" class="ref">mprCreateBuf</a>, <a href="#group___mpr_buf_1ga453b62a6659fc9fa4d041165dad7461e" class="ref">mprFlushBuf</a>, <a href="#group___mpr_buf_1ga142b9eecd08dac10c50cd705045ddb80" class="ref">mprGetBlockFromBuf</a>, <a href="#group___mpr_buf_1gabd1fae7a41a8c38220de4f06e6d0e053" class="ref">mprGetBufEnd</a>, <a href="#group___mpr_buf_1gaa543b610b67691faf917b4b79229fc34" class="ref">mprGetBufLength</a>, <a href="#group___mpr_buf_1ga2791daeb72ae2e3f455250dfba72aa67" class="ref">mprGetBufRefillProc</a>, <a href="#group___mpr_buf_1ga0cbdbaf59392b9f7a77997c450117c87" class="ref">mprGetBufSize</a>, <a href="#group___mpr_buf_1ga31a2c76bb862de4e47ffb2231b106c98" class="ref">mprGetBufSpace</a>, <a href="#group___mpr_buf_1gac982291efef3d49cce4bc2ecec6566e5" class="ref">mprGetBufStart</a>, <a href="#group___mpr_buf_1gaf128b71005bdd12507110e1f21b483d4" class="ref">mprGetCharFromBuf</a>, <a href="#group___mpr_buf_1ga00b4c52b236de298af2ac5047bab6e57" class="ref">mprGrowBuf</a>, <a href="#group___mpr_buf_1ga6f91b177cd36508c9d470636b04fa7b5" class="ref">mprInsertCharToBuf</a>, <a href="#group___mpr_buf_1ga9ae5abc2e8c8b3359ca450e505564359" class="ref">mprLookAtLastCharInBuf</a>, <a href="#group___mpr_buf_1gabe01ab970d735db5a92cea5f9456de5e" class="ref">mprLookAtNextCharInBuf</a>, <a href="#group___mpr_buf_1gaa88196b86b9c9544f97e5910b015380d" class="ref">mprPutBlockToBuf</a>, <a href="#group___mpr_buf_1ga5ab66b5d96db8b33e3bb0c3bbb9c90e2" class="ref">mprPutCharToBuf</a>, <a href="#group___mpr_buf_1ga37a50fadf433a6f8c93af8d7ce928ede" class="ref">mprPutIntToBuf</a>, <a href="#group___mpr_buf_1gae3886d4e6180a460bc74a80047a54c70" class="ref">mprPutPadToBuf</a>, <a href="#group___mpr_buf_1ga50d08cdfc9c21e71af90586104a5839e" class="ref">mprPutStringToBuf</a>, <a href="#group___mpr_buf_1ga394fa1a51d7f2dcc4be222f51ea5a25b" class="ref">mprPutSubStringToBuf</a>, <a href="#group___mpr_buf_1ga9e7451ec61507706a06c6c8149bebc52" class="ref">mprRefillBuf</a>, <a href="#group___mpr_buf_1gae6f9d70c3aab3eb2d9235a1c2a8f63a8" class="ref">mprResetBufIfEmpty</a>, <a href="#group___mpr_buf_1gaffa4e80d4cc95a6816bfe84767d11e2f" class="ref">mprSetBufMax</a>, <a href="#group___mpr_buf_1ga7f74f8c3d5af9db8c064b365f39cae2c" class="ref">mprSetBufRefillProc</a>, <a href="#group___mpr_buf_1gab72f5c9cc154767c1b299f665237d6a6" class="ref">mprSetBufSize</a></dd></dl>
</div>
</div>
<a name="group___mpr_cmd_1gaa20a5cafff87c96ba20526367622c885"></a>
<div class="api">
<div class="prototype">
typedef void(* MprForkCallback)(void *arg).
</div>
<div class="apiDetail">
<p>Callback function before doing a fork().</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_cmd_1gac48a59b1bfc4f3944a88e152863c3d32" class="ref">mprCloseCmdFd</a>, <a href="#group___mpr_cmd_1ga48715863349e32b78002e6004a117ffb" class="ref">mprCreateCmd</a>, <a href="#group___mpr_cmd_1gaa6cedd25447b88aa144bc50fdcec6951" class="ref">mprDestroyCmd</a>, <a href="#group___mpr_cmd_1ga66cccaaaa550e9d2cf381ff8854c2d7a" class="ref">mprDisableCmdEvents</a>, <a href="#group___mpr_cmd_1ga7562126cafba57260cd73634f1ee4aed" class="ref">mprDisconnectCmd</a>, <a href="#group___mpr_cmd_1ga2fd38e2aaf8e7c2a1aed39aa1005155e" class="ref">mprEnableCmdEvents</a>, <a href="#group___mpr_cmd_1gac28276b68838d380698c4995fc9b1267" class="ref">mprFinalizeCmd</a>, <a href="#group___mpr_cmd_1ga68cf4226027c07ba3f3e5b30ecd48590" class="ref">mprGetCmdBuf</a>, <a href="#group___mpr_cmd_1gaf75f9ee1ad6ce783f18263761fde73c3" class="ref">mprGetCmdExitStatus</a>, <a href="#group___mpr_cmd_1gab286ce3b057579a16b84ec56997ae63f" class="ref">mprGetCmdFd</a>, <a href="#mpr_8h_1a265a266b3c9f354009c225c9a2f1c75d" class="ref">mprIsCmdComplete</a>, <a href="#group___mpr_cmd_1ga5ac545e5959e115b2cd633004f5d949b" class="ref">mprIsCmdRunning</a>, <a href="#group___mpr_cmd_1ga00910d0636480e6960ebbf46d58b5a2e" class="ref">mprReadCmd</a>, <a href="#group___mpr_cmd_1gaae5bd75d3750777971cfad687c0f9f15" class="ref">mprReapCmd</a>, <a href="#group___mpr_cmd_1gad616fcfa04dd3e7c13552e97e3c1f1dc" class="ref">mprRunCmd</a>, <a href="#group___mpr_cmd_1ga9b05cb68ed79b6203bb0b7e48e94b428" class="ref">mprRunCmdV</a>, <a href="#group___mpr_cmd_1ga8288e08dc7387c14e0536d214eba6049" class="ref">mprSetCmdCallback</a>, <a href="#group___mpr_cmd_1gaa0e753a2136410b79e480713aaf97b89" class="ref">mprSetCmdDir</a>, <a href="#group___mpr_cmd_1ga731bf3b3b53862f42249d5a771107363" class="ref">mprSetCmdEnv</a>, <a href="#group___mpr_cmd_1ga8810126341868790cc02a34e4a0833ec" class="ref">mprSetCmdSearchPath</a>, <a href="#group___mpr_cmd_1ga120e7a3a3a571b9520853e31d9ce6021" class="ref">mprStartCmd</a>, <a href="#group___mpr_cmd_1ga6a027763dead49cc62961a6e6b17c501" class="ref">mprStopCmd</a>, <a href="#group___mpr_cmd_1ga1e3fc2a672d14270f5a15f08b9a99409" class="ref">mprWaitForCmd</a>, <a href="#group___mpr_cmd_1gaf85bfeb3331df3d613c76158c9892fdd" class="ref">mprWriteCmd</a>, <a href="#group___mpr_cmd_1gaf2f00d6884e449a3e66757463c71891d" class="ref">mprWriteCmdBlock</a></dd></dl>
</div>
</div>
<a name="group___mpr_event_1ga780d2b4460347c6da009d21097f4f27d"></a>
<div class="api">
<div class="prototype">
typedef void(* MprEventProc)(void *data, struct MprEvent *event).
</div>
<div class="apiDetail">
<p>Event callback function.</p>
<dl><dt>Returns:</dt><dd>Return non-zero if the dispatcher is deleted. Otherwise return 0.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_dispatcher" class="ref">MprDispatcher</a>, <a href="#group___mpr_event" class="ref">MprEvent</a>, <a href="#group___mpr_dispatcher_1ga94da5c23c5648b4b3c4f3b1fe5a4e7b1" class="ref">mprCreateDispatcher</a>, <a href="#group___mpr_event_1gac6fcf6faf6ba5c85d7954fa416b73e30" class="ref">mprCreateEvent</a>, <a href="#group___mpr_event_1ga657761883a278d7b8e3f597c31f31a9c" class="ref">mprCreateEventOutside</a>, <a href="#group___mpr_event_1ga3e92f13fc23a3f0ed2d730b077f61611" class="ref">mprCreateTimerEvent</a>, <a href="#group___mpr_event_1gac9e97afd0732f2d3612d911817357db5" class="ref">mprEnableContinuousEvent</a>, <a href="#group___mpr_dispatcher_1gab9239642f6f3418d97c779c410a9aa91" class="ref">mprEnableDispatcher</a>, <a href="#group___mpr_dispatcher_1ga2122781b6db047e3e00f4914f085a337" class="ref">mprGetDispatcher</a>, <a href="#group___mpr_event_1ga9163bc8e37a8ff05c0c957cfcc86e02e" class="ref">mprRemoveEvent</a>, <a href="#group___mpr_event_1ga1919da044dd4f62d999526175f76bdc2" class="ref">mprRescheduleEvent</a>, <a href="#group___mpr_event_1ga6fa51ab06c56baaad50f1b4df7efc1d4" class="ref">mprRestartContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga205adaee3b45d0cc899afc89eb9f3b3d" class="ref">mprServiceEvents</a>, <a href="#group___mpr_dispatcher_1gac81ecb3239317f36c36c7d849d738540" class="ref">mprSignalDispatcher</a>, <a href="#group___mpr_event_1ga1f2c85a20242ec0c1e4830ccd25c7bb7" class="ref">mprStopContinuousEvent</a>, <a href="#group___mpr_dispatcher_1ga7a997d3acde6a33b9367d14f4bc91d87" class="ref">mprWaitForEvent</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1gaa4064169552596b7923bc734da239f96"></a>
<div class="api">
<div class="prototype">
typedef int(* MprListCompareProc)(cvoid *arg1, cvoid *arg2).
</div>
<div class="apiDetail">
<p>List comparison procedure for sorting.</p>
<dl><dt><b>Description</b>:</dt><dd>Callback function signature used by <a class="ref" href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9">mprSortList</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">arg1</td><td>First list item to compare.</td>
<tr><td class="param">arg2</td><td>Second list item to compare.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Return zero if the items are equal. Return -1 if the first arg is less than the second. Otherwise return 1.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_list_1ga128df90ccf99b25bd404afc01ace1415"></a>
<div class="api">
<div class="prototype">
typedef int(* MprSortProc)(cvoid *p1, cvoid *p2, void *ctx).
</div>
<div class="apiDetail">
<p>Quicksort callback function.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a quicksort callback with a context argument.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">p1</td><td>Pointer to first element.</td>
<tr><td class="param">p2</td><td>Pointer to second element.</td>
<tr><td class="param">ctx</td><td>Context argument to provide to comparison function.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>-1, 0, or 1, depending on if the elements are p1 &lt; p2, p1 == p2 or p1 &gt; p2.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_list" class="ref">MprList</a>, <a href="#group___mpr_list_1gaa4064169552596b7923bc734da239f96" class="ref">MprListCompareProc</a>, <a href="#group___mpr_list_1gabf10109abc063c47702769c0e89442cf" class="ref">mprAddItem</a>, <a href="#group___mpr_list_1ga8a5c06bd4458f58c9ed20d043b21bba3" class="ref">mprAddNullItem</a>, <a href="#group___mpr_list_1ga5f81ae14eecf28b6e6bdd64677860e39" class="ref">mprAppendList</a>, <a href="#group___mpr_list_1gacf49292693e22c7bdc43fbb41a83817d" class="ref">mprClearList</a>, <a href="#group___mpr_list_1ga44c886d9f401b9b3bba8c63d13a87799" class="ref">mprCloneList</a>, <a href="#group___mpr_list_1ga64de8dd4049d256f9cbb931b640711ee" class="ref">mprCreateKeyPair</a>, <a href="#group___mpr_list_1gacc8d55930e99375f2220ffabfb2fec65" class="ref">mprCreateList</a>, <a href="#group___mpr_list_1ga34b6f80710796e4d3d766299ebf37078" class="ref">mprGetFirstItem</a>, <a href="#group___mpr_list_1ga4535837cc644f208063b1ca3e2ae46c2" class="ref">mprGetItem</a>, <a href="#group___mpr_list_1ga629c61d9bfbea110851227fd61569093" class="ref">mprGetLastItem</a>, <a href="#group___mpr_list_1gac47331b3442493d84405d32ffcb98aba" class="ref">mprGetListCapacity</a>, <a href="#group___mpr_list_1ga4c19ca9f47bf98e133716c174f225f54" class="ref">mprGetListLength</a>, <a href="#group___mpr_list_1gaf84ab68545207f073e9f916adc8817e4" class="ref">mprGetNextItem</a>, <a href="#group___mpr_list_1ga701e2771ac787973c94e523898d596a6" class="ref">mprGetPrevItem</a>, <a href="#group___mpr_list_1ga0c797a3ea868662ad6dabb35f5255399" class="ref">mprInitList</a>, <a href="#group___mpr_list_1gaf3e8599ae4707459cf42ad960256af98" class="ref">mprInsertItemAtPos</a>, <a href="#group___mpr_list_1ga8b3d6afe4be8d416e28f64d05e8391eb" class="ref">mprLookupItem</a>, <a href="#group___mpr_list_1ga8b32a32be34fbcc2194767eb7031a3ad" class="ref">mprLookupStringItem</a>, <a href="#group___mpr_list_1ga330faeebdb584c0f83a3344423563cc2" class="ref">mprPopItem</a>, <a href="#group___mpr_list_1ga7f35b9db9fe36c3bf91954c6acb98467" class="ref">mprPushItem</a>, <a href="#group___mpr_list_1gaa7e9868693c4c804b2c356509dcbb798" class="ref">mprRemoveItem</a>, <a href="#group___mpr_list_1gac758d5af71b0bbf943bb6a1e263a494c" class="ref">mprRemoveItemAtPos</a>, <a href="#group___mpr_list_1ga16748fa2520761d373cebe4b39be3e8e" class="ref">mprRemoveRangeOfItems</a>, <a href="#group___mpr_list_1ga7d948c448d34a433b728c7a19aae1814" class="ref">mprRemoveStringItem</a>, <a href="#group___mpr_list_1ga20dffb6f04ddb568db844dd1a83025f7" class="ref">mprSetItem</a>, <a href="#group___mpr_list_1ga38bd862a8bc3076d86b0185d5bd81aa6" class="ref">mprSetListLimits</a>, <a href="#group___mpr_list_1ga0326ee9015a4949d2664fd386ca975f9" class="ref">mprSortList</a></dd></dl>
</div>
</div>
<a name="group___mpr_log_1ga95e033ad5fa41baa87cb3fefdb782951"></a>
<div class="api">
<div class="prototype">
typedef void(* MprLogHandler)(int flags, int level, cchar *msg).
</div>
<div class="apiDetail">
<p>Log handler callback type.</p>
<dl><dt><b>Description</b>:</dt><dd>Callback prototype for the log handler. Used by mprSetLogHandler to define a message logging handler to process log and error messages.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">file</td><td>Source filename. Derived by using <b>FILE</b></td>
<tr><td class="param">line</td><td>Source line number. Derived by using <b>LINE</b></td>
<tr><td class="param">flags</td><td>Error flags.</td>
<tr><td class="param">level</td><td>Message logging level. Levels are 0-9 with zero being the most verbose.</td>
<tr><td class="param">msg</td><td>Message being logged.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_log_1ga912d39c3467b133438b984c79c02aee3" class="ref">mprAssert</a>, <a href="#group___mpr_log_1ga33ca1cbd4c7573013253873dab76f209" class="ref">mprError</a>, <a href="#group___mpr_log_1ga485a83d46f63f5ce07b489b2e77a338c" class="ref">mprGetLogFile</a>, <a href="#group___mpr_log_1gafa26d272b51c301c2e5c3630d6a8493e" class="ref">mprGetLogHandler</a>, <a href="#group___mpr_log_1ga9da75cbcc753ea71cedb661ed4894cb1" class="ref">mprInfo</a>, <a href="#group___mpr_log_1ga21fa2199e7f70707c1fb3b63daed6ecf" class="ref">mprLog</a>, <a href="#group___mpr_log_1ga0ab29654e80cbd645e24a4125b1883a7" class="ref">mprRawLog</a>, <a href="#mpr_8h_1a02941fa13af43f80adda4840d94f215b" class="ref">mprSetLogFile</a>, <a href="#mpr_8h_1adbb663d5ed88e1b5f47032a244953b9c" class="ref">mprSetLogHandler</a>, <a href="#group___mpr_log_1ga5072dbfb7278b3247096146ead8b7162" class="ref">mprSetLogLevel</a>, <a href="#group___mpr_log_1ga61399f9e62412467e471690627570014" class="ref">mprTrace</a>, <a href="#group___mpr_log_1ga3c9f9a0bcfdf44dc68118f97a82ed13f" class="ref">mprUsingDefaultLogHandler</a>, <a href="#group___mpr_log_1ga522d10dbc7691186cf7c90c50c2dc929" class="ref">mprWarn</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782"></a>
<div class="api">
<div class="prototype">
typedef void(* MprManager)(void *ptr, int flags).
</div>
<div class="apiDetail">
<p>Mpr memory block manager prototype.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ptr</td><td>Any memory context allocated by the MPR.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273" class="ref">MprMemNotifier</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273"></a>
<div class="api">
<div class="prototype">
typedef void(* MprMemNotifier)(int cause, int policy, ssize size, ssize total).
</div>
<div class="apiDetail">
<p>Memory allocation error callback.</p>
Notifiers are called if a low memory condition exists
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">policy</td><td>Memory depletion policy. Set to one of MPR_ALLOC_POLICY_NOTHING, MPR_ALLOC_POLICY_PRUNE, MPR_ALLOC_POLICY_RESTART or MPR_ALLOC_POLICY_EXIT.</td>
<tr><td class="param">cause</td><td>Cause of the memory allocation condition. If flags is set to MPR_MEM_LOW, the memory pool is low, but the allocation succeeded. If flags contain MPR_MEM_DEPLETED, the allocation failed.</td>
<tr><td class="param">size</td><td>Size of the allocation that triggered the low memory condition.</td>
<tr><td class="param">total</td><td>Total memory currently in use.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_free_mem" class="ref">MprFreeMem</a>, <a href="#struct_mpr_heap" class="ref">MprHeap</a>, <a href="#group___mpr_mem_1gaacdb6d1a5cec32a0758f636353fff782" class="ref">MprManager</a>, <a href="#struct_mpr_region" class="ref">MprRegion</a>, <a href="#group___mpr_mem_1ga6630588bf1f967bfb55affc08a4cb547" class="ref">mprAddRoot</a>, <a href="#group___mpr_mem_1ga0da6d08a6b237686c3033dd3088384d5" class="ref">mprAlloc</a>, <a href="#group___mpr_mem_1gabe7f398788c7cc41ae09866b333babc9" class="ref">mprAllocMem</a>, <a href="#group___mpr_mem_1gae3b5d2bd89f53f1d28b1d6c7e299158a" class="ref">mprAllocObj</a>, <a href="#group___mpr_mem_1ga8c08a5df2a6eae20b8b7925f6eaa2c33" class="ref">mprAllocZeroed</a>, <a href="#group___mpr_mem_1ga68aa995754d9494d3df0f7877a71aba4" class="ref">mprCreateMemService</a>, <a href="#group___mpr_mem_1ga99a90d38bdf5d5edad42f8f5edc937ea" class="ref">mprDestroyMemService</a>, <a href="#group___mpr_mem_1ga4e34537a9123922eb0bac5e9844c68b1" class="ref">mprEnableGC</a>, <a href="#group___mpr_mem_1gafc57b63243fbaa5637b965dcb7384ae2" class="ref">mprGetBlockSize</a>, <a href="#group___mpr_mem_1ga0cef55d597a6b552df2fa9eb26384ed8" class="ref">mprGetMem</a>, <a href="#group___mpr_mem_1gababda33b29cf78e2b8a2300882a7598d" class="ref">mprGetMemStats</a>, <a href="#group___mpr_1gad3afdd3e6a541b8b55d7c7a72fcc734b" class="ref">mprGetMpr</a>, <a href="#group___mpr_mem_1ga36c229b490da17109e4342139775fbfa" class="ref">mprGetPageSize</a>, <a href="#group___mpr_mem_1gabeb48547e7598825b6268f8a8c7ed70b" class="ref">mprHasMemError</a>, <a href="#group___mpr_mem_1ga83b3b9f21254bfb978c33487b42479ea" class="ref">mprHold</a>, <a href="#group___mpr_mem_1ga60f5c1f8065e2d164160fbc71275d300" class="ref">mprIsValid</a>, <a href="#mpr_8h_1ac1eebe67d99890d0156d6fdd7fc2c7c8" class="ref">mprMark</a>, <a href="#group___mpr_mem_1gaa9ce54fa1c9a2d5d925582e7e9c5dd51" class="ref">mprMemcmp</a>, <a href="#group___mpr_mem_1gacab82d32ea715673004e3d24bcf3caec" class="ref">mprMemcpy</a>, <a href="#group___mpr_mem_1gafae4e7f07ac2acc6dc1ea5519f656cfd" class="ref">mprMemdup</a>, <a href="#group___mpr_mem_1ga9fb704d3d46cef513c50545b1e602370" class="ref">mprPrintMem</a>, <a href="#group___mpr_mem_1gaa50bbaf65d1c507eeface90b4e4a6772" class="ref">mprRealloc</a>, <a href="#group___mpr_mem_1ga973f9af2499b277c8013db636f806e18" class="ref">mprRelease</a>, <a href="#group___mpr_mem_1ga24df46c2e2d208cae9e6042024ace6d0" class="ref">mprRemoveRoot</a>, <a href="#group___mpr_mem_1ga3c3a6ac0cf93f95ad5187e5c532e4020" class="ref">mprRequestGC</a>, <a href="#group___mpr_mem_1gaccaaba6bc0501553b0c44d8514795b7a" class="ref">mprResetMemError</a>, <a href="#group___mpr_mem_1gaf3bf4cede9edc8e7ee5b159db9347ba6" class="ref">mprSetManager</a>, <a href="#group___mpr_mem_1gaaeec30c055cc1a8fc21ff954e8d7da23" class="ref">mprSetMemError</a>, <a href="#group___mpr_mem_1gac7d0420dd2a1b001226547d0224408ed" class="ref">mprSetMemLimits</a>, <a href="#group___mpr_mem_1ga32742d6a82477fabee9c821138ffd824" class="ref">mprSetMemNotifier</a>, <a href="#group___mpr_mem_1ga282926d76d53bde980ec5f5c5004a3b3" class="ref">mprSetMemPolicy</a>, <a href="#group___mpr_mem_1ga4373c9b18d9ebf7ca75bd3ba4924b907" class="ref">mprValidateBlock</a>, <a href="#group___mpr_mem_1ga0161f43f76011b98d8f77430f2b78fa1" class="ref">mprVerifyMem</a>, <a href="#group___mpr_mem_1ga3494c1b7b273869e42c868f204f084aa" class="ref">mprVirtAlloc</a>, <a href="#group___mpr_mem_1ga049d7183713ef28a05c292b47b1ff733" class="ref">mprVirtFree</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f"></a>
<div class="api">
<div class="prototype">
typedef int(* MprModuleEntry)(void *data, MprModule *mp).
</div>
<div class="apiDetail">
<p>Loadable module entry point signature.</p>
<dl><dt><b>Description</b>:</dt><dd>Loadable modules can have an entry point that is invoked automatically when a module is loaded.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">data</td><td>Data passed to mprCreateModule.</td>
<tr><td class="param">mp</td><td>Module object reference returned from <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A new MprModule structure for the module. Return NULL if the module can&apos;t be initialized.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb" class="ref">MprModuleProc</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_module_1ga1d9d70fd98eb69a8c870f2202bee22eb"></a>
<div class="api">
<div class="prototype">
typedef int(* MprModuleProc)(struct MprModule *mp).
</div>
<div class="apiDetail">
<p>Module start/stop point function signature.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mp</td><td>Module object reference returned from <a class="ref" href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c">mprCreateModule</a></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise return a negative MPR error code.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_module" class="ref">MprModule</a>, <a href="#group___mpr_module_1ga12177a3af4c41e0282925ee2afb3e64f" class="ref">MprModuleEntry</a>, <a href="#group___mpr_module_1ga126d18e60c799eaee488841f25bef39c" class="ref">mprCreateModule</a>, <a href="#group___mpr_module_1gae5aa21c13afc7c3b92a1c034facf7734" class="ref">mprGetModuleSearchPath</a>, <a href="#group___mpr_module_1ga0635aab03b2954a722a39dd5e2545312" class="ref">mprLoadModule</a>, <a href="#group___mpr_module_1ga585388ae65782b535dcea572e65ed94b" class="ref">mprLoadNativeModule</a>, <a href="#group___mpr_module_1ga696ce27f96a82e9d8346a05816f49bbb" class="ref">mprLookupModule</a>, <a href="#group___mpr_module_1ga5b537cf886d489ff7252387cf3a59d68" class="ref">mprLookupModuleData</a>, <a href="#group___mpr_module_1gacc7d6e2764bf098dfc6265ee6cab1fab" class="ref">mprSearchForModule</a>, <a href="#group___mpr_module_1ga5432257cb103fefa67fd46e33a0e5917" class="ref">mprSetModuleFinalizer</a>, <a href="#group___mpr_module_1ga43d50c6e385a3592778d00c1dc53a8e7" class="ref">mprSetModuleSearchPath</a>, <a href="#group___mpr_module_1ga2db0b5b247179376ef476fa5ed05809a" class="ref">mprSetModuleTimeout</a>, <a href="#group___mpr_module_1gada93a8c2366fe16efc767791d81793bd" class="ref">mprStartModule</a>, <a href="#group___mpr_module_1gaa07f1efa0d8eb9f8cfe00749a2a8518f" class="ref">mprStopModule</a>, <a href="#group___mpr_module_1ga4174cbe5ab086ed09c6669969683bba9" class="ref">mprUnloadModule</a>, <a href="#group___mpr_module_1gadb54bcae3a174efcde1c0ea3c6f8a565" class="ref">mprUnloadNativeModule</a></dd></dl>
</div>
</div>
<a name="group___mpr_signal_1ga6d0d3705ec4497587e56828084fb95b0"></a>
<div class="api">
<div class="prototype">
typedef void(* MprSignalProc)(void *arg, struct MprSignal *sp).
</div>
<div class="apiDetail">
<p>Signal callback procedure.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_signal_service" class="ref">MprSignalService</a>, <a href="#group___mpr_signal_1gabcf186c6becc236eb4f4c8416b709f5f" class="ref">mprAddSignalHandler</a>, <a href="#group___mpr_signal_1ga107d9cacb23e9cddb7fcd1e6244638b7" class="ref">mprAddStandardSignals</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe"></a>
<div class="api">
<div class="prototype">
typedef int(* MprSocketPrebind)(struct MprSocket *sock).
</div>
<div class="apiDetail">
<p>Callback before binding a socket.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a" class="ref">MprSocketProc</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_socket_1ga86674106f5fcb47ba730f66375407e0a"></a>
<div class="api">
<div class="prototype">
typedef int(* MprSocketProc)(void *data, int mask).
</div>
<div class="apiDetail">
<p>Socket I/O callback procedure.</p>
Proc returns non-zero if the socket has been deleted
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_socket" class="ref">MprSocket</a>, <a href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe" class="ref">MprSocketPrebind</a>, <a href="#struct_mpr_socket_provider" class="ref">MprSocketProvider</a>, <a href="#struct_mpr_socket_service" class="ref">MprSocketService</a>, <a href="#group___mpr_socket_1ga4bc5be8f167a30e77e8c3b38c8594049" class="ref">mprAddSocketHandler</a>, <a href="#group___mpr_ssl_1ga1542af34e1a866b23c7c19eb44fece34" class="ref">mprCloneSsl</a>, <a href="#group___mpr_socket_1ga5bd6e40cb8a29c92a8f5e1ce9529b726" class="ref">mprCloseSocket</a>, <a href="#group___mpr_socket_1ga7157efc602b90ef7786eb89d31ffa6f7" class="ref">mprConnectSocket</a>, <a href="#group___mpr_socket_1ga0ef02d313ec268eae6038a5af0ee5cc4" class="ref">mprCreateSocket</a>, <a href="#group___mpr_ssl_1gac6a41e387c7475251098f237f5f0a802" class="ref">mprCreateSsl</a>, <a href="#group___mpr_socket_1ga5f9301dbcddf9d1a62b40c69bc67fe40" class="ref">mprDisconnectSocket</a>, <a href="#group___mpr_socket_1ga76ee7ac0bfb59b23680a835d7ac03854" class="ref">mprEnableSocketEvents</a>, <a href="#group___mpr_socket_1gacd099834cea11479ab5a5ef542bfcaac" class="ref">mprFlushSocket</a>, <a href="#group___mpr_socket_1ga8240b2dc5540ae928d19410447c2bab0" class="ref">mprGetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga64ccf4250b432690a73bb66f0a639f7a" class="ref">mprGetSocketError</a>, <a href="#group___mpr_socket_1ga4165e5eb8d5c31f79c2bf253bf5d59b0" class="ref">mprGetSocketFd</a>, <a href="#group___mpr_socket_1ga0cb09a106e793b09eebbedceaab7f85c" class="ref">mprGetSocketInfo</a>, <a href="#group___mpr_socket_1gaa4d2f67f80f168a4be7e5f3b96541bab" class="ref">mprGetSocketPort</a>, <a href="#group___mpr_socket_1ga84afd209ead21ddbd5690402caf982aa" class="ref">mprGetSocketState</a>, <a href="#group___mpr_socket_1gaa913dba81d3bc0cd51facdca4c4b21e8" class="ref">mprHasSecureSockets</a>, <a href="#group___mpr_socket_1ga122966f272c5d7d00bab8f66d569d362" class="ref">mprIsSocketEof</a>, <a href="#group___mpr_socket_1gabeeb5c489632e55d36e2139f8ac0f423" class="ref">mprIsSocketSecure</a>, <a href="#group___mpr_socket_1ga03b1900a4646dcac3b07cb9269ec549a" class="ref">mprListenOnSocket</a>, <a href="#group___mpr_ssl_1ga4cf59cde7f99bce19be6056483180e51" class="ref">mprLoadSsl</a>, <a href="#group___mpr_socket_1gaac9abd36a2e632460428af4d512ab2d0" class="ref">mprReadSocket</a>, <a href="#group___mpr_socket_1gae2baa591f0466c9c64f0cf0147ada904" class="ref">mprSetSocketBlockingMode</a>, <a href="#group___mpr_socket_1ga27866b4c10d6e45ffd96604b221cf314" class="ref">mprSetSocketEof</a>, <a href="#group___mpr_socket_1ga51594bafaa2003511990ffd804189a31" class="ref">mprSetSocketNoDelay</a>, <a href="#group___mpr_ssl_1ga472960cd4ec2360bf05ab678e7cba577" class="ref">mprSetSslCaFile</a>, <a href="#group___mpr_ssl_1gaadf254e5df954326a3f9bcd61e6a106b" class="ref">mprSetSslCaPath</a>, <a href="#group___mpr_ssl_1ga0eb821dce1b17ce08d83fa63b3ece658" class="ref">mprSetSslCertFile</a>, <a href="#group___mpr_ssl_1gaf3d90b0a59c1e786421e8f2c2167fa20" class="ref">mprSetSslCiphers</a>, <a href="#group___mpr_ssl_1gaa8293be1a1b769f03db306834ef5291f" class="ref">mprSetSslKeyFile</a>, <a href="#group___mpr_socket_1ga1a937447e0d16a18c8c4fd61df568d59" class="ref">mprSocketHandshaking</a>, <a href="#group___mpr_socket_1ga3083d9605d116fa97f48d7941da8648e" class="ref">mprSocketHasBufferedRead</a>, <a href="#group___mpr_socket_1ga23bc7f651617f75a71ba39686db02f47" class="ref">mprSocketHasBufferedWrite</a>, <a href="#group___mpr_socket_1ga12b7f81e6e807d025f0de76f27d9f54e" class="ref">mprUpgradeSocket</a>, <a href="#group___mpr_socket_1ga125e30fab937791fc0c807461bf3c797" class="ref">mprWriteSocket</a>, <a href="#group___mpr_socket_1gaf9a6fe73adb4fb12fb998bf218b2ac61" class="ref">mprWriteSocketString</a>, <a href="#group___mpr_socket_1ga793fae1ef308f441f521dedadd9c5d4a" class="ref">mprWriteSocketVector</a></dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1gad9ed01b45cca9fda02f9eb692e28cd69"></a>
<div class="api">
<div class="prototype">
typedef int(* MprTestParser)(int argc, char **argv).
</div>
<div class="apiDetail">
<p>Callback parser for non-standard command line arguments.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_test_service_1ga484b47500c380dcfad3bf310058cf5f1"></a>
<div class="api">
<div class="prototype">
typedef void(* MprTestProc)(struct MprTestGroup *tp).
</div>
<div class="apiDetail">
<p>Unit test callback procedure.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___mpr_thread_1gaa80044a8a7f610a62acf33ff10cd809d"></a>
<div class="api">
<div class="prototype">
typedef void(* MprThreadProc)(void *arg, struct MprThread *tp).
</div>
<div class="apiDetail">
<p>Thread main procedure.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">arg</td><td>Argument to the thread main.</td>
<tr><td class="param">tp</td><td>Thread instance reference.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_thread" class="ref">MprThread</a>, <a href="#struct_mpr_thread_service" class="ref">MprThreadService</a>, <a href="#group___mpr_thread_1ga442393787e4c3a1afc2cefac951c56c1" class="ref">mprCreateThread</a>, <a href="#group___mpr_thread_1gaa499ec9a691d9b74753edeac24afbcdc" class="ref">mprGetCurrentOsThread</a>, <a href="#group___mpr_thread_1gad78124a10d6b5f5351b70c20e46882b1" class="ref">mprGetCurrentThread</a>, <a href="#mpr_8h_1af66dd50712bb5ed045f1f586a6ba6eb2" class="ref">mprGetCurrentThreadName</a>, <a href="#group___mpr_thread_1gac98816057bf8f47f8d15131e68ae12f7" class="ref">mprGetThreadName</a>, <a href="#group___mpr_thread_1ga0edd7ee5a80c5566dbcd079293280b1a" class="ref">mprGetThreadPriority</a>, <a href="#mpr_8h_1a126f6aef245167a628a6c0717369b0f7" class="ref">mprResetYield</a>, <a href="#group___mpr_thread_1gad8a3b8a3d79b3def74570dc93ddd0bcd" class="ref">mprSetCurrentThreadPriority</a>, <a href="#group___mpr_thread_1ga60bd7071428f6043d834c48ee8914560" class="ref">mprSetThreadPriority</a>, <a href="#group___mpr_thread_1ga35c53df918c2f52e2e1f6961e35ee8d1" class="ref">mprStartThread</a>, <a href="#mpr_8h_1af140a2fda18b2e8461236cc44c0a2cc4" class="ref">mprYield</a></dd></dl>
</div>
</div>
<a name="group___mpr_worker_1ga1c2789aea11b60b13644c3b4e7c54f99"></a>
<div class="api">
<div class="prototype">
typedef void(* MprWorkerProc)(void *data, struct MprWorker *worker).
</div>
<div class="apiDetail">
<p>Worker thread callback signature.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">data</td><td>worker callback data. Set via mprStartWorker or mprActivateWorker.</td>
<tr><td class="param">worker</td><td>Reference to the worker thread object.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#struct_mpr_worker_service" class="ref">MprWorkerService</a>, <a href="#struct_mpr_worker_stats" class="ref">MprWorkerStats</a>, <a href="#group___mpr_worker_1ga7fe4c3fb94490eb462405d86f71514d7" class="ref">mprDedicateWorker</a>, <a href="#group___mpr_worker_1ga29388ee88be57f7e85ff6d9cc9399491" class="ref">mprGetMaxWorkers</a>, <a href="#mpr_8h_1adae3b874e39e0d5e0155d5179f1d83cc" class="ref">mprReleaseWorker</a>, <a href="#group___mpr_worker_1ga9982a2441762d3a7f82c01c1c5be4476" class="ref">mprSetMaxWorkers</a>, <a href="#group___mpr_worker_1gabb03b89f212e6a3fd8bc13e66927ab68" class="ref">mprSetMinWorkers</a>, <a href="#group___mpr_worker_1gad7721cca919f57f9b85434e6435ef092" class="ref">mprSetWorkerStackSize</a>, <a href="#mpr_8h_1aff85a5fec251ea6ce4c9f24532b93e11" class="ref">mprStartWorker</a></dd></dl>
</div>
</div>
<a name="group___mpr_xml_1ga157f8f891909ac6dc28e542932e2d346"></a>
<div class="api">
<div class="prototype">
typedef int(* MprXmlHandler)(struct MprXml *xp, int state, cchar *tagName, cchar *attName, cchar *value).
</div>
<div class="apiDetail">
<p>XML callback handler.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">xp</td><td>XML instance reference.</td>
<tr><td class="param">state</td><td>XML state.</td>
<tr><td class="param">tagName</td><td>Current XML tag.</td>
<tr><td class="param">attName</td><td>Current XML attribute.</td>
<tr><td class="param">value</td><td>Current XML element value.</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___mpr_xml" class="ref">MprXml</a>, <a href="#mpr_8h_1ae95233022e6cc90ea564a396cf978e0a" class="ref">MprXmlInputStream</a>, <a href="#group___mpr_xml_1gac36c085a4baf423492a839f3f22ae567" class="ref">mprXmlGetErrorMsg</a>, <a href="#group___mpr_xml_1ga05338788d8a31a3305ec96890f1dfbde" class="ref">mprXmlGetLineNumber</a>, <a href="#group___mpr_xml_1ga5b23345f34a9e3d9310081435516993b" class="ref">mprXmlGetParseArg</a>, <a href="#group___mpr_xml_1gac4eb812c87d2d0af296617c7cf2081c2" class="ref">mprXmlOpen</a>, <a href="#group___mpr_xml_1ga1341ea482faf1301d867e71575ba638a" class="ref">mprXmlParse</a>, <a href="#group___mpr_xml_1ga815cdc307b58663f2890711f60b690e3" class="ref">mprXmlSetParseArg</a></dd></dl>
</div>
</div>
<a name="struct_mpr_cmd_child"></a>
<div class="api">
<div class="prototype">MprCmdChild</div>
<div class="apiDetail">
<p>Child status structure.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_cmd_service"></a>
<div class="api">
<div class="prototype">MprCmdService</div>
<div class="apiDetail">
<p>Command execution service.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_cond"></a>
<div class="api">
<div class="prototype">MprCond</div>
<div class="apiDetail">
<p>Condition variable for single and multi-thread synchronization.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">pthread_cond_t</td><td><td>cv</td><td>
Unix pthreads condition variable.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Thread synchronization mutex.
</td>
<tr><td class="param">int</td><td><td>triggered</td><td>
Value of the condition.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_dir_entry"></a>
<div class="api">
<div class="prototype">MprDirEntry</div>
<div class="apiDetail">
<p>Directory entry description.</p>
<dl><dt><b>Description</b>:</dt><dd>The MprGetDirList will create a list of directory entries.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">bool</td><td><td>isDir</td><td>
True if the file is a directory.
</td>
<tr><td class="param">bool</td><td><td>isLink</td><td>
True if the file is a symbolic link.
</td>
<tr><td class="param">MprTime</td><td><td>lastModified</td><td>
Time the file was last modified.
</td>
<tr><td class="param">char *</td><td><td>name</td><td>
Name of the file.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1a87e9f435008723c7b1489af1944c6e20">MprOff</a></td><td><td>size</td><td>
Size of the file.
</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="struct_mpr_free_mem"></a>
<div class="api">
<div class="prototype">MprFreeMem</div>
<div class="apiDetail">
<p>Block structure when on a free list.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uint</td><td><td>count</td><td>
Number of blocks on the queue.
</td>
<tr><td class="param">int</td><td><td>minSize</td><td>
Min size of block in queue.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_free_mem">MprFreeMem</a> *</td><td><td>next</td><td>
Next free block.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_free_mem">MprFreeMem</a> *</td><td><td>prev</td><td>
Previous free block.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_hash"></a>
<div class="api">
<div class="prototype">MprHash</div>
<div class="apiDetail">
<p>Hash table control structure.</p>
<dl><dt>See Also:</dt><dd>
</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">MprKey **</td><td><td>buckets</td><td>
Hash collision bucket table.
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
Hash control flags.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1ad38871e3f9f06db46d2bfd29b4dfe9a3">MprHashProc</a></td><td><td>fn</td><td>
Hash function.
</td>
<tr><td class="param">int</td><td><td>length</td><td>
Number of symbols in the table.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
GC marker sync.
</td>
<tr><td class="param">int</td><td><td>size</td><td>
Size of the buckets array.
</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="struct_mpr_heap"></a>
<div class="api">
<div class="prototype">MprHeap</div>
<div class="apiDetail">
<p>Memory allocator heap.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>active</td><td>
Active generation for new and active blocks.
</td>
<tr><td class="param">int</td><td><td>allocPolicy</td><td>
Memory allocation depletion policy.
</td>
<tr><td class="param">int</td><td><td>chunkSize</td><td>
O/S memory allocation chunk size.
</td>
<tr><td class="param">int</td><td><td>collecting</td><td>
Manual GC is running.
</td>
<tr><td class="param">int</td><td><td>dead</td><td>
Dead generation (blocks about to be freed).
</td>
<tr><td class="param">int</td><td><td>destroying</td><td>
Destroying the heap.
</td>
<tr><td class="param">int</td><td><td>earlyYieldQuota</td><td>
Quota of new allocations before yielding threads early to cleanup.
</td>
<tr><td class="param">int</td><td><td>enabled</td><td>
GC is enabled.
</td>
<tr><td class="param">int</td><td><td>eternal</td><td>
Eternal generation (permanent and dead blocks).
</td>
<tr><td class="param">int</td><td><td>flags</td><td>
GC operational control flags.
</td>
<tr><td class="param">int</td><td><td>from</td><td>
Eligible mprCollectGarbage flags.
</td>
<tr><td class="param">int</td><td><td>gcRequested</td><td>
GC has been requested.
</td>
<tr><td class="param">int</td><td><td>hasError</td><td>
Memory allocation error.
</td>
<tr><td class="param">int</td><td><td>hasSweeper</td><td>
Has dedicated sweeper thread.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_spin">MprSpin</a></td><td><td>heapLock</td><td>
Heap allocation lock.
</td>
<tr><td class="param">int</td><td><td>iteration</td><td>
GC iteration counter (debug only).
</td>
<tr><td class="param">struct MprThread *</td><td><td>marker</td><td>
Marker thread.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_cond">MprCond</a> *</td><td><td>markerCond</td><td>
Marker sleep cond var.
</td>
<tr><td class="param">int</td><td><td>marking</td><td>
Actually marking objects now.
</td>
<tr><td class="param">int</td><td><td>mustYield</td><td>
Threads must yield for GC which is due.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Locking for state changes.
</td>
<tr><td class="param">int</td><td><td>newCount</td><td>
Count of new gen allocations.
</td>
<tr><td class="param">int</td><td><td>newQuota</td><td>
Quota of new allocations before idle GC worthwhile.
</td>
<tr><td class="param">int</td><td><td>nextSeqno</td><td>
Next sequence number.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_mem_1ga9ff64b5b3c9c596d6a16d3bb361a0273">MprMemNotifier</a></td><td><td>notifier</td><td>
Memory allocation failure callback.
</td>
<tr><td class="param">int</td><td><td>pageSize</td><td>
System page size.
</td>
<tr><td class="param">int</td><td><td>pauseGC</td><td>
Pause GC (short).
</td>
<tr><td class="param">ssize</td><td><td>priorFree</td><td>
Last sweep free memory.
</td>
<tr><td class="param">int</td><td><td>priorNewCount</td><td>
Last sweep new count.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_region">MprRegion</a> *</td><td><td>regions</td><td>
List of memory regions.
</td>
<tr><td class="param">int</td><td><td>rootIndex</td><td>
Marker root scan index.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_spin">MprSpin</a></td><td><td>rootLock</td><td>
Root locking.
</td>
<tr><td class="param">struct MprList *</td><td><td>roots</td><td>
List of GC root objects.
</td>
<tr><td class="param">int</td><td><td>scribble</td><td>
Scribble over freed memory (slow).
</td>
<tr><td class="param">int</td><td><td>stale</td><td>
Stale generation for blocks that may have no references.
</td>
<tr><td class="param">struct MprThread *</td><td><td>sweeper</td><td>
Optional sweeper thread.
</td>
<tr><td class="param">int</td><td><td>sweeping</td><td>
Actually sweeping objects now.
</td>
<tr><td class="param">int</td><td><td>track</td><td>
Track memory allocations.
</td>
<tr><td class="param">int</td><td><td>verify</td><td>
Verify memory contents (very slow).
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_i_o_vec"></a>
<div class="api">
<div class="prototype">MprIOVec</div>
<div class="apiDetail">
<p>Vectored write array.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssize</td><td><td>len</td><td>
Length of block to write.
</td>
<tr><td class="param">char *</td><td><td>start</td><td>
Start of block to write.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_json_callback"></a>
<div class="api">
<div class="prototype">MprJsonCallback</div>
<div class="apiDetail">
<p>JSON callbacks.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int(*</td><td><td>checkState)(struct MprJson *jp, cchar *name)</td><td>
Check state callback for JSON deserialization.
This function is called at the conclusion of object levels when a &quot;}&quot; or &quot;]&quot; is encountered in the input stream. It is also invoked after each &quot;name:&quot; is parsed.
</td>
<tr><td class="param"><a class="ref" href="#mpr_8h_1ae2a3626d38470dba2a56311151b09574">MprObj</a> *(*</td><td><td>makeObj)(struct MprJson *jp, bool list)</td><td>
MakeObject callback for JSON deserialization.
This function is called to construct an object for each level in the object tree. Objects will be either arrays or objects.
</td>
<tr><td class="param">void(*</td><td><td>parseError)(struct MprJson *jp, cchar *msg)</td><td>
Handle a parse error.
This function is called from mprJsonParseError to handle error reporting.
</td>
<tr><td class="param">int(*</td><td><td>setValue)(struct MprJson *jp, MprObj *obj, int index, cchar *name, cchar *value, int valueType)</td><td>
SetValue callback for JSON deserialization.
This function is called to a property value in an object.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_key_value"></a>
<div class="api">
<div class="prototype">MprKeyValue</div>
<div class="apiDetail">
<p>Key value pairs for use with MprList or MprKey.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Stable.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">void *</td><td><td>key</td><td>
Key string.
</td>
<tr><td class="param">void *</td><td><td>value</td><td>
Associated value for the key.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_mem_stats"></a>
<div class="api">
<div class="prototype">MprMemStats</div>
<div class="apiDetail">
<p>Memory allocator statistics.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">ssize</td><td><td>bytesAllocated</td><td>
Bytes currently allocated.
</td>
<tr><td class="param">ssize</td><td><td>bytesFree</td><td>
Bytes currently free.
</td>
<tr><td class="param">uint</td><td><td>errors</td><td>
Allocation errors.
</td>
<tr><td class="param">ssize</td><td><td>freed</td><td>
Bytes freed in last sweep.
</td>
<tr><td class="param">int</td><td><td>inMemException</td><td>
Recursive protect.
</td>
<tr><td class="param">ssize</td><td><td>maxMemory</td><td>
Max memory that can be allocated.
</td>
<tr><td class="param">uint</td><td><td>numCpu</td><td>
Number of CPUs.
</td>
<tr><td class="param">uint</td><td><td>pageSize</td><td>
System page size.
</td>
<tr><td class="param">uint64</td><td><td>ram</td><td>
System RAM size in bytes.
</td>
<tr><td class="param">ssize</td><td><td>redLine</td><td>
Warn if allocation exceeds this level.
</td>
<tr><td class="param">int</td><td><td>regions</td><td>
Number of allocated regions.
</td>
<tr><td class="param">ssize</td><td><td>rss</td><td>
OS calculated resident stack size in bytes.
</td>
<tr><td class="param">uint64</td><td><td>user</td><td>
System user RAM size in bytes (excludes kernel).
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_mutex"></a>
<div class="api">
<div class="prototype">MprMutex</div>
<div class="apiDetail">
<p>Multithreading lock control structure.</p>
<dl><dt><b>Description</b>:</dt><dd><a class="ref" href="#struct_mpr_mutex">MprMutex</a> is used for multithread locking in multithreaded applications.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="struct_mpr_region"></a>
<div class="api">
<div class="prototype">MprRegion</div>
<div class="apiDetail">
<p>Memmory regions allocated from the O/S.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>freeable</td><td>
Set to true when completely unused.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_spin">MprSpin</a></td><td><td>lock</td><td>
Region multithread lock.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_region">MprRegion</a> *</td><td><td>next</td><td>
Next region.
</td>
<tr><td class="param">ssize</td><td><td>size</td><td>
Size of region including region header.
</td>
<tr><td class="param">MprMem *</td><td><td>start</td><td>
Start of region data.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_rom_inode"></a>
<div class="api">
<div class="prototype">MprRomInode</div>
<div class="apiDetail">
<p>A RomInode is created for each file in the Rom file system.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uchar *</td><td><td>data</td><td>
Pointer to file data.
</td>
<tr><td class="param">int</td><td><td>num</td><td>
Inode number.
</td>
<tr><td class="param">char *</td><td><td>path</td><td>
File path.
</td>
<tr><td class="param">int</td><td><td>size</td><td>
Size of file.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_signal_info"></a>
<div class="api">
<div class="prototype">MprSignalInfo</div>
<div class="apiDetail">
<p>Per signal structure.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>triggered</td><td>
Set to true when triggered.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_signal_service"></a>
<div class="api">
<div class="prototype">MprSignalService</div>
<div class="apiDetail">
<p>Signal service control.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>hasSignals</td><td>
Signal sent to process.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_signal_info">MprSignalInfo</a></td><td><td>info[MPR_MAX_SIGNALS]</td><td>
Actual signal info and arg.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multithread sync.
</td>
<tr><td class="param">struct sigaction</td><td><td>prior[MPR_MAX_SIGNALS]</td><td>
Prior sigaction handler before hooking.
</td>
<tr><td class="param">MprSignal **</td><td><td>signals</td><td>
Signal handlers.
</td>
<tr><td class="param">MprList *</td><td><td>standard</td><td>
Standard signal handlers.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_socket_provider"></a>
<div class="api">
<div class="prototype">MprSocketProvider</div>
<div class="apiDetail">
<p>Socket service provider interface.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_socket_service"></a>
<div class="api">
<div class="prototype">MprSocketService</div>
<div class="apiDetail">
<p>Mpr socket service class.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>defaultProvider</td><td>
Default secure provider for SSL connections.
</td>
<tr><td class="param">int</td><td><td>hasIPv6</td><td>
System has supoprt for IPv6.
</td>
<tr><td class="param">int</td><td><td>maxAccept</td><td>
Maximum number of accepted client socket connections.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multithread locking.
</td>
<tr><td class="param">int</td><td><td>numAccept</td><td>
Count of client socket connections.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_socket_1ga64bb2cf789d6ba4e15b33ffe2aa6affe">MprSocketPrebind</a></td><td><td>prebind</td><td>
Prebind callback.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_hash">MprHash</a> *</td><td><td>providers</td><td>
Secure socket providers.
</td>
<tr><td class="param">MprList *</td><td><td>secureSockets</td><td>
List of secured (matrixssl) sockets.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_socket_provider">MprSocketProvider</a> *</td><td><td>standardProvider</td><td>
Socket provider for non-SSL connections.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_spin"></a>
<div class="api">
<div class="prototype">MprSpin</div>
<div class="apiDetail">
<p>Multithreading spin lock control structure.</p>
<dl><dt><b>Description</b>:</dt><dd><a class="ref" href="#struct_mpr_spin">MprSpin</a> is used for multithread locking in multithreaded applications.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="struct_mpr_test_case"></a>
<div class="api">
<div class="prototype">MprTestCase</div>
<div class="apiDetail">
<p>Test case structure.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_test_def"></a>
<div class="api">
<div class="prototype">MprTestDef</div>
<div class="apiDetail">
<p>Test case definition.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_test_failure"></a>
<div class="api">
<div class="prototype">MprTestFailure</div>
<div class="apiDetail">
<p>Test failure record.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>loc</td><td>
Program location of the failure.
</td>
<tr><td class="param">char *</td><td><td>message</td><td>
Failure message typically the assertion program text.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_test_group"></a>
<div class="api">
<div class="prototype">MprTestGroup</div>
<div class="apiDetail">
<p>A test group is a group of tests to cover a unit of functionality.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">MprList *</td><td><td>cases</td><td>
List of tests in this group.
</td>
<tr><td class="param">struct HttpConn *</td><td><td>conn</td><td>
Http connection for this group.
</td>
<tr><td class="param">char *</td><td><td>content</td><td>
Cached response content.
</td>
<tr><td class="param">void *</td><td><td>data</td><td>
Test specific data.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_test_def">MprTestDef</a> *</td><td><td>def</td><td>
Test definition ref.
</td>
<tr><td class="param">MprDispatcher *</td><td><td>dispatcher</td><td>
Per group thread dispatcher.
</td>
<tr><td class="param">int</td><td><td>failedCount</td><td>
Total failures of this test.
</td>
<tr><td class="param">MprList *</td><td><td>failures</td><td>
List of all failures.
</td>
<tr><td class="param">char *</td><td><td>fullName</td><td>
Fully qualified name of test.
</td>
<tr><td class="param">MprList *</td><td><td>groups</td><td>
List of groups.
</td>
<tr><td class="param">int</td><td><td>hasInternet</td><td>
Convenience flag for internet available for use.
</td>
<tr><td class="param">int</td><td><td>hasIPv6</td><td>
Convenience flag for IPv6 service.
</td>
<tr><td class="param">struct Http *</td><td><td>http</td><td>
Http service.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Multi-thread sync.
</td>
<tr><td class="param">char *</td><td><td>name</td><td>
Name of test.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_test_group">MprTestGroup</a> *</td><td><td>parent</td><td>
Parent test group.
</td>
<tr><td class="param">struct <a class="ref" href="#struct_mpr_test_group">MprTestGroup</a> *</td><td><td>root</td><td>
Top level test group parent.
</td>
<tr><td class="param">MprTestService *</td><td><td>service</td><td>
Reference to the service.
</td>
<tr><td class="param">bool</td><td><td>skip</td><td>
Skip this test.
</td>
<tr><td class="param">bool</td><td><td>skipWarned</td><td>
Warned that test will be skipped.
</td>
<tr><td class="param">bool</td><td><td>success</td><td>
Result of last run.
</td>
<tr><td class="param">int</td><td><td>testComplete</td><td>
Test complete signal.
</td>
<tr><td class="param">int</td><td><td>testCount</td><td>
Count of tests.
</td>
<tr><td class="param">int</td><td><td>testDepth</td><td>
Depth at which test should run.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_thread_local"></a>
<div class="api">
<div class="prototype">MprThreadLocal</div>
<div class="apiDetail">
<p>Thread local data storage.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">pthread_key_t</td><td><td>key</td><td>
Data key.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_thread_service"></a>
<div class="api">
<div class="prototype">MprThreadService</div>
<div class="apiDetail">
<p>Thread service.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" href="#struct_mpr_cond">MprCond</a> *</td><td><td>cond</td><td>
Multi-thread sync.
</td>
<tr><td class="param">struct MprThread *</td><td><td>mainThread</td><td>
Main application Mpr thread id.
</td>
<tr><td class="param">ssize</td><td><td>stackSize</td><td>
Default thread stack size.
</td>
<tr><td class="param">MprList *</td><td><td>threads</td><td>
List of all threads.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_wait_service"></a>
<div class="api">
<div class="prototype">MprWaitService</div>
<div class="apiDetail">
<p>Wait Service.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="struct_mpr_worker_service"></a>
<div class="api">
<div class="prototype">MprWorkerService</div>
<div class="apiDetail">
<p>Worker Thread Service.</p>
<dl><dt><b>Description</b>:</dt><dd>The MPR provides a worker thread pool for rapid starting and assignment of threads to tasks.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">MprList *</td><td><td>busyThreads</td><td>
List of threads to service tasks.
</td>
<tr><td class="param">MprList *</td><td><td>idleThreads</td><td>
List of threads to service tasks.
</td>
<tr><td class="param">int</td><td><td>maxThreads</td><td>
Max # threads in worker pool.
</td>
<tr><td class="param">int</td><td><td>maxUsedThreads</td><td>
Max threads ever used.
</td>
<tr><td class="param">int</td><td><td>minThreads</td><td>
Max # threads in worker pool.
</td>
<tr><td class="param"><a class="ref" href="#struct_mpr_mutex">MprMutex</a> *</td><td><td>mutex</td><td>
Per task synchronization.
</td>
<tr><td class="param">int</td><td><td>nextThreadNum</td><td>
Unique next thread number.
</td>
<tr><td class="param">int</td><td><td>numThreads</td><td>
Current number of threads in worker pool.
</td>
<tr><td class="param">struct MprEvent *</td><td><td>pruneTimer</td><td>
Timer for excess threads pruner.
</td>
<tr><td class="param">ssize</td><td><td>stackSize</td><td>
Stack size for worker threads.
</td>
<tr><td class="param"><a class="ref" href="#group___mpr_worker_1ga1c2789aea11b60b13644c3b4e7c54f99">MprWorkerProc</a></td><td><td>startWorker</td><td>
Worker thread startup hook.
</td>
</table></dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
</div>
</div>
<a name="struct_mpr_worker_stats"></a>
<div class="api">
<div class="prototype">MprWorkerStats</div>
<div class="apiDetail">
<p>Statistics for Workers.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Internal.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>busy</td><td>
Number of busy workers.
</td>
<tr><td class="param">int</td><td><td>idle</td><td>
Number of idle workers.
</td>
<tr><td class="param">int</td><td><td>max</td><td>
Configured max number of workers.
</td>
<tr><td class="param">int</td><td><td>maxUsed</td><td>
Max number of workers ever used used.
</td>
<tr><td class="param">int</td><td><td>min</td><td>
Configured minimum number of workers.
</td>
<tr><td class="param">int</td><td><td>yielded</td><td>
Number of busy workers yielded for GC.
</td>
</table></dd></dl>
</div>
</div>
</div>
</div>
<!-- BeginDsi "dsi/bottom.html" -->
<div class="bottom">
<p class="footnote">
<a href="../product/copyright.html" >&copy; Embedthis Software LLC, 2003-2013.
All rights reserved. Embedthis, Appweb, ESP, Ejscript and Embedthis GoAhead are trademarks of Embedthis Software LLC.</a>
</p>
</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('search', '1', {language : 'en'});
google.setOnLoadCallback(function() {
var customSearchControl = new google.search.CustomSearchControl(
'000262706376373952077:1hs0lhenihk');
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.enableSearchboxOnly("http://appwebserver.org/search.html");
customSearchControl.draw('cse-search-form', options);
}, true);
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-179169-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>