aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/cmd_write.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/cmd_write.c')
-rw-r--r--cmd/cmd_write.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/cmd/cmd_write.c b/cmd/cmd_write.c
index d54c0b5..978e244 100644
--- a/cmd/cmd_write.c
+++ b/cmd/cmd_write.c
@@ -5,13 +5,10 @@
#include "libcmd/cmd_parse.h"
extern file_t *g_file;
-extern buf_t *g_buf;
+extern Buf *g_buf;
extern int g_flags;
-//support masks
-int c_write( cmd_arg_t *arg)
-{
- /*
+/*
anonymous function
*/
uint8_t hex2u8( uint8_t *buf )
@@ -30,6 +27,11 @@ int c_write( cmd_arg_t *arg)
return ret;
}
+//support masks
+int c_write( cmd_arg_t *arg)
+{
+
+
int argc = arg->argc;
char **argv = arg->argv;
int i;
@@ -57,7 +59,7 @@ int c_write( cmd_arg_t *arg)
}
}
- if (strlen(argv[0]) > g_buf->size*2)
+ if (strlen(argv[0]) > g_buf->size()*2)
{
printf("Input param bigger then buffer\n");
return -1;
@@ -70,14 +72,18 @@ int c_write( cmd_arg_t *arg)
printf("\n");
- buf = malloc(strlen(argv[0])/2);
+ buf = (uint8_t *)malloc(strlen(argv[0])/2);
for (i=0; i<(strlen(argv[0])/2); i++)
{
buf[i] = hex2u8((unsigned char*)&argv[0][i*2]);
}
- memcpy( g_buf->buf, buf, strlen(argv[0])/2 );
- fret = file_write_blk( g_file, g_buf->buf );
+ char *buf_ptr;
+ int sz;
+ //memcpy( buf_ptr, buf, strlen(argv[0])/2 );
+ g_buf->set((char *)buf,strlen(argv[0])/2);
+ g_buf->get_ptr(&buf_ptr,&sz);
+ fret = file_write_blk( g_file, (uint8_t *)buf_ptr, sz );
free( buf );
if ( fret < 0)