From 318ecf8f8264b5e3f9c53686893e26eecf52a540 Mon Sep 17 00:00:00 2001 From: FreeArtMan Date: Sun, 29 Sep 2019 13:20:49 +0100 Subject: Easy commands pageup/pagedown added to fast list file content --- cmd/cmd_pageup.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 cmd/cmd_pageup.c (limited to 'cmd/cmd_pageup.c') diff --git a/cmd/cmd_pageup.c b/cmd/cmd_pageup.c new file mode 100644 index 0000000..4e0612b --- /dev/null +++ b/cmd/cmd_pageup.c @@ -0,0 +1,99 @@ +#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; +} \ No newline at end of file -- cgit v1.2.3