diff options
author | FreeArtMan <dos21h@gmail.com> | 2019-09-29 13:20:49 +0100 |
---|---|---|
committer | FreeArtMan <dos21h@gmail.com> | 2019-09-29 13:20:49 +0100 |
commit | 318ecf8f8264b5e3f9c53686893e26eecf52a540 (patch) | |
tree | aae40f2a5c3268033afe2f80b0a7e69da1b2218e /cmd | |
parent | 6dc830f768f77381b4c0991494b4ce90292c37a6 (diff) | |
download | ihe-318ecf8f8264b5e3f9c53686893e26eecf52a540.tar.gz ihe-318ecf8f8264b5e3f9c53686893e26eecf52a540.zip |
Easy commands pageup/pagedown added to fast list file content
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/cmd_pagedown.c | 98 | ||||
-rw-r--r-- | cmd/cmd_pageup.c | 99 |
2 files changed, 197 insertions, 0 deletions
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 <num> - 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; i<g_buf->cursize(); i+=16) + { + for (j=i; j<i+16; j++) + { + if ( j<g_buf->cursize() ) + { + char c; + g_buf->getc(j,&c); + printf("%02x ",(unsigned char)c); + } else + { + printf(" "); + } + } + + for (j=i; j<i+16; j++) + { + if ( j<g_buf->cursize() ) //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 <num> - 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; i<g_buf->cursize(); i+=16) + { + for (j=i; j<i+16; j++) + { + if ( j<g_buf->cursize() ) + { + char c; + g_buf->getc(j,&c); + printf("%02x ",(unsigned char)c); + } else + { + printf(" "); + } + } + + for (j=i; j<i+16; j++) + { + if ( j<g_buf->cursize() ) //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 |