void directoryBlock(unsigned char *p) { EOS32_ino_t ino; int i, j; unsigned char c; checkBatch(0); for (i = 0; i < DIRPB; i++) { printf("%02d: ", i); ino = get4Bytes(p); p += 4; printf("inode = %lu (0x%lX)\n", ino, ino); if (checkBatch(1)) return; printf(" name = "); if (*p == '\0') { printf("<empty>"); } else { for (j = 0; j < DIRSIZ; j++) { c = *(p + j); if (c == '\0') { break; } if (c < 0x20 || c >= 0x7F) { printf("."); } else { printf("%c", c); } } } printf("\n"); if (checkBatch(1)) return; p += DIRSIZ; } }
void indirectBlock(unsigned char *p) { EOS32_daddr_t addr; int i; checkBatch(0); for (i = 0; i < BLOCK_SIZE / sizeof(EOS32_daddr_t); i++) { addr = get4Bytes(p); p += 4; printf("block[%4d] = %lu (0x%lX)\n", i, addr, addr); if (checkBatch(1)) return; } }
int register_graphics::endBatch(lua_State* L) { batch2d* batch = checkBatch(L, 1); batch->end(); return 1; }
void freeBlock(unsigned char *p) { unsigned int nfree; EOS32_daddr_t addr; int i; checkBatch(0); nfree = get4Bytes(p); p += 4; printf("nfree = %u (0x%X)\n", nfree, nfree); if (checkBatch(1)) return; for (i = 0; i < NICFREE; i++) { addr = get4Bytes(p); p += 4; if (i < nfree) { printf(" %s block[%3d] = %lu (0x%lX)\n", i == 0 ? "link" : "free", i, addr, addr); if (checkBatch(1)) return; } } }
int register_graphics::createBatch(lua_State *L) { batch2d* batch = checkBatch(L, 1); shader* s = checkShader(L, 2); int limit = 9000; if(lua_isinteger(L, 3)) limit = lua_tointeger(L, 3); batch->create(s, limit); return 1; }
int register_graphics::deleteBatch(lua_State *L) { batch2d* f = checkBatch(L, 1); if (f != NULL){ SAFE_DELETE(f); }else{ LOG("can not delete batch because it is null!"); return 0; } return 1; }
int register_graphics::drawBatch(lua_State *L) { batch2d* batch = checkBatch(L, 1); luaL_checknumber(L, 2); luaL_checknumber(L, 3); luaL_checknumber(L, 4); luaL_checknumber(L, 5); float x = lua_tonumber(L, 2); float y = lua_tonumber(L, 3); float w = lua_tonumber(L, 4); float h = lua_tonumber(L, 5); float rotation = 0; if(lua_isnumber(L, 6)) rotation = lua_tonumber(L, 6); float originX = w * 0.5f; if(lua_isnumber(L, 7)) originX = lua_tonumber(L, 7); float originY = h * 0.5f; if(lua_isnumber(L, 8)) originY = lua_tonumber(L, 8); float srcX = 0; if(lua_tonumber(L, 9)) srcX = lua_tonumber(L, 9); float srcY = 0; if(lua_tonumber(L, 10)) srcY = lua_tonumber(L, 10); float srcWidth = w; if(lua_tonumber(L,11)) srcWidth = lua_tonumber(L, 11); float srcHeight = h; if(lua_tonumber(L,12)) srcHeight = lua_tonumber(L, 12); bool flipX = false; if(lua_toboolean(L, 13)) flipX = lua_toboolean(L, 13); bool flipY = true; if(lua_toboolean(L, 14)) flipY = lua_toboolean(L, 14); float scaleX = 1; if(lua_tonumber(L,15)) scaleX = lua_tonumber(L, 15); float scaleY = 1; if(lua_tonumber(L, 16)) scaleY = lua_tonumber(L, 16); batch->draw(x, y, w, h, rotation, originX, originY, srcX, srcY, srcWidth, srcHeight, flipX, flipY, scaleX, scaleY); return 1; }
void rawBlock(unsigned char *p) { int i, j; unsigned char c; checkBatch(0); for (i = 0; i < BLOCK_SIZE / 16; i++) { printf("%04X ", i * 16); for (j = 0; j < 16; j++) { c = p[i * 16 + j]; printf("%02X ", c); } printf(" "); for (j = 0; j < 16; j++) { c = p[i * 16 + j]; if (c < 0x20 || c >= 0x7F) { printf("."); } else { printf("%c", c); } } printf("\n"); if (checkBatch(1)) return; } }
void inodeBlock(unsigned char *p) { unsigned int mode; unsigned int nlink; unsigned int uid; unsigned int gid; EOS32_time_t tim; char *dat; EOS32_off_t size; EOS32_daddr_t addr; int i, j; checkBatch(0); for (i = 0; i < INOPB; i++) { printf("inode %d:", i); mode = get4Bytes(p); p += 4; if (mode != 0) { printf(" type/mode = 0x%08X = ", mode); if ((mode & IFMT) == IFREG) { printf("-"); } else if ((mode & IFMT) == IFDIR) { printf("d"); } else if ((mode & IFMT) == IFCHR) { printf("c"); } else if ((mode & IFMT) == IFBLK) { printf("b"); } else { printf("?"); } printf("%c", mode & IUREAD ? 'r' : '-'); printf("%c", mode & IUWRITE ? 'w' : '-'); printf("%c", mode & IUEXEC ? 'x' : '-'); printf("%c", mode & IGREAD ? 'r' : '-'); printf("%c", mode & IGWRITE ? 'w' : '-'); printf("%c", mode & IGEXEC ? 'x' : '-'); printf("%c", mode & IOREAD ? 'r' : '-'); printf("%c", mode & IOWRITE ? 'w' : '-'); printf("%c", mode & IOEXEC ? 'x' : '-'); if (mode & ISUID) { printf(", set uid"); } if (mode & ISGID) { printf(", set gid"); } if (mode & ISVTX) { printf(", save text"); } } else { printf(" <free>"); } printf("\n"); if (checkBatch(1)) return; nlink = get4Bytes(p); p += 4; if (mode != 0) { printf(" nlnk = %u (0x%08X)\n", nlink, nlink); if (checkBatch(1)) return; } uid = get4Bytes(p); p += 4; if (mode != 0) { printf(" uid = %u (0x%08X)\n", uid, uid); if (checkBatch(1)) return; } gid = get4Bytes(p); p += 4; if (mode != 0) { printf(" gid = %u (0x%08X)\n", gid, gid); if (checkBatch(1)) return; } tim = get4Bytes(p); p += 4; dat = ctime(&tim); dat[strlen(dat) - 1] = '\0'; if (mode != 0) { printf(" time inode created = %ld (%s)\n", tim, dat); if (checkBatch(1)) return; } tim = get4Bytes(p); p += 4; dat = ctime(&tim); dat[strlen(dat) - 1] = '\0'; if (mode != 0) { printf(" time last modified = %ld (%s)\n", tim, dat); if (checkBatch(1)) return; } tim = get4Bytes(p); p += 4; dat = ctime(&tim); dat[strlen(dat) - 1] = '\0'; if (mode != 0) { printf(" time last accessed = %ld (%s)\n", tim, dat); if (checkBatch(1)) return; } size = get4Bytes(p); p += 4; if (mode != 0) { printf(" size = %lu (0x%lX)\n", size, size); if (checkBatch(1)) return; } for (j = 0; j < 6; j++) { addr = get4Bytes(p); p += 4; if (mode != 0) { printf(" direct block[%1d] = %lu (0x%lX)\n", j, addr, addr); if (checkBatch(1)) return; } } addr = get4Bytes(p); p += 4; if (mode != 0) { printf(" single indirect = %lu (0x%lX)\n", addr, addr); if (checkBatch(1)) return; } addr = get4Bytes(p); p += 4; if (mode != 0) { printf(" double indirect = %lu (0x%lX)\n", addr, addr); if (checkBatch(1)) return; } } }
void superBlock(unsigned char *p) { unsigned int magic; EOS32_daddr_t fsize; EOS32_daddr_t isize; EOS32_daddr_t freeblks; EOS32_ino_t freeinos; unsigned int ninode; EOS32_ino_t ino; unsigned int nfree; EOS32_daddr_t free; EOS32_time_t tim; char *dat; unsigned char flag; int i; checkBatch(0); magic = get4Bytes(p); p += 4; printf("magic number = %u (0x%08X)\n", magic, magic); if (checkBatch(1)) return; fsize = get4Bytes(p); p += 4; printf("file system size = %lu (0x%lX) blocks\n", fsize, fsize); if (checkBatch(1)) return; isize = get4Bytes(p); p += 4; printf("inode list size = %lu (0x%lX) blocks\n", isize, isize); if (checkBatch(1)) return; freeblks = get4Bytes(p); p += 4; printf("free blocks = %lu (0x%lX)\n", freeblks, freeblks); if (checkBatch(1)) return; freeinos = get4Bytes(p); p += 4; printf("free inodes = %lu (0x%lX)\n", freeinos, freeinos); if (checkBatch(1)) return; ninode = get4Bytes(p); p += 4; printf("number of entries in free inode list = %u (0x%X)\n", ninode, ninode); if (checkBatch(1)) return; for (i = 0; i < NICINOD; i++) { ino = get4Bytes(p); p += 4; if (i < ninode) { printf(" free inode[%3d] = %lu (0x%lX)\n", i, ino, ino); if (checkBatch(1)) return; } } nfree = get4Bytes(p); p += 4; printf("number of entries in free block list = %u (0x%X)\n", nfree, nfree); if (checkBatch(1)) return; for (i = 0; i < NICFREE; i++) { free = get4Bytes(p); p += 4; if (i < nfree) { printf(" %s block[%3d] = %lu (0x%lX)\n", i == 0 ? "link" : "free", i, free, free); if (checkBatch(1)) return; } } tim = get4Bytes(p); p += 4; dat = ctime(&tim); dat[strlen(dat) - 1] = '\0'; printf("last super block update = %ld (%s)\n", tim, dat); if (checkBatch(1)) return; flag = *p++; printf("free list locked flag = %d\n", (int) flag); if (checkBatch(1)) return; flag = *p++; printf("inode list locked flag = %d\n", (int) flag); if (checkBatch(1)) return; flag = *p++; printf("super block modified flag = %d\n", (int) flag); if (checkBatch(1)) return; flag = *p++; printf("fs mounted read-only flag = %d\n", (int) flag); if (checkBatch(1)) return; }
int register_graphics::beginBatch(lua_State *L) { batch2d* batch = checkBatch(L, 1); batch->begin(); return 1; }
int register_graphics::renderMesh(lua_State *L) { batch2d* b = checkBatch(L, 1); b->renderMesh(); return 1; }