diff options
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 | 
