59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Part of libvboxfs - (c) 2012, D.C. van Moolenbroek */
 | 
						|
 | 
						|
#include "inc.h"
 | 
						|
 | 
						|
/*
 | 
						|
 * Get or set file information.
 | 
						|
 */
 | 
						|
int
 | 
						|
vboxfs_getset_info(vboxfs_handle_t handle, u32_t flags, void *data,
 | 
						|
	size_t size)
 | 
						|
{
 | 
						|
	vbox_param_t param[5];
 | 
						|
 | 
						|
	vbox_set_u32(¶m[0], vboxfs_root);
 | 
						|
	vbox_set_u64(¶m[1], handle);
 | 
						|
	vbox_set_u32(¶m[2], flags);
 | 
						|
	vbox_set_u32(¶m[3], size);
 | 
						|
	vbox_set_ptr(¶m[4], data, size, VBOX_DIR_INOUT);
 | 
						|
 | 
						|
	return vbox_call(vboxfs_conn, VBOXFS_CALL_INFO, param, 5, NULL);
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
 * Query volume information.
 | 
						|
 */
 | 
						|
int
 | 
						|
vboxfs_query_vol(char *path, vboxfs_volinfo_t *volinfo)
 | 
						|
{
 | 
						|
	vboxfs_handle_t h;
 | 
						|
	int r;
 | 
						|
 | 
						|
	if ((r = vboxfs_open_file(path, O_RDONLY, 0, &h, NULL)) != OK)
 | 
						|
		return r;
 | 
						|
 | 
						|
	r = vboxfs_getset_info(h, VBOXFS_INFO_GET | VBOXFS_INFO_VOLUME,
 | 
						|
	    volinfo, sizeof(*volinfo));
 | 
						|
 | 
						|
	vboxfs_close_file(h);
 | 
						|
 | 
						|
	return r;
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
 * Query volume information.
 | 
						|
 */
 | 
						|
int
 | 
						|
vboxfs_queryvol(char *path, u64_t *free, u64_t *total)
 | 
						|
{
 | 
						|
	vboxfs_volinfo_t volinfo;
 | 
						|
	int r;
 | 
						|
 | 
						|
	if ((r = vboxfs_query_vol(path, &volinfo)) != OK)
 | 
						|
		return r;
 | 
						|
 | 
						|
	*free = volinfo.free;
 | 
						|
	*total = volinfo.total;
 | 
						|
	return OK;
 | 
						|
}
 |