#include #include #include void fs_fetch(void) { if (argslen() < 2) { uprintf("fs: Not enough arguments\n"); return; } char *path = *(args()+1); IOH ioh = ioctl(IOCTL_NOHANDLE, IOCTL_OPENF, (uint64_t)path, IOCTL_F_READ, 0); if (ioh < 0) { uprintf("fs: could not open %s\n", path); return; } IoctlStat statbuf; ZERO(&statbuf); ioctl(ioh, IOCTL_STAT, (uint64_t)&statbuf, (uint64_t)path, 0); if (statbuf.type == IOCTLSTAT_FILE) { uint8_t *buf = umalloc(statbuf.size+1); string_memset(buf, 0, statbuf.size+1); if (ioctl(ioh, IOCTL_READ, (uint64_t)buf, statbuf.size, 0) < 0) { uprintf("fs: coult not read %s\n", path); ufree(buf); ioctl(ioh, IOCTL_CLOSEF, 0, 0, 0); return; } uprintf("%s", buf); ufree(buf); } ioctl(ioh, IOCTL_CLOSEF, 0, 0, 0); }