38 #include <sys/socket.h> 39 #include <sys/types.h> 41 #include <arpa/inet.h> 59 #define SOCKET_OPEN_FAILED -1 72 vsnprintf(buf,
sizeof(buf), fmt, ap);
75 fprintf(stderr,
"%s\n", buf);
88 while ((opt = getopt(argc, argv,
"ax")) != -1)
113 struct addrinfo hints, *res, *rp;
114 const char *addrStr, *portStr;
124 memset (&hints, 0,
sizeof (hints));
126 hints.ai_family = PF_UNSPEC;
127 hints.ai_socktype = SOCK_STREAM;
128 hints.ai_flags |= AI_CANONNAME;
130 err = getaddrinfo(addrStr, portStr, &hints, &res);
134 for (rp=res; rp!=NULL; rp=rp->ai_next)
136 sock = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
138 if (sock == -1)
continue;
140 if (connect(sock, rp->ai_addr, rp->ai_addrlen) != -1)
break;
174 printf(
"%08X\n", cmd.
res);
178 printf(
"%u\n", cmd.
res);
203 if (isprint(ch) || (ch ==
'\n') || (ch ==
'\r'))
205 else printf(
"\\x%02hhx", ch);
225 printf(
" %d", p[i+1]);
241 printf(
"%d %d", r-3, p[0]);
255 if (isprint(ch) || (ch ==
'\n') || (ch ==
'\r'))
257 else printf(
"\\x%02hhx", ch);
298 int main(
int argc ,
char *argv[])
301 int args, idx, i, pp, l, len;
316 for (i=args; i<argc; i++)
318 l += (strlen(argv[i]) + 1);
330 while ((idx >= 0) && (ctl.
eaten < len))
356 if (send(sock, &cmd,
sizeof(
cmdCmd_t), 0) ==
359 if (p[3]) send(sock, v, p[3], 0);
361 if (recv(sock, &cmd,
sizeof(
cmdCmd_t), MSG_WAITALL) ==
376 "%s only allowed within a script",
cmdInfo[idx].
name);
382 "%s? unknown command, pigs h for help",
cmdStr());
385 "%s: bad parameter, pigs h for help",
cmdStr());
389 if (sock >= 0) close(sock);
#define SOCKET_OPEN_FAILED
char response_buf[CMD_MAX_EXTENSION]
#define CMD_MAX_EXTENSION
int cmdParseScript(char *script, cmdScript_t *s, int diags)
int main(int argc, char *argv[])
void get_extensions(int sock, int command, int res)
#define PI_MAX_SCRIPT_PARAMS
char command_buf[CMD_MAX_EXTENSION]
ROSLIB_DECL std::string command(const std::string &cmd)
void print_result(int sock, int rv, cmdCmd_t cmd)
static int initOpts(int argc, char *argv[])
static int openSocket(void)
int cmdParse(char *buf, uint32_t *p, unsigned ext_len, char *ext, cmdCtlParse_t *ctl)
#define PI_DEFAULT_SOCKET_ADDR_STR
#define PI_DEFAULT_SOCKET_PORT_STR
char * cmdErrStr(int error)
void report(int err, char *fmt,...)