<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="generator" content="rustdoc"> <meta name="description" content="Source to the Rust file `/home/travis/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-0.7.14/src/version.rs`."> <meta name="keywords" content="rust, rustlang, rust-lang"> <title>version.rs.html -- source</title> <link rel="stylesheet" type="text/css" href="../../rustdoc.css"> <link rel="stylesheet" type="text/css" href="../../main.css"> </head> <body class="rustdoc"> <!--[if lte IE 8]> <div class="warning"> This old browser is unsupported and will most likely display funky things. </div> <![endif]--> <nav class="sidebar"> </nav> <nav class="sub"> <form class="search-form js-only"> <div class="search-container"> <input class="search-input" name="search" autocomplete="off" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"> </div> </form> </nav> <section id='main' class="content source"><pre class="line-numbers"><span id="1"> 1</span> <span id="2"> 2</span> <span id="3"> 3</span> <span id="4"> 4</span> <span id="5"> 5</span> <span id="6"> 6</span> <span id="7"> 7</span> <span id="8"> 8</span> <span id="9"> 9</span> <span id="10">10</span> <span id="11">11</span> <span id="12">12</span> <span id="13">13</span> <span id="14">14</span> <span id="15">15</span> <span id="16">16</span> <span id="17">17</span> <span id="18">18</span> <span id="19">19</span> <span id="20">20</span> <span id="21">21</span> <span id="22">22</span> <span id="23">23</span> <span id="24">24</span> <span id="25">25</span> <span id="26">26</span> <span id="27">27</span> <span id="28">28</span> <span id="29">29</span> <span id="30">30</span> <span id="31">31</span> <span id="32">32</span> <span id="33">33</span> <span id="34">34</span> <span id="35">35</span> <span id="36">36</span> <span id="37">37</span> <span id="38">38</span> <span id="39">39</span> <span id="40">40</span> <span id="41">41</span> <span id="42">42</span> <span id="43">43</span> <span id="44">44</span> <span id="45">45</span> <span id="46">46</span> <span id="47">47</span> <span id="48">48</span> <span id="49">49</span> <span id="50">50</span> <span id="51">51</span> <span id="52">52</span> <span id="53">53</span> <span id="54">54</span> <span id="55">55</span> <span id="56">56</span> <span id="57">57</span> <span id="58">58</span> <span id="59">59</span> <span id="60">60</span> <span id="61">61</span> <span id="62">62</span> <span id="63">63</span> <span id="64">64</span> <span id="65">65</span> <span id="66">66</span> <span id="67">67</span> <span id="68">68</span> <span id="69">69</span> <span id="70">70</span> <span id="71">71</span> <span id="72">72</span> <span id="73">73</span> <span id="74">74</span> <span id="75">75</span> <span id="76">76</span> <span id="77">77</span> <span id="78">78</span> <span id="79">79</span> <span id="80">80</span> <span id="81">81</span> <span id="82">82</span> <span id="83">83</span> <span id="84">84</span> <span id="85">85</span> <span id="86">86</span> <span id="87">87</span> <span id="88">88</span> </pre><pre class='rust '> <span class='comment'>// Licensed under the Apache License, Version 2.0 (the "License");</span> <span class='comment'>// you may not use this file except in compliance with the License.</span> <span class='comment'>// You may obtain a copy of the License at</span> <span class='comment'>//</span> <span class='comment'>// http://www.apache.org/licenses/LICENSE-2.0</span> <span class='comment'>//</span> <span class='comment'>// Unless required by applicable law or agreed to in writing, software</span> <span class='comment'>// distributed under the License is distributed on an "AS IS" BASIS,</span> <span class='comment'>// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span> <span class='comment'>// See the License for the specific language governing permissions and</span> <span class='comment'>// limitations under the License.</span> <span class='comment'>//</span> <span class='kw'>use</span> <span class='ident'>ffi</span>; <span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>ffi</span>::<span class='ident'>CStr</span>; <span class='doccomment'>/// OPENSSL_VERSION_NUMBER is a numeric release version identifier:</span> <span class='doccomment'>///</span> <span class='doccomment'>/// `MNNFFPPS: major minor fix patch status`</span> <span class='doccomment'>///</span> <span class='doccomment'>/// The status nibble has one of the values 0 for development, 1 to e for betas 1 to 14, and f for release.</span> <span class='doccomment'>///</span> <span class='doccomment'>/// for example</span> <span class='doccomment'>///</span> <span class='doccomment'>/// `0x000906000 == 0.9.6 dev`</span> <span class='doccomment'>/// `0x000906023 == 0.9.6b beta 3`</span> <span class='doccomment'>/// `0x00090605f == 0.9.6e release`</span> <span class='doccomment'>///</span> <span class='doccomment'>/// Versions prior to 0.9.3 have identifiers < 0x0930. Versions between 0.9.3 and 0.9.5 had a version identifier with this interpretation:</span> <span class='doccomment'>///</span> <span class='doccomment'>/// `MMNNFFRBB major minor fix final beta/patch`</span> <span class='doccomment'>///</span> <span class='doccomment'>/// for example</span> <span class='doccomment'>///</span> <span class='doccomment'>/// `0x000904100 == 0.9.4 release`</span> <span class='doccomment'>/// `0x000905000 == 0.9.5 dev`</span> <span class='doccomment'>///</span> <span class='doccomment'>/// Version 0.9.5a had an interim interpretation that is like the current one, except the patch level got the highest bit set, to keep continuity. The number was therefore 0x0090581f</span> <span class='doccomment'>///</span> <span class='doccomment'>/// The return value of this function can be compared to the macro to make sure that the correct version of the library has been loaded, especially when using DLLs on Windows systems.</span> <span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>number</span>() <span class='op'>-></span> <span class='ident'>i64</span> { <span class='kw'>unsafe</span> { <span class='ident'>ffi</span>::<span class='ident'>SSLeay</span>() <span class='kw'>as</span> <span class='ident'>i64</span> } } <span class='doccomment'>/// The text variant of the version number and the release date. For example, "OpenSSL 0.9.5a 1 Apr 2000".</span> <span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>version</span>() <span class='op'>-></span> <span class='kw-2'>&</span><span class='lifetime'>'static</span> <span class='ident'>str</span> { <span class='kw'>unsafe</span> { <span class='ident'>CStr</span>::<span class='ident'>from_ptr</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLeay_version</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLEAY_VERSION</span>)).<span class='ident'>to_str</span>().<span class='ident'>unwrap</span>() } } <span class='doccomment'>/// The compiler flags set for the compilation process in the form "compiler: ..." if available or</span> <span class='doccomment'>/// "compiler: information not available" otherwise.</span> <span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>c_flags</span>() <span class='op'>-></span> <span class='kw-2'>&</span><span class='lifetime'>'static</span> <span class='ident'>str</span> { <span class='kw'>unsafe</span> { <span class='ident'>CStr</span>::<span class='ident'>from_ptr</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLeay_version</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLEAY_CFLAGS</span>)).<span class='ident'>to_str</span>().<span class='ident'>unwrap</span>() } } <span class='doccomment'>/// The date of the build process in the form "built on: ..." if available or "built on: date not available" otherwise.</span> <span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>built_on</span>() <span class='op'>-></span> <span class='kw-2'>&</span><span class='lifetime'>'static</span> <span class='ident'>str</span> { <span class='kw'>unsafe</span> { <span class='ident'>CStr</span>::<span class='ident'>from_ptr</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLeay_version</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLEAY_BUILT_ON</span>)).<span class='ident'>to_str</span>().<span class='ident'>unwrap</span>() } } <span class='doccomment'>/// The "Configure" target of the library build in the form "platform: ..." if available or "platform: information not available" otherwise.</span> <span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>platform</span>() <span class='op'>-></span> <span class='kw-2'>&</span><span class='lifetime'>'static</span> <span class='ident'>str</span> { <span class='kw'>unsafe</span> { <span class='ident'>CStr</span>::<span class='ident'>from_ptr</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLeay_version</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLEAY_PLATFORM</span>)).<span class='ident'>to_str</span>().<span class='ident'>unwrap</span>() } } <span class='doccomment'>/// The "OPENSSLDIR" setting of the library build in the form "OPENSSLDIR: "..."" if available or "OPENSSLDIR: N/A" otherwise.</span> <span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>dir</span>() <span class='op'>-></span> <span class='kw-2'>&</span><span class='lifetime'>'static</span> <span class='ident'>str</span> { <span class='kw'>unsafe</span> { <span class='ident'>CStr</span>::<span class='ident'>from_ptr</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLeay_version</span>(<span class='ident'>ffi</span>::<span class='ident'>SSLEAY_DIR</span>)).<span class='ident'>to_str</span>().<span class='ident'>unwrap</span>() } } <span class='doccomment'>/// This test ensures that we do not segfault when calling the functions of this module</span> <span class='doccomment'>/// and that the strings respect a reasonable format.</span> <span class='attribute'>#[<span class='ident'>test</span>]</span> <span class='kw'>fn</span> <span class='ident'>test_versions</span>() { <span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"Number: '{}'"</span>, <span class='ident'>number</span>()); <span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"Version: '{}'"</span>, <span class='ident'>version</span>()); <span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"C flags: '{}'"</span>, <span class='ident'>c_flags</span>()); <span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"Built on: '{}'"</span>, <span class='ident'>built_on</span>()); <span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"Platform: '{}'"</span>, <span class='ident'>platform</span>()); <span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"Dir: '{}'"</span>, <span class='ident'>dir</span>()); <span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>number</span>() <span class='op'>></span> <span class='number'>0</span>); <span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>version</span>().<span class='ident'>starts_with</span>(<span class='string'>"OpenSSL"</span>)); <span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>c_flags</span>().<span class='ident'>starts_with</span>(<span class='string'>"compiler:"</span>)); <span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>built_on</span>().<span class='ident'>starts_with</span>(<span class='string'>"built on:"</span>)); <span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>dir</span>().<span class='ident'>starts_with</span>(<span class='string'>"OPENSSLDIR:"</span>)); } </pre> </section> <section id='search' class="content hidden"></section> <section class="footer"></section> <aside id="help" class="hidden"> <div> <h1 class="hidden">Help</h1> <div class="shortcuts"> <h2>Keyboard Shortcuts</h2> <dl> <dt>?</dt> <dd>Show this help dialog</dd> <dt>S</dt> <dd>Focus the search field</dd> <dt>⇤</dt> <dd>Move up in search results</dd> <dt>⇥</dt> <dd>Move down in search results</dd> <dt>⏎</dt> <dd>Go to active search result</dd> <dt>+</dt> <dd>Collapse/expand all sections</dd> </dl> </div> <div class="infos"> <h2>Search Tricks</h2> <p> Prefix searches with a type followed by a colon (e.g. <code>fn:</code>) to restrict the search to a given type. </p> <p> Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>. </p> <p> Search functions by type signature (e.g. <code>vec -> usize</code> or <code>* -> vec</code>) </p> </div> </div> </aside> <script> window.rootPath = "../../"; window.currentCrate = "openssl"; window.playgroundUrl = ""; </script> <script src="../../jquery.js"></script> <script src="../../main.js"></script> <script defer src="../../search-index.js"></script> </body> </html>