Changeset 1009

Show
Ignore:
Timestamp:
04/23/08 07:13:49 (13 years ago)
Author:
ppalmers
Message:

fiddle around with the argument parsing to ease the reuse by other firmware loaders

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/support/firmware/bridgeco-downloader.cpp

    r962 r1009  
    6060    // arg parsing 
    6161    argp_parse (argp, argc, argv, 0, 0, args); 
     62 
     63    if (args->nargs < 2) { 
     64        printDeviceList(); 
     65        exit(0); 
     66    } 
    6267 
    6368    errno = 0; 
  • trunk/libffado/support/firmware/downloader.cpp

    r962 r1009  
    3737DECLARE_GLOBAL_DEBUG_MODULE; 
    3838 
    39 static char args_doc[] = "GUID OPERATION"; 
     39static char args_doc[] = "OPERATION [ARGUMENTS]"; 
    4040static struct argp _argp = { options, parse_opt, args_doc, doc };  
    4141struct argp* argp = &_argp; 
     
    7070        } 
    7171        break; 
     72    case 'g': 
     73        errno = 0; 
     74        arguments->guid = strtoll(arg, &tail, 0); 
     75        if (errno) { 
     76            debugError("argument parsing failed: %s\n", 
     77                       strerror(errno)); 
     78            return errno; 
     79        } 
     80        break; 
    7281    case 'f': 
    7382        arguments->force = 1; 
     
    7786        break; 
    7887    case ARGP_KEY_ARG: 
    79         if (state->arg_num >= 3) { 
     88        if (state->arg_num >= MAX_NB_ARGS) { 
    8089            // Too many arguments. 
    8190            argp_usage (state); 
    8291        } 
     92         
    8393        arguments->args[state->arg_num] = arg; 
     94        arguments->nargs = state->arg_num; 
    8495        break; 
    8596    case ARGP_KEY_END: 
    86         if (state->arg_num < 2) { 
    87             printDeviceList(); 
    88             exit(0); 
    89         } 
     97        arguments->nargs = state->arg_num; 
    9098        break; 
    9199    default: 
     
    99107{ 
    100108    Ieee1394Service service; 
     109    // switch off all messages since they mess up the list 
     110    service.setVerboseLevel(0); 
    101111    if ( !service.initialize( args->port ) ) { 
    102112        cerr << "Could not initialize IEEE 1394 service" << endl; 
  • trunk/libffado/support/firmware/downloader.h

    r962 r1009  
    2626 
    2727#include <argp.h> 
     28#include <inttypes.h> 
     29 
     30#define MAX_NB_ARGS 5 
    2831 
    2932/* ------------------------------------- */ 
     
    3538struct arguments 
    3639{ 
    37     char* args[3]; 
     40    char* args[MAX_NB_ARGS]; 
     41    int   nargs; 
    3842    short verbose; 
    3943    int   port; 
    4044    int   force; 
    4145    int   no_bootloader_restart; 
     46    uint64_t guid; 
    4247}; 
    4348