/*------------------------------------------------- image_battery_save_by_name - stores the battery backed RAM for an image. A filename may be supplied to the function. -------------------------------------------------*/ void image_battery_save_by_name(emu_options &options, const char *filename, const void *buffer, int length) { assert_always(buffer && (length > 0), "Must specify sensical buffer/length"); /* try to open the battery file and write it out, if possible */ emu_file file(options.nvram_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); file_error filerr = file.open(filename); if (filerr == FILERR_NONE) file.write(buffer, length); }
void image_battery_load_by_name(emu_options &options, const char *filename, void *buffer, int length, int fill) { file_error filerr; int bytes_read = 0; assert_always(buffer && (length > 0), "Must specify sensical buffer/length"); /* try to open the battery file and read it in, if possible */ emu_file file(options.nvram_directory(), OPEN_FLAG_READ); filerr = file.open(filename); if (filerr == FILERR_NONE) bytes_read = file.read(buffer, length); /* fill remaining bytes (if necessary) */ memset(((char *) buffer) + bytes_read, fill, length - bytes_read); }
void image_battery_load_by_name(emu_options &options, const char *filename, void *buffer, int length, void *def_buffer) { file_error filerr; int bytes_read = 0; assert_always(buffer && (length > 0), "Must specify sensical buffer/length"); /* try to open the battery file and read it in, if possible */ emu_file file(options.nvram_directory(), OPEN_FLAG_READ); filerr = file.open(filename); if (filerr == FILERR_NONE) bytes_read = file.read(buffer, length); /* if no file was present, copy the default battery */ if (bytes_read == 0 && def_buffer) memcpy((char *) buffer, (char *) def_buffer, length); }