ramdisk.c   [plain text]


#include "ramdisk.h"
#include "fail.h"
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/param.h>

int
setup_ram_volume(const char* name, char* path)
{
	char *cmd;
	int retval;

	retval = asprintf(&cmd, "diskutil erasevolume HFS+ '%s' `hdiutil attach -nomount ram://1500000` >/dev/null", name);
	VERIFY(retval > 0, "asprintf failed");

	retval = system(cmd);
	VERIFY(retval == 0, "diskutil command failed");

	snprintf(path, MAXPATHLEN, "/Volumes/%s", name);

	free(cmd);

	return PERFINDEX_SUCCESS;
}

int
cleanup_ram_volume(char* path)
{
	char *cmd;
	int retval;

	retval = asprintf(&cmd, "umount -f '%s' >/dev/null", path);
	VERIFY(retval > 0, "asprintf failed");

	retval = system(cmd);
	VERIFY(retval == 0, "diskutil command failed");

	free(cmd);

	return PERFINDEX_SUCCESS;
}