static Folder* S_folder_with_contents() { RAMFolder *folder = RAMFolder_new(seg_1); OutStream *foo_out = RAMFolder_Open_Out(folder, foo); OutStream *bar_out = RAMFolder_Open_Out(folder, bar); OutStream_Write_Bytes(foo_out, "foo", 3); OutStream_Write_Bytes(bar_out, "bar", 3); OutStream_Close(foo_out); OutStream_Close(bar_out); DECREF(foo_out); DECREF(bar_out); return (Folder*)folder; }
static Folder* S_folder_with_contents() { RAMFolder *folder = RAMFolder_new(seg_1); OutStream *foo_out = RAMFolder_Open_Out(folder, foo); OutStream *bar_out = RAMFolder_Open_Out(folder, bar); OutStream_Write_Bytes(foo_out, "foo", 3); OutStream_Write_Bytes(bar_out, "bar", 3); OutStream_Close(foo_out); OutStream_Close(bar_out); DECREF(foo_out); DECREF(bar_out); String *empty = SSTR_BLANK(); RAMFolder_Consolidate(folder, empty); return (Folder*)folder; }
static void S_read_fsfolder(RAMFolder *self) { u32_t i, max; /* Open an FSFolder for reading. */ FSFolder *source_folder = FSFolder_new(self->path); VArray *files = FSFolder_List(source_folder); /* Copy every file in the FSFolder into RAM. */ for (i = 0, max = VA_Get_Size(files); i < max; i++) { CharBuf *filepath = (CharBuf*)VA_Fetch(files, i); InStream *source_stream = FSFolder_Open_In(source_folder, filepath); OutStream *outstream = RAMFolder_Open_Out(self, filepath); if (!source_stream) { THROW("Can't open %o", filepath); } if (!outstream) { THROW("Can't open %o", filepath); } OutStream_Absorb(outstream, source_stream); OutStream_Close(outstream); InStream_Close(source_stream); DECREF(outstream); DECREF(source_stream); } DECREF(files); FSFolder_Close(source_folder); DECREF(source_folder); }