view rvinterf/etmsync/fdcmd.c @ 122:cad9129d0f03
fc-tmsh: rftw command implemented
author |
Mychaela Falconia <falcon@freecalypso.org> |
date |
Sun, 19 Feb 2017 08:47:10 +0000 (2017-02-19) |
parents |
e7502631a0f9 |
children |
|
line source
/*
* File descriptor debug commands
*/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include "etm.h"
#include "ffs.h"
#include "tmffs2.h"
#include "limits.h"
#include "localtypes.h"
#include "localstruct.h"
#include "cmdtab.h"
#include "exitcodes.h"
cmd_fd_open(argc, argv)
char **argv;
{
int rc, fd;
rc = fd_open(argv[1], strtoul(argv[2], 0, 16), &fd);
if (rc)
return(rc);
printf("%d\n", fd);
return(0);
}
cmd_fd_read(argc, argv)
char **argv;
{
u_char databuf[MAX_READ_DATA];
int rc, sz, off, l;
rc = fd_read(strtoul(argv[1], 0, 0), databuf, strtoul(argv[2], 0, 0),
&sz);
if (rc)
return(rc);
printf("%d bytes read\n", sz);
for (off = 0; off < sz; off += 16) {
l = sz - off;
if (l > 16)
l = 16;
hexdump_line(off, databuf + off, l);
}
return(0);
}
cmd_fd_close(argc, argv)
char **argv;
{
return fd_close(strtoul(argv[1], 0, 0));
}
struct cmdtab fd_cmds[] = {
{"close", 1, 1, cmd_fd_close},
{"open", 2, 2, cmd_fd_open},
{"read", 2, 2, cmd_fd_read},
{0, 0, 0, 0}
};
cmd_fd(argc, argv)
char **argv;
{
struct cmdtab *tp;
int extargs;
for (tp = fd_cmds; tp->cmd; tp++)
if (!strcmp(tp->cmd, argv[1]))
break;
if (!tp->func) {
fprintf(stderr, "error: no such fd command\n");
return(ERROR_USAGE);
}
extargs = argc - 2;
if (extargs > tp->maxargs) {
fprintf(stderr, "error: too many arguments\n");
return(ERROR_USAGE);
}
if (extargs < tp->minargs) {
fprintf(stderr, "error: too few arguments\n");
return(ERROR_USAGE);
}
return tp->func(argc - 1, argv + 1);
}