Exemple #1
0
static void
infinoted_autosave_walk_directory(InfinotedAutosave* autosave,
                                  InfdDirectoryIter* iter)
{
  InfdDirectoryIter child;
  InfdSessionProxy* session;

  if(infd_directory_iter_get_node_type(autosave->directory, iter) ==
     INFD_STORAGE_NODE_SUBDIRECTORY)
  {
    if(infd_directory_iter_get_explored(autosave->directory, iter) == TRUE)
    {
      /* Errors can't happen as the directory is already explored */
      if(infd_directory_iter_get_child(autosave->directory, &child, NULL))
      {
        do {
          infinoted_autosave_walk_directory(autosave, &child);
        } while(infd_directory_iter_get_next(autosave->directory, &child));
      }
    }
  }
  else
  {
    session = infd_directory_iter_peek_session(autosave->directory, iter);
    if(session != NULL)
      infinoted_autosave_add_session(autosave, iter);
  }
}
static void
infinoted_directory_sync_walk_directory(InfinotedDirectorySync* dsync,
                                        InfdDirectoryIter* iter)
{
  InfdDirectoryIter child;
  InfdSessionProxy* session;
  GError* error;
  gchar* path;

  if(infd_directory_iter_get_node_type(dsync->directory, iter) ==
     INFD_STORAGE_NODE_SUBDIRECTORY)
  {
    if(infd_directory_iter_get_explored(dsync->directory, iter) == TRUE)
    {
      /* Errors can't happen as the directory is already explored */
      child = *iter;
      if(infd_directory_iter_get_child(dsync->directory, &child, NULL))
      {
        do
        {
          infinoted_directory_sync_walk_directory(dsync, &child);
        } while(infd_directory_iter_get_next(dsync->directory, &child));
      }
    }
  }
  else
  {
    session = infd_directory_iter_peek_session(dsync->directory, iter);
    if(session != NULL)
    {
      error = NULL;
      if(!infinoted_directory_sync_add_session(dsync, iter, &error))
      {
        path = infd_directory_iter_get_path(dsync->directory, iter);

        infinoted_util_log_warning(
          _("Failed to synchronize session \"%s\" to disk: %s"),
          path,
          error->message
        );

        g_free(path);
        g_error_free(error);
      }
    }
  }
}