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_pagedown.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++ cmd/cmd_pageup.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ ihe.c | 12 +++++-- ihe.h | 5 ++- 4 files changed, 210 insertions(+), 4 deletions(-) create mode 100644 cmd/cmd_pagedown.c create mode 100644 cmd/cmd_pageup.c diff --git a/cmd/cmd_pagedown.c b/cmd/cmd_pagedown.c new file mode 100644 index 0000000..8c4e3c4 --- /dev/null +++ b/cmd/cmd_pagedown.c @@ -0,0 +1,98 @@ +#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_pagedown( 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; +} + +int h_pagedown( cmd_arg_t *arg ) +{ + printf("- move position +block_size and dumpx"); + return 0; +} \ No newline at end of file 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 diff --git a/ihe.c b/ihe.c index 4390586..aacd301 100644 --- a/ihe.c +++ b/ihe.c @@ -436,9 +436,15 @@ cmd_table_t tab[] = { {"ls", c_ls, h_ls, NULL, NULL}, {"pwd", c_pwd, h_pwd, NULL, NULL}, {"cd", c_cd, h_cd, NULL, NULL}, - //{"create", c_create}, - //{"th", c_th}, - //{"tw", c_tw}, + {"pageup", c_pageup, h_pageup, NULL, NULL}, + {"pagedown", c_pagedown, h_pagedown, NULL, NULL}, + //{"goto", c_goto, h_goto, NULL, NULL}, + //{"bwrite", c_bwrite, h_bwrite, NULL, NULL}, + //{"bread", c_bread, h_bread, NULL, NULL}, + //{"create", c_create, h_create, NULL, NULL}, + //{"th", c_th. h_th, NULL, NULL}, + //{"tw", c_tw, h_tw, NULL, NULL}, + //{"tfit", c_tfit, h_tfit, NULL, NULL}, {NULL, NULL , NULL, NULL, NULL}, }; diff --git a/ihe.h b/ihe.h index 6f553c6..eb6c5db 100644 --- a/ihe.h +++ b/ihe.h @@ -53,6 +53,9 @@ int c_writes( cmd_arg_t *arg ); int h_writes( cmd_arg_t *arg ); int c_resize( cmd_arg_t *arg ); int h_resize( cmd_arg_t *arg ); - +int c_pagedown( cmd_arg_t *arg ); +int h_pagedown( cmd_arg_t *arg ); +int c_pageup( cmd_arg_t *arg ); +int h_pageup( cmd_arg_t *arg ); #endif \ No newline at end of file -- cgit v1.2.3