FILE * srvr_create_file(const char *dir, const char *file) { FILE *fp; char *path = build_path(file, dir); if (path == NULL) { pinfo(PINFO_ERROR, FALSE, "unable to build pathspec"); return NULL; } /* check if the file already exists */ if ((fp = fcreat(path, "w")) == NULL) { switch (errno) { case EEXIST: pinfo(PINFO_WARN, FALSE, "file %s requested already exists", path); break; case EISDIR: pinfo(PINFO_WARN, FALSE, "file %s is actually a directory", path); break; default: break; } } free_n(path); return fp; }
/* void testbitmask(void) { setmaskbit(31); setmaskbit(95); setmaskbit(159);setmaskbit(223); setmaskbit(287); setmaskbit(351); setmaskbit(415);setmaskbit(479); setmaskbit(90); setmaskbit(154);setmaskbit(218); setmaskbit(282); setmaskbit(346); setmaskbit(347); setmaskbit(348); setmaskbit(349); setmaskbit(350); setmaskbit(100); setmaskbit(164);setmaskbit(228); setmaskbit(292); setmaskbit(356); setmaskbit(355); setmaskbit(354); setmaskbit(353); setmaskbit(352); printfreemask(); clearmaskbit(31); clearmaskbit(95); clearmaskbit(159);clearmaskbit(223); clearmaskbit(287); clearmaskbit(351); clearmaskbit(415);clearmaskbit(479); clearmaskbit(90); clearmaskbit(154);clearmaskbit(218); clearmaskbit(282); clearmaskbit(346); clearmaskbit(347); clearmaskbit(348); clearmaskbit(349); clearmaskbit(350); clearmaskbit(100); clearmaskbit(164);clearmaskbit(228); clearmaskbit(292); clearmaskbit(356); clearmaskbit(355); clearmaskbit(354); clearmaskbit(353); clearmaskbit(352); printfreemask(); } */ void test_fs(void){ int fd1, fd2; //File descriptors fd1 = fcreat("Test File", 0); //Creating a new file printf("Helo %d\n", fd1); //fd2 = fcreat("Sample", 0); //Creating a new file fd1 = fopen("Test File", 1);//Opening a file in write-only mode printf("file opened in write only mode..%d\n",fd1); wwrite(fd1); fclose(fd1); //fwrite(fd1, ) fd1 = fopen("Test File", 0); //Opening the same file in Read only mode rread(fd1); //fclose(fd1); //fd2 = fopen("Sample", 1); //Opening a file in write only mode //fwrite(fd2, ) //fseek(fd2, 2); //fd2 = fopen("Sample", 0); //Opening a file in read only mode //rread(fd2); //fclose(fd2); }
/** * @ingroup shell * * Shell command fstest. * @param nargs number of arguments in args array * @param args array of arguments * @return OK for success, SYSERR for syntax error */ shellcmd xsh_fstest(int nargs, char *args[]) { int rval; int fd, i, j; char *buf1, *buf2; /* Output help, if '--help' argument was supplied */ if (nargs == 2 && strncmp(args[1], "--help", 7) == 0) { printf("Usage: %s\n\n", args[0]); printf("Description:\n"); printf("\tFilesystem Test\n"); printf("Options:\n"); printf("\t--help\tdisplay this help and exit\n"); return OK; } /* Check for correct number of arguments */ if (nargs > 1) { fprintf(stderr, "%s: too many arguments\n", args[0]); fprintf(stderr, "Try '%s --help' for more information\n", args[0]); return SYSERR; } if (nargs < 1) { fprintf(stderr, "%s: too few arguments\n", args[0]); fprintf(stderr, "Try '%s --help' for more information\n", args[0]); return SYSERR; } #ifdef FS mkbsdev(0, 0, 0); /* device "0" and default blocksize (=0) and count */ mkfs(0,DEFAULT_NUM_INODES); /* bsdev 0*/ //testbitmask(); buf1 = memget(SIZE*sizeof(char)); buf2 = memget(SIZE*sizeof(char)); fd = fcreat("a", O_CREAT); for(i=0; i<SIZE; i++) { j = i%(127-33); j = j+33; buf1[i] = (char) j; } rval = fwrite(fd,buf1,SIZE); if(rval == 0) { printf("\n\r File write failed"); } fseek(fd,-rval); rval = fread(fd, buf2, rval); buf2[rval] = '\0'; if(rval == 0) { printf("\n\r File read failed"); } printf("\n\rContent of file %s",buf2); rval = fclose(fd); if(rval != OK) { printf("\n\rReturn val for fclose : %d",rval); } memfree(buf1,SIZE); memfree(buf2,SIZE); #else printf("No filesystem support\n"); #endif return OK; }