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;
}