/**
 * Function to unload keys
 */
static void
unload_keys ()
{
    if (NULL != hostkeys_map)
    {
        GNUNET_assert (NULL != hostkeys_data);
        GNUNET_DISK_file_unmap (hostkeys_map);
        hostkeys_map = NULL;
        hostkeys_data = NULL;
    }
    if (NULL != hostkeys_fd)
    {
        GNUNET_DISK_file_close (hostkeys_fd);
        hostkeys_fd = NULL;
    }
}
예제 #2
0
/**
 * Main function that will be run by the scheduler.
 *
 * @param cls closure
 * @param args remaining command-line arguments
 * @param cfgfile name of the configuration file used (for saving, can be NULL!)
 * @param cfg configuration
 */
static void
run (void *cls, char *const *args, const char *cfgfile,
     const struct GNUNET_CONFIGURATION_Handle *cfg)
{
  struct GNUNET_DISK_MapHandle *map;
  struct GNUNET_DISK_FileHandle *h;
  void *data;
  size_t len;
  uint64_t size;
  const char *filename;
  int i;

  if (NULL == args[0])
  {
    FPRINTF (stderr, "%s",  _("You must specify a filename to inspect.\n"));
    ret = 1;
    return;
  }
  i = 0;
  while (NULL != (filename = args[i++]))
  {
    if ((GNUNET_OK != GNUNET_DISK_file_size (filename, &size, GNUNET_YES, 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);
    if (GNUNET_OK != GNUNET_FS_directory_list_contents (len, data, 0, &print_entry, NULL))
      fprintf (stdout, _("`%s' is not a GNUnet directory\n"),
	       filename);
    else
      printf ("\n");
    GNUNET_DISK_file_unmap (map);
    GNUNET_DISK_file_close (h);
  }
}