Mercurial > sos > sos
view src/testFS.c @ 118:6186160278c9
I should probably exit the program when it finishes..
author | Jonathan Pevarnek <pevarnj@gmail.com> |
---|---|
date | Thu, 16 Jun 2011 12:51:43 -0400 |
parents | 1144f2491a39 |
children |
line wrap: on
line source
#include <std.h> #include <os/fs.h> #include <error.h> void dumpText(char *text, int size) { do { putline(text, (size > CON_LEN)?CON_LEN:size); size -= CON_LEN; text += CON_LEN; } while(size > 0); } u32 listFiles() { size_t i; for(i = 0; 1; i++) { Direntry de; ErrCode err = getFInfo(i, &de); if(err == mkError(MODFS, OUTOFRANGE, WARN)) break; else if(isError(err)) return err; printFname(de.fname), sPrint("\n"); } return 0; } void start(u64 __memsize) { init_all(__memsize); char buffer[256]; if(isError(init_fs(0x100, __memsize))) goto END; while(1) { sPrint("Please select a mode:\n0: show file text\n1: make new file\n2: Append to file\n"); sPrint("3: Delete File\n4: Write to file\n"); sGet(buffer, 30); int mode = atoi(buffer); switch(mode) { case 0: { if(isError(listFiles())) sPrint("WARNING: ERROR IN READING FILE NAMES\n"); char fname[28]; sPrint("Please enter the file to read: "); getFname(fname); u32 fid; ErrCode err = lookupFile(fname, &fid); if(isError(err)) { if(errCode(err) == NOTFILE) sPrint("ERROR: Invalid file name\n"); continue; } u32 fileSize; if(isError(getFileSize(fid, &fileSize))) continue; char *text = malloc(fileSize); if(!text) continue; if(isError(getFileData(fid, text))) { free(text); continue; } dumpText(text, fileSize); free(text); } break; case 1: { char fname[28]; sPrint("Please enter a name for the new file: "); getFname(fname); u32 dummy; //I do not care about the fid personally if(isError(makeFile(fname, &dummy))) { sPrint("ERROR\n"); continue; } } break; case 2: { if(isError(listFiles())) sPrint("WARNING: ERROR IN READING FILE NAMES\n"); char fname[28]; sPrint("Please enter the file to write to: "); getFname(fname); u32 fid; ErrCode err = lookupFile(fname, &fid); if(isError(err)) { if(errCode(err) == NOTFILE) sPrint("ERROR: Invalid file name\n"); continue; } sPrint("Please enter the text to append to the file: "); u32 size = getline(buffer, CON_LEN); if(isError(fileAppend(fid, buffer, size))) { sPrint("ERROR\n"); continue; } } break; case 3: { if(isError(listFiles())) sPrint("WARNING: ERROR IN READING FILE NAMES\n"); char fname[28]; sPrint("Please enter the file to delete: "); getFname(fname); u32 fid; ErrCode err = lookupFile(fname, &fid); if(isError(err)) { if(errCode(err) == NOTFILE) sPrint("ERROR: Invalid file name\n"); continue; } if(isError(deleteFile(fid))) { sPrint("ERROR\n"); continue; } } break; case 4: { if(isError(listFiles())) sPrint("WARNING: ERROR IN READING FILE NAMES\n"); char fname[28]; sPrint("Please enter the file to write text to: "); getFname(fname); u32 fid; ErrCode err = lookupFile(fname, &fid); if(isError(err)) { if(errCode(err) == NOTFILE) sPrint("ERROR: Invalid file name\n"); continue; } sPrint("Please enter the offset for the text: "); sGet(buffer, 30); unsigned int offset = atoi(buffer); sPrint("Please enter the text to append to the file: "); u32 size = getline(buffer, CON_LEN); if(isError(fileWrite(fid, buffer, size, offset))) { sPrint("ERROR\n"); continue; } } break; } } END: sPrint("DONE\n"); for(;;) { sGet(buffer, 0); } }