GNUnet  0.11.x
Macros | Functions | Variables
gnunet-qr.c File Reference
#include <stdio.h>
#include <zbar.h>
#include <stdbool.h>
#include "platform.h"
#include "gnunet_util_lib.h"
Include dependency graph for gnunet-qr.c:

Go to the source code of this file.

Macros

#define LOG(fmt, ...)
 

Functions

static void maint_child_death (void *cls)
 Task triggered whenever we receive a SIGCHLD (child process died) or when user presses CTRL-C. More...
 
static void sighandler_chld ()
 Signal handler called for signals that causes us to wait for the child process. More...
 
static void gnunet_uri (void *cls, const char *uri, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
 Dispatch URIs to the appropriate GNUnet helper process. More...
 
static const zbar_symbol_t * get_symbol (zbar_processor_t *proc)
 Obtain QR code 'symbol' from proc. More...
 
static char * run_zbar ()
 Run zbar QR code parser. More...
 
static void run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
 Main function that will be run by the scheduler. More...
 
int main (int argc, char *const *argv)
 

Variables

static char * device
 Video device to capture from. More...
 
static unsigned int verbose
 –verbose option More...
 
static int silent = false
 –silent option More...
 
static long unsigned int exit_code = 0
 Handler exit code. More...
 
static struct GNUNET_OS_Processp
 Helper process we started. More...
 
static struct GNUNET_SIGNAL_Contextshc_chld
 Child signal handler. More...
 
static struct GNUNET_DISK_PipeHandlesigpipe
 Pipe used to communicate child death via signal. More...
 
static pid_t my_pid
 Process ID of this process at the time we installed the various signal handlers. More...
 

Detailed Description

Author
Hartmut Goebel (original implementation)
Martin Schanzenbach (integrate gnunet-uri)
Christian Grothoff (error handling)

Definition in file gnunet-qr.c.

Macro Definition Documentation

◆ LOG

#define LOG (   fmt,
  ... 
)
Value:
if (verbose) \
printf (fmt, ## __VA_ARGS__)
static unsigned int verbose
–verbose option
Definition: gnunet-qr.c:44

Definition at line 32 of file gnunet-qr.c.

Function Documentation

◆ maint_child_death()

static void maint_child_death ( void *  cls)
static

Task triggered whenever we receive a SIGCHLD (child process died) or when user presses CTRL-C.

Parameters
clsclosure, NULL

Definition at line 84 of file gnunet-qr.c.

85 {
87 
92  shc_chld = NULL;
93  if (NULL != sigpipe)
94  {
96  sigpipe = NULL;
97  }
99 }
static struct GNUNET_OS_Process * p
Helper process we started.
Definition: gnunet-qr.c:59
static struct GNUNET_SIGNAL_Context * shc_chld
Child signal handler.
Definition: gnunet-qr.c:64
static struct GNUNET_DISK_PipeHandle * sigpipe
Pipe used to communicate child death via signal.
Definition: gnunet-qr.c:69
static long unsigned int exit_code
Handler exit code.
Definition: gnunet-qr.c:54
@ GNUNET_OK
Definition: gnunet_common.h:95
enum GNUNET_GenericReturnValue GNUNET_DISK_pipe_close(struct GNUNET_DISK_PipeHandle *p)
Closes an interprocess channel.
Definition: disk.c:1585
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur.
int GNUNET_OS_process_status(struct GNUNET_OS_Process *proc, enum GNUNET_OS_ProcessStatusType *type, unsigned long *code)
Retrieve the status of a process.
Definition: os_priority.c:946
GNUNET_OS_ProcessStatusType
Process status types.
void GNUNET_OS_process_destroy(struct GNUNET_OS_Process *proc)
Cleans up process structure contents (OS-dependent) and deallocates it.
Definition: os_priority.c:286
int GNUNET_OS_process_kill(struct GNUNET_OS_Process *proc, int sig)
Sends a signal to the process.
Definition: os_priority.c:224
@ GNUNET_OS_PROCESS_EXITED
The process exited with a return code.
void GNUNET_SIGNAL_handler_uninstall(struct GNUNET_SIGNAL_Context *ctx)
Uninstall a previously installed signal handler.
Definition: signal.c:77
#define GNUNET_TERM_SIG
The termination signal.
Definition: platform.h:233
enum GNUNET_TESTBED_UnderlayLinkModelType type
the type of this model

References exit_code, GNUNET_break, GNUNET_DISK_pipe_close(), GNUNET_OK, GNUNET_OS_process_destroy(), GNUNET_OS_PROCESS_EXITED, GNUNET_OS_process_kill(), GNUNET_OS_process_status(), GNUNET_SIGNAL_handler_uninstall(), GNUNET_TERM_SIG, p, shc_chld, sigpipe, and type.

Referenced by gnunet_uri().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sighandler_chld()

static void sighandler_chld ( )
static

Signal handler called for signals that causes us to wait for the child process.

Definition at line 106 of file gnunet-qr.c.

107 {
108  static char c;
109  int old_errno = errno; /* backup errno */
110 
111  if (getpid () != my_pid)
112  _exit (1); /* we have fork'ed since the signal handler was created,
113  * ignore the signal, see https://gnunet.org/vfork discussion */
116  &c, sizeof(c));
117  errno = old_errno;
118 }
static pid_t my_pid
Process ID of this process at the time we installed the various signal handlers.
Definition: gnunet-qr.c:75
ssize_t GNUNET_DISK_file_write(const struct GNUNET_DISK_FileHandle *h, const void *buffer, size_t n)
Write a buffer to a file.
Definition: disk.c:686
const struct GNUNET_DISK_FileHandle * GNUNET_DISK_pipe_handle(const struct GNUNET_DISK_PipeHandle *p, enum GNUNET_DISK_PipeEnd n)
Get the handle to a particular pipe end.
Definition: disk.c:1616
@ GNUNET_DISK_PIPE_END_WRITE
The writing-end of a pipe.

References GNUNET_DISK_file_write(), GNUNET_DISK_PIPE_END_WRITE, GNUNET_DISK_pipe_handle(), my_pid, and sigpipe.

Referenced by gnunet_uri().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gnunet_uri()

static void gnunet_uri ( void *  cls,
const char *  uri,
const char *  cfgfile,
const struct GNUNET_CONFIGURATION_Handle cfg 
)
static

Dispatch URIs to the appropriate GNUnet helper process.

Parameters
clsclosure
uriuri to dispatch
cfgfilename of the configuration file used (for saving, can be NULL!)
cfgconfiguration

Definition at line 130 of file gnunet-qr.c.

134 {
135  const char *orig_uri;
136  const char *slash;
137  char *subsystem;
138  char *program;
139  struct GNUNET_SCHEDULER_Task *rt;
140 
141  orig_uri = uri;
142  if (0 != strncasecmp ("gnunet://", uri, strlen ("gnunet://")))
143  {
144  fprintf (stderr,
145  _ ("Invalid URI: does not start with `%s'\n"),
146  "gnunet://");
147  return;
148  }
149  uri += strlen ("gnunet://");
150  if (NULL == (slash = strchr (uri, '/')))
151  {
152  fprintf (stderr, _ ("Invalid URI: fails to specify subsystem\n"));
153  return;
154  }
155  subsystem = GNUNET_strndup (uri, slash - uri);
156  if (GNUNET_OK !=
158  {
159  fprintf (stderr, _ ("No handler known for subsystem `%s'\n"), subsystem);
161  return;
162  }
165  GNUNET_assert (NULL != sigpipe);
170  NULL);
171  my_pid = getpid ();
173  &sighandler_chld);
174 
175  {
176  char **argv = NULL;
177  unsigned int argc = 0;
178  char *u = GNUNET_strdup (program);
179 
180  for (const char *tok = strtok (u, " ");
181  NULL != tok;
182  tok = strtok (NULL, " "))
183  GNUNET_array_append (argv,
184  argc,
185  GNUNET_strdup (tok));
186  GNUNET_array_append (argv,
187  argc,
188  GNUNET_strdup (orig_uri));
189  GNUNET_array_append (argv,
190  argc,
191  NULL);
193  NULL,
194  NULL,
195  NULL,
196  argv[0],
197  argv);
198  for (unsigned int i = 0; i<argc - 1; i++)
199  GNUNET_free (argv[i]);
200  GNUNET_array_grow (argv,
201  argc,
202  0);
203  GNUNET_free (u);
204  }
205  if (NULL == p)
207  GNUNET_free (program);
208 }
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we are using.
Definition: gnunet-abd.c:36
static struct GNUNET_FS_Uri * uri
Value of URI provided on command-line (when not publishing a file but just creating UBlocks to refer ...
static void maint_child_death(void *cls)
Task triggered whenever we receive a SIGCHLD (child process died) or when user presses CTRL-C.
Definition: gnunet-qr.c:84
static void sighandler_chld()
Signal handler called for signals that causes us to wait for the child process.
Definition: gnunet-qr.c:106
static char * subsystem
Set to subsystem that we're going to get stats for (or NULL for all).
enum GNUNET_GenericReturnValue GNUNET_CONFIGURATION_get_value_string(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option, char **value)
Get a configuration value that should be a string.
struct GNUNET_DISK_PipeHandle * GNUNET_DISK_pipe(enum GNUNET_DISK_PipeFlags pf)
Creates an interprocess channel.
Definition: disk.c:1442
@ GNUNET_DISK_PF_NONE
No special options, use non-blocking read/write operations.
@ GNUNET_DISK_PIPE_END_READ
The reading-end of a pipe.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define GNUNET_array_grow(arr, size, tsize)
Grow a well-typed (!) array.
#define GNUNET_strndup(a, length)
Wrapper around GNUNET_xstrndup_.
#define GNUNET_array_append(arr, len, element)
Append an element to an array (growing the array by one).
#define GNUNET_free(ptr)
Wrapper around free.
struct GNUNET_OS_Process * GNUNET_OS_start_process_vap(enum GNUNET_OS_InheritStdioFlags std_inheritance, struct GNUNET_DISK_PipeHandle *pipe_stdin, struct GNUNET_DISK_PipeHandle *pipe_stdout, struct GNUNET_DISK_PipeHandle *pipe_stderr, const char *filename, char *const argv[])
Start a process.
Definition: os_priority.c:604
@ GNUNET_OS_INHERIT_STD_ALL
Use this option to have all of the standard streams (stdin, stdout and stderror) be inherited.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_read_file(struct GNUNET_TIME_Relative delay, const struct GNUNET_DISK_FileHandle *rfd, GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run with a specified delay or when the specified file descriptor is ready f...
Definition: scheduler.c:1667
void * GNUNET_SCHEDULER_cancel(struct GNUNET_SCHEDULER_Task *task)
Cancel the task with the specified identifier.
Definition: scheduler.c:972
struct GNUNET_SIGNAL_Context * GNUNET_SIGNAL_handler_install(int signal, GNUNET_SIGNAL_Handler handler)
Install a signal handler that will be run if the given signal is received.
Definition: signal.c:51
#define GNUNET_TIME_UNIT_FOREVER_REL
Constant used to specify "forever".
#define _(String)
GNU gettext support macro.
Definition: platform.h:177
Entry in list of pending tasks.
Definition: scheduler.c:135

References _, cfg, GNUNET_array_append, GNUNET_array_grow, GNUNET_assert, GNUNET_CONFIGURATION_get_value_string(), GNUNET_DISK_PF_NONE, GNUNET_DISK_pipe(), GNUNET_DISK_PIPE_END_READ, GNUNET_DISK_pipe_handle(), GNUNET_free, GNUNET_OK, GNUNET_OS_INHERIT_STD_ALL, GNUNET_OS_start_process_vap(), GNUNET_SCHEDULER_add_read_file(), GNUNET_SCHEDULER_cancel(), GNUNET_SIGNAL_handler_install(), GNUNET_strdup, GNUNET_strndup, GNUNET_TIME_UNIT_FOREVER_REL, maint_child_death(), my_pid, p, shc_chld, sighandler_chld(), sigpipe, subsystem, and uri.

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_symbol()

static const zbar_symbol_t* get_symbol ( zbar_processor_t *  proc)
static

Obtain QR code 'symbol' from proc.

Parameters
proczbar processor to use
Returns
NULL on error

Definition at line 218 of file gnunet-qr.c.

219 {
220  const zbar_symbol_set_t *symbols;
221  int rc;
222  int n;
223 
224  if (0 != zbar_processor_parse_config (proc, "enable"))
225  {
226  GNUNET_break (0);
227  return NULL;
228  }
229 
230  /* initialize the Processor */
231  if (NULL == device)
232  device = GNUNET_strdup ("/dev/video0");
233  if (0 != (rc = zbar_processor_init (proc, device, 1)))
234  {
236  "Failed to open device `%s': %d\n",
237  device,
238  rc);
239  return NULL;
240  }
241 
242  /* enable the preview window */
243  if ((0 != (rc = zbar_processor_set_visible (proc, 1))) ||
244  (0 != (rc = zbar_processor_set_active (proc, 1))))
245  {
246  GNUNET_break (0);
247  return NULL;
248  }
249 
250  /* read at least one barcode (or until window closed) */
251  LOG ("Capturing\n");
252  n = zbar_process_one (proc, -1);
253 
254  /* hide the preview window */
255  (void) zbar_processor_set_active (proc, 0);
256  (void) zbar_processor_set_visible (proc, 0);
257  if (-1 == n)
258  return NULL; /* likely user closed the window */
259  LOG ("Got %i images\n", n);
260  /* extract results */
261  symbols = zbar_processor_get_results (proc);
262  if (NULL == symbols)
263  {
264  GNUNET_break (0);
265  return NULL;
266  }
267  return zbar_symbol_set_first_symbol (symbols);
268 }
#define LOG(fmt,...)
Definition: gnunet-qr.c:32
static char * device
Video device to capture from.
Definition: gnunet-qr.c:39
#define GNUNET_log(kind,...)
@ GNUNET_ERROR_TYPE_ERROR

References device, GNUNET_break, GNUNET_ERROR_TYPE_ERROR, GNUNET_log, GNUNET_strdup, and LOG.

Referenced by run_zbar().

Here is the caller graph for this function:

◆ run_zbar()

static char* run_zbar ( )
static

Run zbar QR code parser.

Returns
NULL on error, otherwise the URI that we found

Definition at line 277 of file gnunet-qr.c.

278 {
279  zbar_processor_t *proc;
280  const char *data;
281  char *ret;
282  const zbar_symbol_t *symbol;
283 
284  /* configure the Processor */
285  proc = zbar_processor_create (1);
286  if (NULL == proc)
287  {
288  GNUNET_break (0);
289  return NULL;
290  }
291 
292  symbol = get_symbol (proc);
293  if (NULL == symbol)
294  {
295  zbar_processor_destroy (proc);
296  return NULL;
297  }
298  data = zbar_symbol_get_data (symbol);
299  if (NULL == data)
300  {
301  GNUNET_break (0);
302  zbar_processor_destroy (proc);
303  return NULL;
304  }
305  LOG ("Found %s \"%s\"\n",
306  zbar_get_symbol_name (zbar_symbol_get_type (symbol)),
307  data);
308  ret = GNUNET_strdup (data);
309  /* clean up */
310  zbar_processor_destroy (proc);
312  return ret;
313 }
static int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
uint32_t data
The data value.
static const zbar_symbol_t * get_symbol(zbar_processor_t *proc)
Obtain QR code 'symbol' from proc.
Definition: gnunet-qr.c:218

References data, device, get_symbol(), GNUNET_break, GNUNET_free, GNUNET_strdup, LOG, and ret.

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run()

static void run ( void *  cls,
char *const *  args,
const char *  cfgfile,
const struct GNUNET_CONFIGURATION_Handle cfg 
)
static

Main function that will be run by the scheduler.

Parameters
clsclosure
argsremaining command-line arguments
cfgfilename of the configuration file used (for saving, can be NULL!)
cfgconfiguration

Definition at line 325 of file gnunet-qr.c.

329 {
330  char *data;
331 
332  data = run_zbar ();
333  if (NULL == data)
334  return;
335  gnunet_uri (cls, data, cfgfile, cfg);
336  if (exit_code != 0)
337  {
338  printf ("Failed to add URI %s\n", data);
339  }
340  else
341  {
342  printf ("Added URI %s\n", data);
343  }
344  GNUNET_free (data);
345 };
static char * run_zbar()
Run zbar QR code parser.
Definition: gnunet-qr.c:277
static void gnunet_uri(void *cls, const char *uri, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
Dispatch URIs to the appropriate GNUnet helper process.
Definition: gnunet-qr.c:130

References cfg, data, exit_code, GNUNET_free, gnunet_uri(), and run_zbar().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ main()

int main ( int  argc,
char *const *  argv 
)

Definition at line 349 of file gnunet-qr.c.

350 {
351  int ret;
354  'd',
355  "device",
356  "DEVICE",
357  gettext_noop ("use video-device DEVICE (default: /dev/video0"),
358  &device),
361  "silent",
362  gettext_noop ("do not show preview windows"),
363  &silent),
365  };
366 
368  argc,
369  argv,
370  "gnunet-qr",
371  gettext_noop (
372  "Scan a QR code using a video device and import the uri read"),
373  options,
374  &run,
375  NULL);
376  return ((GNUNET_OK == ret) && (0 == exit_code)) ? 0 : 1;
377 }
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
Definition: 002.c:13
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
#define gettext_noop(String)
Definition: gettext.h:69
static int silent
–silent option
Definition: gnunet-qr.c:49
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
Main function that will be run by the scheduler.
Definition: gnunet-qr.c:325
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_verbose(unsigned int *level)
Define the '-V' verbosity option.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_flag(char shortName, const char *name, const char *description, int *val)
Allow user to specify a flag (which internally means setting an integer to 1/GNUNET_YES/GNUNET_OK.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_string(char shortName, const char *name, const char *argumentHelp, const char *description, char **str)
Allow user to specify a string.
enum GNUNET_GenericReturnValue GNUNET_PROGRAM_run(int argc, char *const *argv, const char *binaryName, const char *binaryHelp, const struct GNUNET_GETOPT_CommandLineOption *options, GNUNET_PROGRAM_Main task, void *task_cls)
Run a standard GNUnet command startup sequence (initialize loggers and configuration,...
Definition: program.c:364
Definition of a command line option.

References device, exit_code, gettext_noop, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_flag(), GNUNET_GETOPT_option_string(), GNUNET_GETOPT_option_verbose(), GNUNET_OK, GNUNET_PROGRAM_run(), options, ret, run(), silent, and verbose.

Here is the call graph for this function:

Variable Documentation

◆ device

char* device
static

Video device to capture from.

Sane default for GNU/Linux systems.

Definition at line 39 of file gnunet-qr.c.

Referenced by get_symbol(), main(), and run_zbar().

◆ verbose

unsigned int verbose
static

–verbose option

Definition at line 44 of file gnunet-qr.c.

Referenced by main().

◆ silent

int silent = false
static

–silent option

Definition at line 49 of file gnunet-qr.c.

Referenced by main().

◆ exit_code

long unsigned int exit_code = 0
static

Handler exit code.

Definition at line 54 of file gnunet-qr.c.

Referenced by child_completed_callback(), main(), maint_child_death(), and run().

◆ p

struct GNUNET_OS_Process* p
static

Helper process we started.

Definition at line 59 of file gnunet-qr.c.

Referenced by _make_continuous_arg_copy(), access_handler_callback(), adjust(), age_values(), block_proc(), block_reader(), build_dns_query(), compute_scalar_product(), compute_service_response(), context_state_callback(), create_loc_uri(), CustomPeerMap_put(), CustomPeerMap_remove_peer(), display_bar(), display_request(), dns_result_parser(), do_stop_task(), download_stop_task(), dump_buffer(), encode_cont(), enforce_add_address(), enforce_del_address(), enforce_start_property(), enforce_start_request(), enforce_stop_request(), find_active_address(), find_timed_out(), for_all_records(), format_help(), free_link_properties(), free_preference(), GCT_consider_path(), get_all_peers_iterator(), get_all_tunnels_iterator(), get_hello(), get_keywords_from_tokens(), get_longest_prefix(), get_path_from_GNUNET_PREFIX(), get_path_from_PATH(), get_pipeline(), get_preferences_cb(), GN_getopt_internal(), gns_resolve_name(), GNUNET_ATS_solver_generate_preferences_start(), GNUNET_CADET_close_port(), GNUNET_CADET_open_port(), GNUNET_CONFIGURATION_create(), GNUNET_CONTAINER_meta_data_insert(), GNUNET_CONTAINER_multihashmap32_remove(), GNUNET_CONTAINER_multihashmap32_remove_all(), GNUNET_CONTAINER_multihashmap_remove(), GNUNET_CONTAINER_multihashmap_remove_all(), GNUNET_CONTAINER_multipeermap_remove(), GNUNET_CONTAINER_multipeermap_remove_all(), GNUNET_CONTAINER_multishortmap_remove(), GNUNET_CONTAINER_multishortmap_remove_all(), GNUNET_CONTAINER_multiuuidmap_remove(), GNUNET_CONTAINER_multiuuidmap_remove_all(), GNUNET_CRYPTO_mpi_print_unsigned(), GNUNET_CRYPTO_paillier_create(), GNUNET_CRYPTO_zero_keys(), GNUNET_DISK_internal_file_handle_(), GNUNET_DISK_pipe_close(), GNUNET_DISK_pipe_close_end(), GNUNET_DNSPARSER_free_packet(), GNUNET_DNSPARSER_pack(), GNUNET_DNSPARSER_parse(), GNUNET_e2s(), GNUNET_e2s2(), GNUNET_FS_publish_main_(), GNUNET_FS_publish_make_status_(), GNUNET_MY_exec_prepared(), GNUNET_OS_check_helper_binary(), GNUNET_p2s(), GNUNET_p2s2(), GNUNET_SCHEDULER_cancel(), GNUNET_SCHEDULER_get_load(), GNUNET_SECRETSHARING_share_read(), GNUNET_SECRETSHARING_share_write(), GNUNET_SERVER_add_handlers(), GNUNET_TRANSPORT_TESTING_connect_check(), GNUNET_TRANSPORT_TESTING_done(), GNUNET_TRANSPORT_TESTING_restart_peer(), GNUNET_TRANSPORT_TESTING_start_peer(), GNUNET_TRANSPORT_TESTING_stop_peer(), gnunet_uri(), GSF_cadet_query_cancel(), handle_dns_request(), handle_index_start_failed(), handle_index_start_ok(), handle_show_path(), handle_signature_response(), hash_for_index_cb(), hello_iter_cb(), ibf_hashcode_from_key(), ieee80211_get_radiotap_len(), index_mq_error_handler(), libgnunet_plugin_transport_udp_init(), main(), maint_child_death(), modify_request(), notify_connect(), notify_disconnect(), oprelease_overlay_configure_topology(), opstart_overlay_configure_topology(), parse_definitions(), parse_pattern(), peer_info_cb(), process_result(), progress_cb(), progress_proc(), publish_content(), publish_kblocks(), publish_kblocks_cont(), publish_stop_task(), queue(), queue_ready_task(), recursive_dns_resolution(), regex_add(), regex_combine(), REGEX_INTERNAL_construct_nfa(), retrieve_hello(), run(), run_process_and_wait(), schedule_transmit_on_queue(), search_stop_task(), set_feedback_task(), set_pref_task(), set_prop_task(), shutdown_task(), signal_publish_completion(), signal_publish_error(), solver_bandwidth_changed_cb(), gnunet_testing.Peer::start(), start_cb(), start_download(), start_publish(), gnunet_testing.Peer::stop(), and w_check().

◆ shc_chld

struct GNUNET_SIGNAL_Context* shc_chld
static

Child signal handler.

Definition at line 64 of file gnunet-qr.c.

Referenced by gnunet_uri(), and maint_child_death().

◆ sigpipe

struct GNUNET_DISK_PipeHandle* sigpipe
static

Pipe used to communicate child death via signal.

Definition at line 69 of file gnunet-qr.c.

Referenced by gnunet_uri(), maint_child_death(), and sighandler_chld().

◆ my_pid

pid_t my_pid
static

Process ID of this process at the time we installed the various signal handlers.

Definition at line 75 of file gnunet-qr.c.

Referenced by gnunet_uri(), and sighandler_chld().