#include <CoreFoundation/CoreFoundation.h>
#include "DiskArbitrationTypes.h"
#include "FSParticular.h"
#define FS_RESERVED_PREFIX "Apple_"
#define ADM_COOKIE_FILE ".autodiskmounted"
struct DiskVolume
{
char * fs_type;
char * disk_dev_name;
char * dev_type;
char * disk_name;
char * mount_point;
char * util_path;
boolean_t removable;
boolean_t writable;
boolean_t dirty;
boolean_t mounted;
};
typedef struct DiskVolume DiskVolume, *DiskVolumePtr;
void DiskVolume_new(DiskVolumePtr *diskVolume);
void DiskVolume_delete(DiskVolumePtr diskVolume);
void DiskVolume_print(DiskVolumePtr diskVolume);
void DiskVolume_setFSType(DiskVolumePtr diskVolume,char *t);
void DiskVolume_setDiskDevName(DiskVolumePtr diskVolume,char *d);
void DiskVolume_setDeviceType(DiskVolumePtr diskVolume,char *t);
void DiskVolume_setDiskName(DiskVolumePtr diskVolume,char *n);
void DiskVolume_setMountPoint(DiskVolumePtr diskVolume,char *m);
void DiskVolume_setRemovable(DiskVolumePtr diskVolume,boolean_t val);
void DiskVolume_setWritable(DiskVolumePtr diskVolume,boolean_t val);
void DiskVolume_setDirtyFS(DiskVolumePtr diskVolume,boolean_t val);
void DiskVolume_setMounted(DiskVolumePtr diskVolume,boolean_t val);
void DiskVolume_free(DiskVolumePtr diskVolume);
boolean_t DiskVolume_mount(DiskVolumePtr diskVolume);
boolean_t DiskVolume_mount_foreign(DiskVolumePtr diskVolume);
boolean_t DiskVolume_mount_ufs(DiskVolumePtr diskVolume);
struct DiskVolumes
{
CFMutableArrayRef list;
};
typedef struct DiskVolumes DiskVolumes, *DiskVolumesPtr;
void DiskVolumes_new(DiskVolumesPtr *diskList);
void DiskVolumes_delete(DiskVolumesPtr diskList);
DiskVolumesPtr DiskVolumes_do_removable(DiskVolumesPtr diskList,boolean_t do_removable,boolean_t eject);
unsigned DiskVolumes_count(DiskVolumesPtr);
DiskVolumePtr DiskVolumes_objectAtIndex(DiskVolumesPtr diskList,int index);
DiskVolumePtr DiskVolumes_volumeWithMount(DiskVolumesPtr diskList,char *path);
boolean_t DiskVolumes_setVolumeMountPoint(DiskVolumesPtr diskList,DiskVolumePtr vol);
DiskVolumesPtr DiskVolumes_print(DiskVolumesPtr diskList);
extern boolean_t DiskVolume_mount_ufs(DiskVolumePtr diskVolume);