#include "buf.h" #include "core.h" #include "libcmd/cmd.h" #include "libcmd/cmd_parse.h" extern file_t *g_file; extern Buf *g_buf; extern int g_flags; /* * blk - show block size * blk - set block size */ int c_pageup( cmd_arg_t *arg ) { int argc = arg->argc; char **argv = arg->argv; int *type = arg->type; int ret=-1; int i,j; printf("Set file position\n"); //move position int pos = file_pos(g_file); printf("pos %d\n",pos); printf("buf size %d\n",g_buf->size()); pos -= g_buf->size(); printf("pos %d\n",pos); file_seekp(g_file, pos); //read from file if (g_buf->isempty()) { //buf_resize( g_buf, g_file->blk_size ); g_buf->realloc(g_file->blk_size); } printf("read file\n"); char *buf_ptr; int sz; g_buf->get_ptr(&buf_ptr,&sz); sz = g_buf->size(); //printf("sz %d ptr %lx",sz,buf_ptr); ret = file_read_blk( g_file, (uint8_t *)buf_ptr, sz ); printf("Readed %d bytes\n", ret); if ( (ret >= 0) && (ret <= g_buf->size()) ) { g_buf->set_size(ret); } //dump buffer for (i=0; icursize(); i+=16) { for (j=i; jcursize() ) { char c; g_buf->getc(j,&c); printf("%02x ",(unsigned char)c); } else { printf(" "); } } for (j=i; jcursize() ) //wrong place move to cycle? { char c; g_buf->getc(j,&c); if ( isprint(c) ) { printf("%c",(unsigned char)c); } else { printf("\e[7m.\e[0m"); } } } printf("\n"); } printf("\n"); return 0; return 0; } int h_pageup( cmd_arg_t *arg ) { printf("- move down by block size,read and hexdump"); return 0; }