diff options
Diffstat (limited to 'cmd/cmd_write.c')
-rw-r--r-- | cmd/cmd_write.c | 24 |
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) |