コード例 #1
0
ファイル: test-method.c プロジェクト: Distrotech/gnome-vfs
static GnomeVFSResult
do_read_directory (GnomeVFSMethod *method,
		   GnomeVFSMethodHandle *method_handle,
		   GnomeVFSFileInfo *file_info,
		   GnomeVFSContext *context)
{
	PERFORM_OPERATION_NO_URI (read_directory, gnome_vfs_directory_read_next ((GnomeVFSDirectoryHandle *) method_handle, file_info));
}
コード例 #2
0
ファイル: listview.c プロジェクト: bajtos/gnome-file-manager
void populate_tree_model (GtkListStore *model)
{
	GnomeVFSDirectoryHandle *handle;
	GnomeVFSFileInfo *info;
	GnomeVFSResult res;
	GtkTreeIter iter;
//	GValue *value;
	
#define URI "/"

	gnome_vfs_init();
	res = gnome_vfs_directory_open (&handle, URI, GNOME_VFS_FILE_INFO_DEFAULT);
	if (res) goto error;

	for (;;) {
		info = gnome_vfs_file_info_new ();
		res = gnome_vfs_directory_read_next (handle, info);
		
		if (res == GNOME_VFS_ERROR_EOF) break;
		
		if (res && res != GNOME_VFS_ERROR_EOF) {
			gnome_vfs_file_info_unref (info);
			goto error;
		}

	
puts(info->name);
//		value = g_new0 (GValue, 1); 
//		g_value_init (value, G_TYPE_POINTER);
//		g_value_set_pointer (value, info);
		gtk_list_store_append (GTK_LIST_STORE(model), &iter); /** ?? **/	
//		gtk_list_store_set_value (GTK_LIST_STORE(model), &iter, COLUMN_ONE, value);
//		gtk_list_store_set (model, &iter, COLUMN_ONE, info->name, -1);
		gtk_list_store_set (model, &iter, COLUMN_ONE, info, COLUMN_TWO, 0, -1);
	} 

	
	goto done;	

error:
	puts(gnome_vfs_result_to_string (res));

done:
	gnome_vfs_directory_close (handle);
}
コード例 #3
0
ファイル: tcp.c プロジェクト: girish946/g2ipmsg
static int
send_directory(tcp_con_t *con,const char *top_dir,const char *basename,GnomeVFSFileInfo *info){
  int rc;
  char *uri;
  GnomeVFSResult res;
  GnomeVFSDirectoryHandle *handle;
  char *next_dir;
  char *res_message;

  if ( (!top_dir) || (!info) || (!basename) )
    return -EINVAL;

  rc=create_response(IPMSG_FILE_DIR,info->name,info->size,top_dir,&res_message);
  
  if (rc<0)
    return rc;
  dbg_out("Send dir:%s (%s)\n",res_message,top_dir);
  rc=send_header(con,res_message);
  g_free(res_message);
  if (rc<0)
    return rc;

      
  uri=gnome_vfs_get_uri_from_local_path(top_dir);
  if (!uri)
    return -ENOMEM;
  /*
   *ファイルを送付
   */
  res=gnome_vfs_directory_open(&handle,uri,GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
  res=gnome_vfs_directory_read_next(handle,info);
  while (res==GNOME_VFS_OK) {
    read_directory_files(con,top_dir,info);
    res=gnome_vfs_directory_read_next(handle,info);
  }
  gnome_vfs_directory_close(handle); 
  /*
   *ディレクトリを送付
   */
  res=gnome_vfs_directory_open(&handle,uri,GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
  if (res!=GNOME_VFS_OK) {
    err_out("Can not open dir:%s %s (%d)\n",
	    top_dir,
	    gnome_vfs_result_to_string(res),
	    res);
    goto error_out;
  }
  res=gnome_vfs_directory_read_next(handle,info);
  if (res!=GNOME_VFS_OK) {
    if (res != GNOME_VFS_ERROR_EOF)
      err_out("Can not read next dir:%s %s (%d)\n",
	      top_dir,
	      gnome_vfs_result_to_string(res),
	      res);
    goto error_out;
  }
  while (res==GNOME_VFS_OK) {
    if ( (info->type==GNOME_VFS_FILE_TYPE_DIRECTORY) &&
	 ( (strcmp(info->name,"..")) && (strcmp(info->name,"."))) ){
      dbg_out("dir:%s\n",info->name);
      next_dir=g_build_filename(top_dir,info->name,NULL);
      if (!next_dir)
	goto error_out;
      rc=send_directory(con,next_dir,info->name,info);
      g_free(next_dir);
      if (rc<0)
	return rc;
      rc=create_response(IPMSG_FILE_RETPARENT,info->name,info->size,top_dir,&res_message);
      if (rc<0)
	return rc;
      dbg_out("Send ret parent:%s\n",res_message);
      rc=send_header(con,res_message);
      g_free(res_message);
      if (rc<0)
	return rc;
    }
    res=gnome_vfs_directory_read_next(handle,info);
    if (res!=GNOME_VFS_OK) {
      if (res != GNOME_VFS_ERROR_EOF)
	err_out("Can not read next dir:%s %s (%d)\n",
		top_dir,
		gnome_vfs_result_to_string(res),
		res);
      goto error_out;
    }
  }

 error_out:
  gnome_vfs_directory_close(handle); 
  g_free(uri);
  return rc;
}