GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
+ by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
/**
* Print a meta data entry.
+ *
+ * @param cls closure (unused)
+ * @param plugin_name name of the plugin that generated the meta data
+ * @param type type of the keyword
+ * @param format format of data
+ * @param data_mime_type mime type of data
+ * @param data value of the meta data
+ * @param data_size number of bytes in data
+ * @return always 0 (to continue iterating)
*/
static int
item_printer (void *cls,
- EXTRACTOR_KeywordType type,
- const char *data)
+ const char *plugin_name,
+ enum EXTRACTOR_MetaType type,
+ enum EXTRACTOR_MetaFormat format,
+ const char *data_mime_type,
+ const char *data,
+ size_t data_size)
{
+ if ( (format != EXTRACTOR_METAFORMAT_UTF8) &&
+ (format != EXTRACTOR_METAFORMAT_C_STRING) )
+ return 0;
printf ("\t%20s: %s\n",
dgettext (LIBEXTRACTOR_GETTEXT_DOMAIN,
- EXTRACTOR_getKeywordTypeAsString (type)), data);
- return GNUNET_OK;
+ EXTRACTOR_metatype_to_string (type)), data);
+ return 0;
}
* @param cls closure (not used)
* @param filename name of the file in the directory
* @param uri URI of the file
- * @param metadata metadata for the file; metadata for
+ * @param meta metadata for the file; metadata for
* the directory if everything else is NULL/zero
* @param length length of the available data for the file
* (of type size_t since data must certainly fit
{
char *string;
+ if (uri == NULL)
+ {
+ printf (_("Directory summary:\n"));
+ GNUNET_CONTAINER_meta_data_iterate (meta,
+ &item_printer,
+ NULL);
+ printf ("\n");
+ return;
+ }
string = GNUNET_FS_uri_to_string (uri);
printf ("%s:\n", string);
GNUNET_free (string);
- GNUNET_CONTAINER_meta_data_get_contents (meta,
- &item_printer,
- NULL);
+ GNUNET_CONTAINER_meta_data_iterate (meta,
+ &item_printer,
+ NULL);
}
void *data;
size_t len;
uint64_t size;
- const char *filename = args[0];
+ const char *filename;
+ int i;
- if (NULL == filename)
+ if (NULL == args[0])
{
fprintf (stderr,
_("You must specify a filename to inspect."));
ret = 1;
return;
}
- if ( (GNUNET_OK !=
- GNUNET_DISK_file_size (filename,
- &size,
- GNUNET_YES)) ||
- (NULL == (h = GNUNET_DISK_file_open (filename,
- GNUNET_DISK_OPEN_READ))) )
+ i = 0;
+ while (NULL != (filename = args[i++]))
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to read directory `%s'\n"),
- filename);
- ret = 1;
- return;
+ if ( (GNUNET_OK !=
+ GNUNET_DISK_file_size (filename,
+ &size,
+ GNUNET_YES)) ||
+ (NULL == (h = GNUNET_DISK_file_open (filename,
+ GNUNET_DISK_OPEN_READ,
+ GNUNET_DISK_PERM_NONE))) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to read directory `%s'\n"),
+ filename);
+ ret = 1;
+ continue;
+ }
+ len = (size_t) size;
+ data = GNUNET_DISK_file_map (h,
+ &map,
+ GNUNET_DISK_MAP_TYPE_READ,
+ len);
+ GNUNET_assert (NULL != data);
+ GNUNET_FS_directory_list_contents (len,
+ data,
+ 0,
+ &print_entry,
+ NULL);
+ GNUNET_DISK_file_unmap (map);
+ GNUNET_DISK_file_close (h);
}
- len = (size_t) size;
- data = GNUNET_DISK_file_map (h,
- &map,
- GNUNET_DISK_MAP_READ,
- len);
- GNUNET_assert (NULL != data);
- GNUNET_FS_directory_list_contents (len,
- data,
- 0,
- &print_entry,
- NULL);
- GNUNET_DISK_file_unmap (map);
- GNUNET_DISK_file_close (h);
}
-
-/**
- * gnunet-directory command line options
- */
-static struct GNUNET_GETOPT_CommandLineOption options[] = {
- // FIXME: options!
- GNUNET_GETOPT_OPTION_END
-};
-
-
/**
* The main function to inspect GNUnet directories.
*
int
main (int argc, char *const *argv)
{
+ static struct GNUNET_GETOPT_CommandLineOption options[] = {
+ GNUNET_GETOPT_OPTION_END
+ };
return (GNUNET_OK ==
GNUNET_PROGRAM_run (argc,
argv,