summaryrefslogtreecommitdiff
path: root/cmd/cmd_pagedown.c
blob: 8c4e3c4c591b95ffb43e0f885d9d7e367ee70ff9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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;
}