Ticket #623: 6200ch-nodeid.patch

File 6200ch-nodeid.patch, 1.9 KB (added by wagspat@…, 15 years ago)

patch to implement nodeid selection for ticket #623

  • 6200ch.c

     
    5656
    5757void usage()
    5858{
    59    fprintf(stderr, "Usage: 6200ch [-v] <channel_num>\n");
     59   fprintf(stderr, "Usage: 6200ch [-v] [-n NODE] <channel_num>\n");
     60   fprintf(stderr, "-v        Print additional verbose output\n");
     61   fprintf(stderr, "-n NODE   node to start device scanning on\n");
    6062   exit(1);
    6163}
    6264
     
    7072   int dig[3];
    7173   int chn = 550;
    7274
     75   /* some people experience crashes when starting on node 1 */
     76   int starting_node = STARTING_NODE;
     77   int c;
     78   int index;
     79
    7380   if (argc < 2)
    7481      usage();
    7582
    76    if (argc == 3 && argv[1][0] == '-' && argv[1][1] == 'v') {
    77       verbose = 1;
    78       chn = atoi(argv[2]);
    79    } else {
    80       chn = atoi(argv[1]);
     83   opterr = 0;
     84   while ((c = getopt(argc, argv, "vn:")) != -1) {
     85       switch (c) {
     86       case 'v':
     87           verbose = 1;
     88           break;
     89       case 'n':
     90           starting_node = atoi(optarg);
     91           break;
     92       default:
     93           fprintf(stderr, "incorrect command line arguments\n");
     94           usage();
     95       }
    8196   }
    8297
     98   /* print out usage message if not enough arguments */
     99   if (optind != argc-1) {
     100       usage();
     101   }
     102   /* the last argument is the channel number */
     103   chn = atoi(argv[optind]);
     104
    83105#ifdef RAW1394_V_0_8
    84106   raw1394handle_t handle = raw1394_get_handle();
    85107#else
     
    102124      exit(1);
    103125   }
    104126
     127   if (verbose) {
     128       printf("starting with node: %d\n", starting_node);
     129   }
     130
    105131   int nc = raw1394_get_nodecount(handle);
    106    for (i=STARTING_NODE; i < nc; ++i) {
     132   for (i=starting_node; i < nc; ++i) {
    107133      if (rom1394_get_directory(handle, i, &dir) < 0) {
    108134         fprintf(stderr,"error reading config rom directory for node %d\n", i);
    109135         raw1394_destroy_handle(handle);