summaryrefslogtreecommitdiffstats
path: root/src/cansend.c
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2008-09-10 11:24:25 +0000
committerMarc Kleine-Budde <mkl@pengutronix.de>2008-09-10 11:24:25 +0000
commit4dc7f6538ccbddf40af2bd6b03e56127d721b456 (patch)
tree96fc93f910f29647a4fd96090ee74687011fbf3e /src/cansend.c
parent86f71be175210e715261432b94784269a2fc2052 (diff)
downloadcanutils-4dc7f6538ccbddf40af2bd6b03e56127d721b456.tar.gz
canutils-4dc7f6538ccbddf40af2bd6b03e56127d721b456.tar.xz
git-svn-id: https://iocaste.extern.pengutronix.de/svn/canutils/trunks/canutils-3.0-trunk@92 5fd5a299-6ef2-0310-aa18-8b01d7c39d8c
Diffstat (limited to 'src/cansend.c')
-rw-r--r--src/cansend.c30
1 files changed, 11 insertions, 19 deletions
diff --git a/src/cansend.c b/src/cansend.c
index fb534e9..caec590 100644
--- a/src/cansend.c
+++ b/src/cansend.c
@@ -24,7 +24,7 @@ extern int optind, opterr, optopt;
static void print_usage(char *prg)
{
fprintf(stderr,
- "Usage: %s <can-interface> [Options] <can-msg>\n"
+ "Usage: %s [<can-interface>] [Options] <can-msg>\n"
"<can-msg> can consist of up to 8 bytes given as a space separated list\n"
"Options:\n"
" -i, --identifier=ID CAN Identifier (default = 1)\n"
@@ -47,13 +47,14 @@ enum {
int main(int argc, char **argv)
{
- int family = PF_CAN, type = SOCK_RAW, proto = CAN_RAW;
+ struct can_frame frame;
+ struct ifreq ifr;
struct sockaddr_can addr;
+ char *interface = "can0";
+ int family = PF_CAN, type = SOCK_RAW, proto = CAN_RAW;
+ int loopcount = 1, infinite = 0;
int s, opt, ret, i, dlc = 0, rtr = 0, extended = 0;
- struct can_frame frame;
int verbose = 0;
- int loopcount = 1, infinite = 0;
- struct ifreq ifr;
struct option long_options[] = {
{ "help", no_argument, 0, 'h' },
@@ -121,19 +122,11 @@ int main(int argc, char **argv)
}
}
- if (optind == argc) {
- print_usage(basename(argv[0]));
- exit(0);
- }
-
- if (argv[optind] == NULL) {
- fprintf(stderr, "No Interface supplied\n");
- exit(-1);
- }
+ if (optind != argc)
+ interface = argv[optind];
- if (verbose)
- printf("interface = %s, family = %d, type = %d, proto = %d\n",
- argv[optind], family, type, proto);
+ printf("interface = %s, family = %d, type = %d, proto = %d\n",
+ interface, family, type, proto);
s = socket(family, type, proto);
if (s < 0) {
@@ -142,7 +135,7 @@ int main(int argc, char **argv)
}
addr.can_family = family;
- strcpy(ifr.ifr_name, argv[optind]);
+ strcpy(ifr.ifr_name, interface);
if (ioctl(s, SIOCGIFINDEX, &ifr)) {
perror("ioctl");
return 1;
@@ -154,7 +147,6 @@ int main(int argc, char **argv)
return 1;
}
-
for (i = optind + 1; i < argc; i++) {
frame.data[dlc] = strtoul(argv[i], NULL, 0);
dlc++;