diff options
Diffstat (limited to 'src/include/gnunet_program_lib.h')
-rw-r--r-- | src/include/gnunet_program_lib.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/include/gnunet_program_lib.h b/src/include/gnunet_program_lib.h index 0c51d6cf7..6290ec3d4 100644 --- a/src/include/gnunet_program_lib.h +++ b/src/include/gnunet_program_lib.h | |||
@@ -122,6 +122,45 @@ GNUNET_PROGRAM_run (int argc, | |||
122 | GNUNET_PROGRAM_Main task, | 122 | GNUNET_PROGRAM_Main task, |
123 | void *task_cls); | 123 | void *task_cls); |
124 | 124 | ||
125 | enum GNUNET_GenericReturnValue | ||
126 | GNUNET_DAEMON_register (const char *daemon_name, | ||
127 | const char *daemon_desc, | ||
128 | GNUNET_PROGRAM_Main task); | ||
129 | |||
130 | #ifndef HAVE_GNUNET_MONOLITH | ||
131 | #define GNUNET_DAEMON_MAIN(daemon_name, daemon_help, init_cb) \ | ||
132 | int \ | ||
133 | main (int argc, \ | ||
134 | char *const *argv) \ | ||
135 | { \ | ||
136 | int ret; \ | ||
137 | struct GNUNET_GETOPT_CommandLineOption options[] = { \ | ||
138 | GNUNET_GETOPT_OPTION_END \ | ||
139 | };\ | ||
140 | if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) \ | ||
141 | return 2; \ | ||
142 | ret = GNUNET_PROGRAM_run (argc, \ | ||
143 | argv, \ | ||
144 | daemon_name, \ | ||
145 | daemon_help, \ | ||
146 | options, \ | ||
147 | init_cb, \ | ||
148 | NULL); \ | ||
149 | GNUNET_free_nz ((void*) argv); \ | ||
150 | return ret; \ | ||
151 | } | ||
152 | #else | ||
153 | #define GNUNET_DAEMON_MAIN(daemon_name, daemon_help, init_cb) \ | ||
154 | static int __attribute__ ((constructor)) \ | ||
155 | init (void) \ | ||
156 | { \ | ||
157 | return GNUNET_DAEMON_register (daemon_name, \ | ||
158 | daemon_help, \ | ||
159 | init_cb); \ | ||
160 | } | ||
161 | #endif | ||
162 | |||
163 | |||
125 | 164 | ||
126 | #if 0 /* keep Emacsens' auto-indent happy */ | 165 | #if 0 /* keep Emacsens' auto-indent happy */ |
127 | { | 166 | { |