aboutsummaryrefslogtreecommitdiff
path: root/src/fs/gnunet-search.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-10-05 15:09:28 +0200
committerChristian Grothoff <christian@grothoff.org>2019-10-05 15:09:28 +0200
commitc4e9ba925ffd758aaa3feee2ccfc0b76f26fe207 (patch)
treecac3ce030d77b4cbe7c7dc62ed58cfe6d24f73e1 /src/fs/gnunet-search.c
parentfbb71d527c7d6babf269a8fefce1db291b9f7068 (diff)
downloadgnunet-c4e9ba925ffd758aaa3feee2ccfc0b76f26fe207.tar.gz
gnunet-c4e9ba925ffd758aaa3feee2ccfc0b76f26fe207.zip
global reindent, now with uncrustify hook enabled
Diffstat (limited to 'src/fs/gnunet-search.c')
-rw-r--r--src/fs/gnunet-search.c348
1 files changed, 174 insertions, 174 deletions
diff --git a/src/fs/gnunet-search.c b/src/fs/gnunet-search.c
index ac31387e2..f11335985 100644
--- a/src/fs/gnunet-search.c
+++ b/src/fs/gnunet-search.c
@@ -76,13 +76,13 @@ static struct GNUNET_SCHEDULER_Task *tt;
76 * @return 0 to continue extracting, 1 to abort 76 * @return 0 to continue extracting, 1 to abort
77 */ 77 */
78static int 78static int
79item_printer(void *cls, 79item_printer (void *cls,
80 const char *plugin_name, 80 const char *plugin_name,
81 enum EXTRACTOR_MetaType type, 81 enum EXTRACTOR_MetaType type,
82 enum EXTRACTOR_MetaFormat format, 82 enum EXTRACTOR_MetaFormat format,
83 const char *data_mime_type, 83 const char *data_mime_type,
84 const char *data, 84 const char *data,
85 size_t data_size) 85 size_t data_size)
86{ 86{
87 if ((format != EXTRACTOR_METAFORMAT_UTF8) && 87 if ((format != EXTRACTOR_METAFORMAT_UTF8) &&
88 (format != EXTRACTOR_METAFORMAT_C_STRING)) 88 (format != EXTRACTOR_METAFORMAT_C_STRING))
@@ -90,45 +90,45 @@ item_printer(void *cls,
90 if (type == EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME) 90 if (type == EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME)
91 return 0; 91 return 0;
92#if HAVE_LIBEXTRACTOR 92#if HAVE_LIBEXTRACTOR
93 printf("\t%20s: %s\n", 93 printf ("\t%20s: %s\n",
94 dgettext(LIBEXTRACTOR_GETTEXT_DOMAIN, 94 dgettext (LIBEXTRACTOR_GETTEXT_DOMAIN,
95 EXTRACTOR_metatype_to_string(type)), 95 EXTRACTOR_metatype_to_string (type)),
96 data); 96 data);
97#else 97#else
98 printf("\t%20d: %s\n", type, data); 98 printf ("\t%20d: %s\n", type, data);
99#endif 99#endif
100 return 0; 100 return 0;
101} 101}
102 102
103 103
104static void 104static void
105clean_task(void *cls) 105clean_task (void *cls)
106{ 106{
107 size_t dsize; 107 size_t dsize;
108 void *ddata; 108 void *ddata;
109 109
110 GNUNET_FS_stop(ctx); 110 GNUNET_FS_stop (ctx);
111 ctx = NULL; 111 ctx = NULL;
112 if (output_filename == NULL) 112 if (output_filename == NULL)
113 return; 113 return;
114 if (GNUNET_OK != GNUNET_FS_directory_builder_finish(db, &dsize, &ddata)) 114 if (GNUNET_OK != GNUNET_FS_directory_builder_finish (db, &dsize, &ddata))
115 { 115 {
116 GNUNET_break(0); 116 GNUNET_break (0);
117 GNUNET_free(output_filename); 117 GNUNET_free (output_filename);
118 return; 118 return;
119 } 119 }
120 if (dsize != GNUNET_DISK_fn_write(output_filename, 120 if (dsize != GNUNET_DISK_fn_write (output_filename,
121 ddata, 121 ddata,
122 dsize, 122 dsize,
123 GNUNET_DISK_PERM_USER_READ | 123 GNUNET_DISK_PERM_USER_READ
124 GNUNET_DISK_PERM_USER_WRITE)) 124 | GNUNET_DISK_PERM_USER_WRITE))
125 { 125 {
126 fprintf(stderr, 126 fprintf (stderr,
127 _("Failed to write directory with search results to `%s'\n"), 127 _ ("Failed to write directory with search results to `%s'\n"),
128 output_filename); 128 output_filename);
129 } 129 }
130 GNUNET_free_non_null(ddata); 130 GNUNET_free_non_null (ddata);
131 GNUNET_free(output_filename); 131 GNUNET_free (output_filename);
132} 132}
133 133
134 134
@@ -146,7 +146,7 @@ clean_task(void *cls)
146 * field in the GNUNET_FS_ProgressInfo struct. 146 * field in the GNUNET_FS_ProgressInfo struct.
147 */ 147 */
148static void * 148static void *
149progress_cb(void *cls, const struct GNUNET_FS_ProgressInfo *info) 149progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *info)
150{ 150{
151 static unsigned int cnt; 151 static unsigned int cnt;
152 int is_directory; 152 int is_directory;
@@ -154,98 +154,98 @@ progress_cb(void *cls, const struct GNUNET_FS_ProgressInfo *info)
154 char *filename; 154 char *filename;
155 155
156 switch (info->status) 156 switch (info->status)
157 {
158 case GNUNET_FS_STATUS_SEARCH_START:
159 break;
160
161 case GNUNET_FS_STATUS_SEARCH_RESULT:
162 if (db != NULL)
163 GNUNET_FS_directory_builder_add (db,
164 info->value.search.specifics.result.uri,
165 info->value.search.specifics.result.meta,
166 NULL);
167 uri = GNUNET_FS_uri_to_string (info->value.search.specifics.result.uri);
168 printf ("#%u:\n", ++cnt);
169 filename = GNUNET_CONTAINER_meta_data_get_by_type (
170 info->value.search.specifics.result.meta,
171 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME);
172 is_directory = GNUNET_FS_meta_data_test_for_directory (
173 info->value.search.specifics.result.meta);
174 if (NULL != filename)
157 { 175 {
158 case GNUNET_FS_STATUS_SEARCH_START: 176 while ((filename[0] != '\0') && ('/' == filename[strlen (filename) - 1]))
159 break; 177 filename[strlen (filename) - 1] = '\0';
160 178 GNUNET_DISK_filename_canonicalize (filename);
161 case GNUNET_FS_STATUS_SEARCH_RESULT: 179 if (GNUNET_YES == is_directory)
162 if (db != NULL) 180 printf ("gnunet-download -o \"%s%s\" -R %s\n",
163 GNUNET_FS_directory_builder_add(db, 181 filename,
164 info->value.search.specifics.result.uri, 182 GNUNET_FS_DIRECTORY_EXT,
165 info->value.search.specifics.result.meta, 183 uri);
166 NULL);
167 uri = GNUNET_FS_uri_to_string(info->value.search.specifics.result.uri);
168 printf("#%u:\n", ++cnt);
169 filename = GNUNET_CONTAINER_meta_data_get_by_type(
170 info->value.search.specifics.result.meta,
171 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME);
172 is_directory = GNUNET_FS_meta_data_test_for_directory(
173 info->value.search.specifics.result.meta);
174 if (NULL != filename)
175 {
176 while ((filename[0] != '\0') && ('/' == filename[strlen(filename) - 1]))
177 filename[strlen(filename) - 1] = '\0';
178 GNUNET_DISK_filename_canonicalize(filename);
179 if (GNUNET_YES == is_directory)
180 printf("gnunet-download -o \"%s%s\" -R %s\n",
181 filename,
182 GNUNET_FS_DIRECTORY_EXT,
183 uri);
184 else
185 printf("gnunet-download -o \"%s\" %s\n", filename, uri);
186 }
187 else if (GNUNET_YES == is_directory)
188 printf("gnunet-download -o \"collection%s\" -R %s\n",
189 GNUNET_FS_DIRECTORY_EXT,
190 uri);
191 else 184 else
192 printf("gnunet-download %s\n", uri); 185 printf ("gnunet-download -o \"%s\" %s\n", filename, uri);
193 if (verbose)
194 GNUNET_CONTAINER_meta_data_iterate(info->value.search.specifics.result
195 .meta,
196 &item_printer,
197 NULL);
198 printf("\n");
199 fflush(stdout);
200 GNUNET_free_non_null(filename);
201 GNUNET_free(uri);
202 results++;
203 if ((results_limit > 0) && (results >= results_limit))
204 GNUNET_SCHEDULER_shutdown();
205 break;
206
207 case GNUNET_FS_STATUS_SEARCH_UPDATE:
208 break;
209
210 case GNUNET_FS_STATUS_SEARCH_RESULT_STOPPED:
211 /* ignore */
212 break;
213
214 case GNUNET_FS_STATUS_SEARCH_ERROR:
215 fprintf(stderr,
216 _("Error searching: %s.\n"),
217 info->value.search.specifics.error.message);
218 GNUNET_SCHEDULER_shutdown();
219 break;
220
221 case GNUNET_FS_STATUS_SEARCH_STOPPED:
222 GNUNET_SCHEDULER_add_now(&clean_task, NULL);
223 break;
224
225 default:
226 fprintf(stderr, _("Unexpected status: %d\n"), info->status);
227 break;
228 } 186 }
187 else if (GNUNET_YES == is_directory)
188 printf ("gnunet-download -o \"collection%s\" -R %s\n",
189 GNUNET_FS_DIRECTORY_EXT,
190 uri);
191 else
192 printf ("gnunet-download %s\n", uri);
193 if (verbose)
194 GNUNET_CONTAINER_meta_data_iterate (info->value.search.specifics.result
195 .meta,
196 &item_printer,
197 NULL);
198 printf ("\n");
199 fflush (stdout);
200 GNUNET_free_non_null (filename);
201 GNUNET_free (uri);
202 results++;
203 if ((results_limit > 0) && (results >= results_limit))
204 GNUNET_SCHEDULER_shutdown ();
205 break;
206
207 case GNUNET_FS_STATUS_SEARCH_UPDATE:
208 break;
209
210 case GNUNET_FS_STATUS_SEARCH_RESULT_STOPPED:
211 /* ignore */
212 break;
213
214 case GNUNET_FS_STATUS_SEARCH_ERROR:
215 fprintf (stderr,
216 _ ("Error searching: %s.\n"),
217 info->value.search.specifics.error.message);
218 GNUNET_SCHEDULER_shutdown ();
219 break;
220
221 case GNUNET_FS_STATUS_SEARCH_STOPPED:
222 GNUNET_SCHEDULER_add_now (&clean_task, NULL);
223 break;
224
225 default:
226 fprintf (stderr, _ ("Unexpected status: %d\n"), info->status);
227 break;
228 }
229 return NULL; 229 return NULL;
230} 230}
231 231
232 232
233static void 233static void
234shutdown_task(void *cls) 234shutdown_task (void *cls)
235{ 235{
236 if (sc != NULL) 236 if (sc != NULL)
237 { 237 {
238 GNUNET_FS_search_stop(sc); 238 GNUNET_FS_search_stop (sc);
239 sc = NULL; 239 sc = NULL;
240 } 240 }
241} 241}
242 242
243 243
244static void 244static void
245timeout_task(void *cls) 245timeout_task (void *cls)
246{ 246{
247 tt = NULL; 247 tt = NULL;
248 GNUNET_SCHEDULER_shutdown(); 248 GNUNET_SCHEDULER_shutdown ();
249} 249}
250 250
251 251
@@ -258,10 +258,10 @@ timeout_task(void *cls)
258 * @param c configuration 258 * @param c configuration
259 */ 259 */
260static void 260static void
261run(void *cls, 261run (void *cls,
262 char *const *args, 262 char *const *args,
263 const char *cfgfile, 263 const char *cfgfile,
264 const struct GNUNET_CONFIGURATION_Handle *c) 264 const struct GNUNET_CONFIGURATION_Handle *c)
265{ 265{
266 struct GNUNET_FS_Uri *uri; 266 struct GNUNET_FS_Uri *uri;
267 unsigned int argc; 267 unsigned int argc;
@@ -270,46 +270,46 @@ run(void *cls,
270 argc = 0; 270 argc = 0;
271 while (NULL != args[argc]) 271 while (NULL != args[argc])
272 argc++; 272 argc++;
273 uri = GNUNET_FS_uri_ksk_create_from_args(argc, (const char **)args); 273 uri = GNUNET_FS_uri_ksk_create_from_args (argc, (const char **) args);
274 if (NULL == uri) 274 if (NULL == uri)
275 { 275 {
276 fprintf(stderr, 276 fprintf (stderr,
277 "%s", 277 "%s",
278 _("Could not create keyword URI from arguments.\n")); 278 _ ("Could not create keyword URI from arguments.\n"));
279 ret = 1; 279 ret = 1;
280 return; 280 return;
281 } 281 }
282 cfg = c; 282 cfg = c;
283 ctx = GNUNET_FS_start(cfg, 283 ctx = GNUNET_FS_start (cfg,
284 "gnunet-search", 284 "gnunet-search",
285 &progress_cb, 285 &progress_cb,
286 NULL, 286 NULL,
287 GNUNET_FS_FLAGS_NONE, 287 GNUNET_FS_FLAGS_NONE,
288 GNUNET_FS_OPTIONS_END); 288 GNUNET_FS_OPTIONS_END);
289 if (NULL == ctx) 289 if (NULL == ctx)
290 { 290 {
291 fprintf(stderr, _("Could not initialize `%s' subsystem.\n"), "FS"); 291 fprintf (stderr, _ ("Could not initialize `%s' subsystem.\n"), "FS");
292 GNUNET_FS_uri_destroy(uri); 292 GNUNET_FS_uri_destroy (uri);
293 ret = 1; 293 ret = 1;
294 return; 294 return;
295 } 295 }
296 if (output_filename != NULL) 296 if (output_filename != NULL)
297 db = GNUNET_FS_directory_builder_create(NULL); 297 db = GNUNET_FS_directory_builder_create (NULL);
298 options = GNUNET_FS_SEARCH_OPTION_NONE; 298 options = GNUNET_FS_SEARCH_OPTION_NONE;
299 if (local_only) 299 if (local_only)
300 options |= GNUNET_FS_SEARCH_OPTION_LOOPBACK_ONLY; 300 options |= GNUNET_FS_SEARCH_OPTION_LOOPBACK_ONLY;
301 sc = GNUNET_FS_search_start(ctx, uri, anonymity, options, NULL); 301 sc = GNUNET_FS_search_start (ctx, uri, anonymity, options, NULL);
302 GNUNET_FS_uri_destroy(uri); 302 GNUNET_FS_uri_destroy (uri);
303 if (NULL == sc) 303 if (NULL == sc)
304 { 304 {
305 fprintf(stderr, "%s", _("Could not start searching.\n")); 305 fprintf (stderr, "%s", _ ("Could not start searching.\n"));
306 GNUNET_FS_stop(ctx); 306 GNUNET_FS_stop (ctx);
307 ret = 1; 307 ret = 1;
308 return; 308 return;
309 } 309 }
310 if (0 != timeout.rel_value_us) 310 if (0 != timeout.rel_value_us)
311 tt = GNUNET_SCHEDULER_add_delayed(timeout, &timeout_task, NULL); 311 tt = GNUNET_SCHEDULER_add_delayed (timeout, &timeout_task, NULL);
312 GNUNET_SCHEDULER_add_shutdown(&shutdown_task, NULL); 312 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
313} 313}
314 314
315 315
@@ -321,57 +321,57 @@ run(void *cls,
321 * @return 0 ok, 1 on error 321 * @return 0 ok, 1 on error
322 */ 322 */
323int 323int
324main(int argc, char *const *argv) 324main (int argc, char *const *argv)
325{ 325{
326 struct GNUNET_GETOPT_CommandLineOption options[] = 326 struct GNUNET_GETOPT_CommandLineOption options[] =
327 { GNUNET_GETOPT_option_uint('a', 327 { GNUNET_GETOPT_option_uint ('a',
328 "anonymity", 328 "anonymity",
329 "LEVEL", 329 "LEVEL",
330 gettext_noop( 330 gettext_noop (
331 "set the desired LEVEL of receiver-anonymity"), 331 "set the desired LEVEL of receiver-anonymity"),
332 &anonymity), 332 &anonymity),
333 GNUNET_GETOPT_option_flag( 333 GNUNET_GETOPT_option_flag (
334 'n', 334 'n',
335 "no-network", 335 "no-network",
336 gettext_noop("only search the local peer (no P2P network search)"), 336 gettext_noop ("only search the local peer (no P2P network search)"),
337 &local_only), 337 &local_only),
338 GNUNET_GETOPT_option_string( 338 GNUNET_GETOPT_option_string (
339 'o', 339 'o',
340 "output", 340 "output",
341 "PREFIX", 341 "PREFIX",
342 gettext_noop("write search results to file starting with PREFIX"), 342 gettext_noop ("write search results to file starting with PREFIX"),
343 &output_filename), 343 &output_filename),
344 GNUNET_GETOPT_option_relative_time( 344 GNUNET_GETOPT_option_relative_time (
345 't', 345 't',
346 "timeout", 346 "timeout",
347 "DELAY", 347 "DELAY",
348 gettext_noop("automatically terminate search after DELAY"), 348 gettext_noop ("automatically terminate search after DELAY"),
349 &timeout), 349 &timeout),
350 GNUNET_GETOPT_option_verbose(&verbose), 350 GNUNET_GETOPT_option_verbose (&verbose),
351 GNUNET_GETOPT_option_uint('N', 351 GNUNET_GETOPT_option_uint ('N',
352 "results", 352 "results",
353 "VALUE", 353 "VALUE",
354 gettext_noop("automatically terminate search " 354 gettext_noop ("automatically terminate search "
355 "after VALUE results are found"), 355 "after VALUE results are found"),
356 &results_limit), 356 &results_limit),
357 GNUNET_GETOPT_OPTION_END }; 357 GNUNET_GETOPT_OPTION_END };
358 358
359 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args(argc, argv, &argc, &argv)) 359 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
360 return 2; 360 return 2;
361 361
362 ret = 362 ret =
363 (GNUNET_OK == 363 (GNUNET_OK ==
364 GNUNET_PROGRAM_run(argc, 364 GNUNET_PROGRAM_run (argc,
365 argv, 365 argv,
366 "gnunet-search [OPTIONS] KEYWORD", 366 "gnunet-search [OPTIONS] KEYWORD",
367 gettext_noop( 367 gettext_noop (
368 "Search GNUnet for files that were published on GNUnet"), 368 "Search GNUnet for files that were published on GNUnet"),
369 options, 369 options,
370 &run, 370 &run,
371 NULL)) 371 NULL))
372 ? ret 372 ? ret
373 : 1; 373 : 1;
374 GNUNET_free((void *)argv); 374 GNUNET_free ((void *) argv);
375 return ret; 375 return ret;
376} 376}
377 377