- }
-
- assignments = argc - optind; /* find real number of user assignments */
-
- if (infile == stdin) { /* no jokes with stdin */
- infinite_loops = 0;
- loops = 1;
- }
-
- if (verbose > 1) /* use -v -v to see this */
- if (infinite_loops)
- printf("infinite_loops\n");
- else
- printf("%d loops\n", loops);
-
- sleep_ts.tv_sec = gap / 1000;
- sleep_ts.tv_nsec = (gap % 1000) * 1000000;
-
- /* open socket */
- if ((s = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) {
- perror("socket");
- return 1;
- }
-
- addr.can_family = AF_CAN;
- addr.can_ifindex = 0;
-
- /* disable unneeded default receive filter on this RAW socket */
- setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, NULL, 0);
-
- if (loopback_disable) {
- int loopback = 0;
-
- setsockopt(s, SOL_CAN_RAW, CAN_RAW_LOOPBACK,
- &loopback, sizeof(loopback));
- }
-
- if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
- perror("bind");
- return 1;
- }
-
- if (assignments) {
- /* add & check user assginments from commandline */
- for (i=0; i<assignments; i++) {
- if (strlen(argv[optind+i]) >= BUFSZ) {
- fprintf(stderr, "Assignment too long!\n");
- print_usage(basename(argv[0]));
- return 1;
- }
- strcpy(buf, argv[optind+i]);
- for (j=0; j<BUFSZ; j++) { /* find '=' in assignment */
- if (buf[j] == '=')
- break;
- }
- if (buf[j] != '=') {
- fprintf(stderr, "'=' missing in assignment!\n");
- print_usage(basename(argv[0]));
- return 1;
- }
- buf[j] = 0; /* cut string in two pieces */
- if (add_assignment("user", s, &buf[0], &buf[j+1], verbose))