X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=doc%2Fgnunet-c-tutorial.tex;h=70981b1387999e24dec334dc9cea341ea7c849bf;hb=30c72242b0d5c9ee30a08fae7e69b723450e2899;hp=3b237b578699712d6e5239683c00f239457d4248;hpb=d1b08d89eea94c9b5c3eb09c52f88c5f7765bd04;p=oweals%2Fgnunet.git diff --git a/doc/gnunet-c-tutorial.tex b/doc/gnunet-c-tutorial.tex index 3b237b578..70981b138 100644 --- a/doc/gnunet-c-tutorial.tex +++ b/doc/gnunet-c-tutorial.tex @@ -117,7 +117,9 @@ ECC functions not available in any released version of libgcrypt. $ git clone git://git.gnupg.org/libgcrypt.git $ cd libgcrypt $ ./autogen.sh -$ ./configure ; $ make install +$ ./configure +$ sudo make install +$ sudo ldconfig \end{lstlisting} \label{sub:install} @@ -420,7 +422,7 @@ The source code for the above listing can be found at \begin{lstlisting} $ export CPPFLAGS="-I/path/to/gnunet/headers" $ export LDFLAGS="-L/path/to/gnunet/libraries" -$ gcc -o testbed-test -lgnunettestbed -lgnunetdht -lgnunetutil testbed_test.c +$ gcc $CPPFLAGS $LDFLAGS -o testbed-test testbed_test.c -lgnunettestbed -lgnunetdht -lgnunetutil \end{lstlisting} The \texttt{CPPFLAGS} and \texttt{LDFLAGS} are necessary if GNUnet is installed into a different directory other than \texttt{/usr/local}. @@ -466,8 +468,7 @@ disconnect from the service with the provided service handle (\texttt{op\_result \exercise{Find out how many peers you can run on your system.} \exercise{Find out how to create a 2D torus topology by changing the - options in the configuration file.\footnote{FIXME: Sree Harsha: need to - document configuration file options on gnunet.org and add link here!} + options in the configuration file.\footnote{See \url{https://gnunet.org/content/supported-topologies}} Then use the DHT API to store and retrieve values in the network.} @@ -593,6 +594,8 @@ static int a_flag; &GNUNET_GETOPT_set_one, &a_flag}, GNUNET_GETOPT_OPTION_END }; + string_option = NULL; + a_flag = GNUNET_SYSERR; // ... \end{lstlisting} @@ -601,7 +604,10 @@ the {\tt --help} argument and error handling are taken care of when using this approach. Other {\tt GNUNET\_GETOPT\_}-functions can be used to obtain integer value options, increment counters, etc. You can even write custom option parsers for special circumstances not covered -by the available handlers. +by the available handlers. To check if an argument was specified by the +user you initialize the variable with a specific value (e.g. NULL for +a string and GNUNET\_SYSERR for a integer) and check after parsing +happened if the values were modified. Inside the {\tt run} method, the program would perform the application-specific logic, which typically involves initializing and @@ -705,7 +711,7 @@ static size_t transmit_cb (void *cls, size_t size, void *buf) { // ... - if (NULL == buf) { handle_error(); return 0; } + if (NULL == buf) { /* handle error here */; return 0; } GNUNET_assert (size >= msg_size); memcpy (buf, my_msg, msg_size); // ...