<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/libcutils/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/libcutils/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 28 Oct 2014 21:24:02 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/libcutils/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Discussion for Home page</title><link>https://sourceforge.net/p/libcutils/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="cutils-some-useful-c-utilities"&gt;cutils - Some Useful C-Utilities&lt;/h1&gt;
&lt;h2 id="object"&gt;Object&lt;/h2&gt;
&lt;p&gt;Libcutils  provides  a self-contained  set  of  fundamental routines  which  are&lt;br /&gt;
essential to basically any Unix utility  or daemon application written in C. The&lt;br /&gt;
library provides fundamental  data structures such as  lists, hash-maps, strings&lt;br /&gt;
and parsing functions for JSON or the typical dot-file based configuration data.&lt;br /&gt;
The following list summarizes the currently supported functionality:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;length delimited instead of NULL terminated strings&lt;/li&gt;
&lt;li&gt;memory management based on reference counting&lt;/li&gt;
&lt;li&gt;several list processing functions like iterators and map-reduce&lt;/li&gt;
&lt;li&gt;support of &lt;a class="" href="http://infoscience.epfl.ch/record/64398/files/idealhashtrees.pdf" rel="nofollow"&gt;Ideal Hash Tries&lt;/a&gt;&lt;br /&gt;
  for highly efficient hash map data structures&lt;/li&gt;
&lt;li&gt;parsers for &lt;a class="" href="http://json.org" rel="nofollow"&gt;JSON&lt;/a&gt; data and the text configuration files found&lt;br /&gt;
  in Unix system&lt;/li&gt;
&lt;li&gt;doubly linked circular lists for reliable event queues&lt;/li&gt;
&lt;li&gt;support for test and debugging of memory management problems such as memory leaks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This  library  is  the  result  of several  years  of  practical  experience  in&lt;br /&gt;
C-programming  and the  rediscovery  of a  (more)  functional programming  style&lt;br /&gt;
mainly  driven  by  extremly  positive   experiences  with  the  relatively  new&lt;br /&gt;
Programming Language &lt;a class="" href="http://clojure.org" rel="nofollow"&gt;Clojure&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="how-to-build-and-use-the-library"&gt;How to build and use the library.&lt;/h2&gt;
&lt;p&gt;In the following we give a very brief overview how to get things up and running.&lt;br /&gt;
For a more detailed explanation about underlying concepts refer to the complete&lt;br /&gt;
&lt;a class="" href="http://linneman.github.io/libcutils/doc/doxygen/html/group__cutils.html" rel="nofollow"&gt;API description&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Most  of the  functions within  libcutils exclusively  require the  prencense of&lt;br /&gt;
a  C  compiler compliant  to  ANSI-C  or  C99.  The event  processing  functions&lt;br /&gt;
currently  refer  to  the  pthread  library and  the  configure  script  of  the&lt;br /&gt;
build  system  requires  a  Unix  shell  and  make.  In  case  the  source  code&lt;br /&gt;
is  fetched  from  a git  repository  you  will  furthermore  need to  have  git&lt;br /&gt;
and &lt;a class="" href="http://en.wikipedia.org/wiki/GNU_build_system" rel="nofollow"&gt;autotools&lt;/a&gt;  consisted out of&lt;br /&gt;
&lt;a class="" href="http://en.wikipedia.org/wiki/Autoconf" rel="nofollow"&gt;autoconf&lt;/a&gt;,&lt;br /&gt;
&lt;a class="" href="http://en.wikipedia.org/wiki/Automake" rel="nofollow"&gt;automake&lt;/a&gt; and&lt;br /&gt;
&lt;a class="" href="http://en.wikipedia.org/wiki/GNU_Libtool" rel="nofollow"&gt;libtool&lt;/a&gt; installed on your build machine.&lt;/p&gt;
&lt;h3 id="download-build-and-installation"&gt;Download, Build and Installation&lt;/h3&gt;
&lt;p&gt;On Unix, that is  any Linux variant, Mac OS X or  &lt;a class="" href="http://www.cygwin.com" rel="nofollow"&gt;cygwin&lt;/a&gt; /&lt;br /&gt;
&lt;a class="" href="http://www.mingw.org" rel="nofollow"&gt;mingw&lt;/a&gt; under the Windows platform, the download and build&lt;br /&gt;
process is done with the following shell commands:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;clone&lt;/span&gt; &lt;span class="n"&gt;git&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//github.com/linneman/libcutils.git&lt;/span&gt;
&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="n"&gt;libcutils&lt;/span&gt;

&lt;span class="n"&gt;autoreconf&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;generate&lt;/span&gt; &lt;span class="n"&gt;configure&lt;/span&gt; &lt;span class="n"&gt;script&lt;/span&gt;

&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;configure&lt;/span&gt;
&lt;span class="n"&gt;make&lt;/span&gt;
&lt;span class="n"&gt;make&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In case you download an official release as gzipped tarball you exclusively will&lt;br /&gt;
need the  last three commands  since the  configure script is  already delivered&lt;br /&gt;
with stable releases.&lt;/p&gt;
&lt;p&gt;Pay  attention to  the fact  that  the library  is per  default installed  under&lt;br /&gt;
&lt;code&gt;/usr/local/lib&lt;/code&gt; which is  not in the library path on  many linux distributions.&lt;br /&gt;
Thus you will need to put &lt;code&gt;/usr/local/lib&lt;/code&gt; to your library path e.g. by defining&lt;br /&gt;
the enviroment variable&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;export&lt;/span&gt; &lt;span class="n"&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Alternatively,  you  can  edit  &lt;code&gt;/etc/ld.so.conf&lt;/code&gt;  which  contains  the  default&lt;br /&gt;
directories  searched.  Note  that  you  may  also  need  to  update  the  cache&lt;br /&gt;
&lt;code&gt;/etc/ld.so.cache&lt;/code&gt; by running ldconfig (as root, or with sudo).&lt;/p&gt;
&lt;h3 id="testing-the-library"&gt;Testing the library&lt;/h3&gt;
&lt;p&gt;The library comes with the console based test application &lt;code&gt;test_cutilslib&lt;/code&gt; which&lt;br /&gt;
will check  all functions  to execute  appropriately. The test program can be&lt;br /&gt;
exectuded also by make with the command:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;make&lt;/span&gt; &lt;span class="n"&gt;check&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The source files for all corresponding module tests follow the naming convention&lt;br /&gt;
&lt;code&gt;test\_&amp;lt;module&amp;gt;.c&lt;/code&gt; and serve as sample application at the same time. We strictly&lt;br /&gt;
recommend to  study these sample  files for a  better understanding how  to make&lt;br /&gt;
best use of the provided functionality.&lt;/p&gt;
&lt;h3 id="integrating-the-libcutils-within-your-own-project"&gt;Integrating the libcutils within your own project&lt;/h3&gt;
&lt;p&gt;The interation of the libctutils within  your own FSF compliant application is a&lt;br /&gt;
nobrainer. Just put the following line within your &lt;code&gt;configure.ac&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;PKG_CHECK_MODULES&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;libcutils&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;libcutils&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Refer to &lt;code&gt;libcutils/example&lt;/code&gt; for a small sample project which provide a complete&lt;br /&gt;
example about a minimum version of &lt;code&gt;configure.ac&lt;/code&gt; and &lt;code&gt;Makefile.am&lt;/code&gt; as the input&lt;br /&gt;
for the autoconf and automake.&lt;/p&gt;
&lt;h2 id="licence"&gt;Licence&lt;/h2&gt;
&lt;p&gt;This implementation code stands under the terms of the&lt;br /&gt;
&lt;a class="" href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1" rel="nofollow"&gt;GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;April 2014, Otto Linnemann&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Otto Linnemann</dc:creator><pubDate>Tue, 28 Oct 2014 21:24:02 -0000</pubDate><guid>https://sourceforge.net4df74bf47b27c52b04638c31be7a7581c825d01c</guid></item><item><title>Home modified by Otto Linnemann</title><link>https://sourceforge.net/p/libcutils/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Welcome to your wiki!&lt;/p&gt;
&lt;p&gt;This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: &lt;span&gt;[SamplePage]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The wiki uses &lt;a class="" href="/p/libcutils/wiki/markdown_syntax"&gt;Markdown&lt;/a&gt; syntax.&lt;/p&gt;
&lt;p&gt;&lt;h6&gt;Project Members:&lt;/h6&gt;
&lt;ul class="md-users-list"&gt;
&lt;li&gt;&lt;a href="/u/ottol"&gt;Otto Linnemann&lt;/a&gt; (admin)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;span class="download-button-54500585b9363c35d0ed0f11" style="margin-bottom: 1em; display: block;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Otto Linnemann</dc:creator><pubDate>Tue, 28 Oct 2014 21:07:18 -0000</pubDate><guid>https://sourceforge.nete59cedbde0f1956e6744eeba8f1ea107ab933fd5</guid></item></channel></rss>