improved log messages
[oweals/gnunet.git] / doc / gnunet-c-tutorial.tex
index 3b237b578699712d6e5239683c00f239457d4248..70981b1387999e24dec334dc9cea341ea7c849bf 100644 (file)
@@ -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);
   // ...