| Current File : //usr/share/doc/dbus/api/dbus-misc_8c_source.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>D-Bus: dbus-misc.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">D-Bus
 <span id="projectnumber">1.8.20</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">dbus-misc.c</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */</span>
<a name="l00002"></a>00002 <span class="comment">/* dbus-misc.c A few assorted public functions that don't fit elsewhere</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Copyright (C) 2006 Red Hat, Inc.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> * Licensed under the Academic Free License version 2.1</span>
<a name="l00007"></a>00007 <span class="comment"> * </span>
<a name="l00008"></a>00008 <span class="comment"> * This program is free software; you can redistribute it and/or modify</span>
<a name="l00009"></a>00009 <span class="comment"> * it under the terms of the GNU General Public License as published by</span>
<a name="l00010"></a>00010 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span>
<a name="l00011"></a>00011 <span class="comment"> * (at your option) any later version.</span>
<a name="l00012"></a>00012 <span class="comment"> *</span>
<a name="l00013"></a>00013 <span class="comment"> * This program is distributed in the hope that it will be useful,</span>
<a name="l00014"></a>00014 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00015"></a>00015 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="l00016"></a>00016 <span class="comment"> * GNU General Public License for more details.</span>
<a name="l00017"></a>00017 <span class="comment"> * </span>
<a name="l00018"></a>00018 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
<a name="l00019"></a>00019 <span class="comment"> * along with this program; if not, write to the Free Software</span>
<a name="l00020"></a>00020 <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> */</span>
<a name="l00023"></a>00023
<a name="l00024"></a>00024 <span class="preprocessor">#include <config.h></span>
<a name="l00025"></a>00025 <span class="preprocessor">#include "dbus-misc.h"</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include "dbus-internals.h"</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include "dbus-string.h"</span>
<a name="l00028"></a>00028
<a name="l00072"></a>00072 <span class="keywordtype">char</span>*
<a name="l00073"></a><a class="code" href="group__DBusMisc.html#ga2b21c9a12fea5f92763441c65ccbfcf9">00073</a> <a class="code" href="group__DBusMisc.html#ga2b21c9a12fea5f92763441c65ccbfcf9" title="Obtains the machine UUID of the machine this process is running on.">dbus_get_local_machine_id</a> (<span class="keywordtype">void</span>)
<a name="l00074"></a>00074 {
<a name="l00075"></a>00075 <a class="code" href="structDBusString.html">DBusString</a> uuid;
<a name="l00076"></a>00076 <span class="keywordtype">char</span> *s;
<a name="l00077"></a>00077
<a name="l00078"></a>00078 s = <a class="code" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>;
<a name="l00079"></a>00079
<a name="l00080"></a>00080 <span class="keywordflow">if</span> (!<a class="code" href="group__DBusString.html#ga348252317f7bb8ac43529972945830ae" title="Initializes a string.">_dbus_string_init</a> (&uuid))
<a name="l00081"></a>00081 <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>;
<a name="l00082"></a>00082
<a name="l00083"></a>00083 <span class="keywordflow">if</span> (!<a class="code" href="group__DBusInternalsUtils.html#ga49ba67405d677af6cde9329ed87ea91f" title="Gets the hex-encoded UUID of the machine this function is executed on.">_dbus_get_local_machine_uuid_encoded</a> (&uuid) ||
<a name="l00084"></a>00084 !<a class="code" href="group__DBusString.html#ga556cc30c3ab032dbc63e217119f0d1f5" title="Like _dbus_string_get_data(), but removes the gotten data from the original string.">_dbus_string_steal_data</a> (&uuid, &s))
<a name="l00085"></a>00085 {
<a name="l00086"></a>00086 <a class="code" href="group__DBusString.html#ga781ca91acda49a834dce7d0ed0eef212" title="Frees a string created by _dbus_string_init().">_dbus_string_free</a> (&uuid);
<a name="l00087"></a>00087 <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>;
<a name="l00088"></a>00088 }
<a name="l00089"></a>00089 <span class="keywordflow">else</span>
<a name="l00090"></a>00090 {
<a name="l00091"></a>00091 <a class="code" href="group__DBusString.html#ga781ca91acda49a834dce7d0ed0eef212" title="Frees a string created by _dbus_string_init().">_dbus_string_free</a> (&uuid);
<a name="l00092"></a>00092 <span class="keywordflow">return</span> s;
<a name="l00093"></a>00093 }
<a name="l00094"></a>00094
<a name="l00095"></a>00095 }
<a name="l00096"></a>00096
<a name="l00160"></a>00160 <span class="keywordtype">void</span>
<a name="l00161"></a><a class="code" href="group__DBusMisc.html#gacf200f947f77da9857685b58dc453d8a">00161</a> <a class="code" href="group__DBusMisc.html#gacf200f947f77da9857685b58dc453d8a" title="Gets the DYNAMICALLY LINKED version of libdbus.">dbus_get_version</a> (<span class="keywordtype">int</span> *major_version_p,
<a name="l00162"></a>00162 <span class="keywordtype">int</span> *minor_version_p,
<a name="l00163"></a>00163 <span class="keywordtype">int</span> *micro_version_p)
<a name="l00164"></a>00164 {
<a name="l00165"></a>00165 <span class="keywordflow">if</span> (major_version_p)
<a name="l00166"></a>00166 *major_version_p = <a class="code" href="group__DBusMisc.html#gab0c43046c79ba743bb2a4ed39ca4a5cd" title="The COMPILE TIME major version of libdbus, that is, the "X" in "X.Y.Z", as an integer literal...">DBUS_MAJOR_VERSION</a>;
<a name="l00167"></a>00167 <span class="keywordflow">if</span> (minor_version_p)
<a name="l00168"></a>00168 *minor_version_p = <a class="code" href="group__DBusMisc.html#ga6dcc9731da9f0713d55faa14937b4e06" title="The COMPILE TIME minor version of libdbus, that is, the "Y" in "X.Y.Z", as an integer literal...">DBUS_MINOR_VERSION</a>;
<a name="l00169"></a>00169 <span class="keywordflow">if</span> (micro_version_p)
<a name="l00170"></a>00170 *micro_version_p = <a class="code" href="group__DBusMisc.html#ga44289275b3259451d0ba4185c735f1a3" title="The COMPILE TIME micro version of libdbus, that is, the "Z" in "X.Y.Z", as an integer literal...">DBUS_MICRO_VERSION</a>;
<a name="l00171"></a>00171 }
<a name="l00172"></a>00172
<a name="l00173"></a>00173 <span class="comment">/* End of public API */</span>
<a name="l00175"></a>00175
<a name="l00176"></a>00176 <span class="preprocessor">#ifdef DBUS_ENABLE_EMBEDDED_TESTS</span>
<a name="l00177"></a>00177 <span class="preprocessor"></span>
<a name="l00178"></a>00178 <span class="preprocessor">#ifndef DOXYGEN_SHOULD_SKIP_THIS</span>
<a name="l00179"></a>00179 <span class="preprocessor"></span>
<a name="l00180"></a>00180 <span class="preprocessor">#include "dbus-test.h"</span>
<a name="l00181"></a>00181 <span class="preprocessor">#include <stdlib.h></span>
<a name="l00182"></a>00182
<a name="l00183"></a>00183
<a name="l00184"></a>00184 <a class="code" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349" title="A boolean, valid values are TRUE and FALSE.">dbus_bool_t</a>
<a name="l00185"></a>00185 _dbus_misc_test (<span class="keywordtype">void</span>)
<a name="l00186"></a>00186 {
<a name="l00187"></a>00187 <span class="keywordtype">int</span> major, minor, micro;
<a name="l00188"></a>00188 <a class="code" href="structDBusString.html">DBusString</a> str;
<a name="l00189"></a>00189
<a name="l00190"></a>00190 <span class="comment">/* make sure we don't crash on NULL */</span>
<a name="l00191"></a>00191 <a class="code" href="group__DBusMisc.html#gacf200f947f77da9857685b58dc453d8a" title="Gets the DYNAMICALLY LINKED version of libdbus.">dbus_get_version</a> (<a class="code" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>, <a class="code" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>, <a class="code" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>);
<a name="l00192"></a>00192
<a name="l00193"></a>00193 <span class="comment">/* Now verify that all the compile-time version stuff</span>
<a name="l00194"></a>00194 <span class="comment"> * is right and matches the runtime. These tests</span>
<a name="l00195"></a>00195 <span class="comment"> * are mostly intended to catch various kinds of</span>
<a name="l00196"></a>00196 <span class="comment"> * typo (mixing up major and minor, that sort of thing).</span>
<a name="l00197"></a>00197 <span class="comment"> */</span>
<a name="l00198"></a>00198 <a class="code" href="group__DBusMisc.html#gacf200f947f77da9857685b58dc453d8a" title="Gets the DYNAMICALLY LINKED version of libdbus.">dbus_get_version</a> (&major, &minor, &micro);
<a name="l00199"></a>00199
<a name="l00200"></a>00200 _dbus_assert (major == <a class="code" href="group__DBusMisc.html#gab0c43046c79ba743bb2a4ed39ca4a5cd" title="The COMPILE TIME major version of libdbus, that is, the "X" in "X.Y.Z", as an integer literal...">DBUS_MAJOR_VERSION</a>);
<a name="l00201"></a>00201 _dbus_assert (minor == <a class="code" href="group__DBusMisc.html#ga6dcc9731da9f0713d55faa14937b4e06" title="The COMPILE TIME minor version of libdbus, that is, the "Y" in "X.Y.Z", as an integer literal...">DBUS_MINOR_VERSION</a>);
<a name="l00202"></a>00202 _dbus_assert (micro == <a class="code" href="group__DBusMisc.html#ga44289275b3259451d0ba4185c735f1a3" title="The COMPILE TIME micro version of libdbus, that is, the "Z" in "X.Y.Z", as an integer literal...">DBUS_MICRO_VERSION</a>);
<a name="l00203"></a>00203
<a name="l00204"></a>00204 <span class="preprocessor">#define MAKE_VERSION(x, y, z) (((x) << 16) | ((y) << 8) | (z))</span>
<a name="l00205"></a>00205 <span class="preprocessor"></span>
<a name="l00206"></a>00206 <span class="comment">/* check that MAKE_VERSION works and produces the intended ordering */</span>
<a name="l00207"></a>00207 _dbus_assert (MAKE_VERSION (1, 0, 0) > MAKE_VERSION (0, 0, 0));
<a name="l00208"></a>00208 _dbus_assert (MAKE_VERSION (1, 1, 0) > MAKE_VERSION (1, 0, 0));
<a name="l00209"></a>00209 _dbus_assert (MAKE_VERSION (1, 1, 1) > MAKE_VERSION (1, 1, 0));
<a name="l00210"></a>00210
<a name="l00211"></a>00211 _dbus_assert (MAKE_VERSION (2, 0, 0) > MAKE_VERSION (1, 1, 1));
<a name="l00212"></a>00212 _dbus_assert (MAKE_VERSION (2, 1, 0) > MAKE_VERSION (1, 1, 1));
<a name="l00213"></a>00213 _dbus_assert (MAKE_VERSION (2, 1, 1) > MAKE_VERSION (1, 1, 1));
<a name="l00214"></a>00214
<a name="l00215"></a>00215 <span class="comment">/* check DBUS_VERSION */</span>
<a name="l00216"></a>00216 _dbus_assert (MAKE_VERSION (major, minor, micro) == <a class="code" href="group__DBusMisc.html#ga75f948aee9cf34afea18081cb4a7395f" title="The COMPILE TIME version of libdbus, as a single integer that has 0 in the most significant byte...">DBUS_VERSION</a>);
<a name="l00217"></a>00217
<a name="l00218"></a>00218 <span class="comment">/* check that ordering works with DBUS_VERSION */</span>
<a name="l00219"></a>00219 _dbus_assert (MAKE_VERSION (major - 1, minor, micro) < <a class="code" href="group__DBusMisc.html#ga75f948aee9cf34afea18081cb4a7395f" title="The COMPILE TIME version of libdbus, as a single integer that has 0 in the most significant byte...">DBUS_VERSION</a>);
<a name="l00220"></a>00220 _dbus_assert (MAKE_VERSION (major, minor - 1, micro) < <a class="code" href="group__DBusMisc.html#ga75f948aee9cf34afea18081cb4a7395f" title="The COMPILE TIME version of libdbus, as a single integer that has 0 in the most significant byte...">DBUS_VERSION</a>);
<a name="l00221"></a>00221 _dbus_assert (MAKE_VERSION (major, minor, micro - 1) < <a class="code" href="group__DBusMisc.html#ga75f948aee9cf34afea18081cb4a7395f" title="The COMPILE TIME version of libdbus, as a single integer that has 0 in the most significant byte...">DBUS_VERSION</a>);
<a name="l00222"></a>00222
<a name="l00223"></a>00223 _dbus_assert (MAKE_VERSION (major + 1, minor, micro) > <a class="code" href="group__DBusMisc.html#ga75f948aee9cf34afea18081cb4a7395f" title="The COMPILE TIME version of libdbus, as a single integer that has 0 in the most significant byte...">DBUS_VERSION</a>);
<a name="l00224"></a>00224 _dbus_assert (MAKE_VERSION (major, minor + 1, micro) > <a class="code" href="group__DBusMisc.html#ga75f948aee9cf34afea18081cb4a7395f" title="The COMPILE TIME version of libdbus, as a single integer that has 0 in the most significant byte...">DBUS_VERSION</a>);
<a name="l00225"></a>00225 _dbus_assert (MAKE_VERSION (major, minor, micro + 1) > <a class="code" href="group__DBusMisc.html#ga75f948aee9cf34afea18081cb4a7395f" title="The COMPILE TIME version of libdbus, as a single integer that has 0 in the most significant byte...">DBUS_VERSION</a>);
<a name="l00226"></a>00226
<a name="l00227"></a>00227 <span class="comment">/* Check DBUS_VERSION_STRING */</span>
<a name="l00228"></a>00228
<a name="l00229"></a>00229 <span class="keywordflow">if</span> (!<a class="code" href="group__DBusString.html#ga348252317f7bb8ac43529972945830ae" title="Initializes a string.">_dbus_string_init</a> (&str))
<a name="l00230"></a>00230 _dbus_assert_not_reached (<span class="stringliteral">"no memory"</span>);
<a name="l00231"></a>00231
<a name="l00232"></a>00232 <span class="keywordflow">if</span> (!(<a class="code" href="group__DBusString.html#ga41141ca36c361f92b6029530ff83fa66" title="Appends an integer to a DBusString.">_dbus_string_append_int</a> (&str, major) &&
<a name="l00233"></a>00233 <a class="code" href="group__DBusString.html#gaa6ecf36e70263659f921a4ef0335db12" title="Appends a single byte to the string, returning FALSE if not enough memory.">_dbus_string_append_byte</a> (&str, <span class="charliteral">'.'</span>) &&
<a name="l00234"></a>00234 <a class="code" href="group__DBusString.html#ga41141ca36c361f92b6029530ff83fa66" title="Appends an integer to a DBusString.">_dbus_string_append_int</a> (&str, minor) &&
<a name="l00235"></a>00235 <a class="code" href="group__DBusString.html#gaa6ecf36e70263659f921a4ef0335db12" title="Appends a single byte to the string, returning FALSE if not enough memory.">_dbus_string_append_byte</a> (&str, <span class="charliteral">'.'</span>) &&
<a name="l00236"></a>00236 <a class="code" href="group__DBusString.html#ga41141ca36c361f92b6029530ff83fa66" title="Appends an integer to a DBusString.">_dbus_string_append_int</a> (&str, micro)))
<a name="l00237"></a>00237 _dbus_assert_not_reached (<span class="stringliteral">"no memory"</span>);
<a name="l00238"></a>00238
<a name="l00239"></a>00239 _dbus_assert (<a class="code" href="group__DBusString.html#ga84f39f1bf398697920637d2982248c72" title="Checks whether a string is equal to a C string.">_dbus_string_equal_c_str</a> (&str, <a class="code" href="group__DBusMisc.html#ga538fff8f5929a940d195f3d74c49b27f" title="The COMPILE TIME version of libdbus, as a string "X.Y.Z".">DBUS_VERSION_STRING</a>));
<a name="l00240"></a>00240
<a name="l00241"></a>00241 <a class="code" href="group__DBusString.html#ga781ca91acda49a834dce7d0ed0eef212" title="Frees a string created by _dbus_string_init().">_dbus_string_free</a> (&str);
<a name="l00242"></a>00242
<a name="l00243"></a>00243 <span class="keywordflow">return</span> <a class="code" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a>;
<a name="l00244"></a>00244 }
<a name="l00245"></a>00245
<a name="l00246"></a>00246 <span class="preprocessor">#endif </span><span class="comment">/* !DOXYGEN_SHOULD_SKIP_THIS */</span>
<a name="l00247"></a>00247
<a name="l00248"></a>00248 <span class="preprocessor">#endif</span>
</pre></div></div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2016 17:50:31 for D-Bus by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>