Changeset 2057

Show
Ignore:
Timestamp:
11/16/03 02:22:51 (11 years ago)
Author:
mds
Message:

make do_a_print() table-driven

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/prog/sensors/main.c

    r2039 r2057  
    287287} 
    288288 
     289struct match { 
     290        const char * prefix; 
     291        void (*fn) (const sensors_chip_name *name); 
     292}; 
     293 
     294struct match matches[] = { 
     295        { "ds1621", print_ds1621 }, 
     296        { "lm75", print_lm75 }, 
     297        { "adm1021", print_adm1021 }, 
     298        { "max1617", print_adm1021 }, 
     299        { "max1617a", print_adm1021 }, 
     300        { "thmc10", print_adm1021 }, 
     301        { "lm84", print_adm1021 }, 
     302        { "gl523", print_adm1021 }, 
     303        { "adm1023", print_adm1021 }, 
     304        { "mc1066", print_adm1021 }, 
     305        { "adm9240", print_adm9240 }, 
     306        { "ds1780", print_adm9240 }, 
     307        { "lm81", print_adm9240 }, 
     308        { "lm78", print_lm78 }, 
     309        { "lm78-j", print_lm78 }, 
     310        { "lm79", print_lm78 }, 
     311        { "mtp008", print_mtp008 }, 
     312        { "sis5595", print_sis5595 }, 
     313        { "via686a", print_via686a }, 
     314        { "lm80", print_lm80 }, 
     315        { "lm85", print_lm85 }, 
     316        { "lm85b", print_lm85 }, 
     317        { "lm85c", print_lm85 }, 
     318        { "adm1027", print_lm85 }, 
     319        { "adt7463", print_lm85 }, 
     320        { "emc6d100", print_lm85 }, 
     321        { "lm87", print_lm87 }, 
     322        { "gl518sm", print_gl518 }, 
     323        { "adm1025", print_adm1025 }, 
     324        { "adm1024", print_adm1024 }, 
     325        { "w83781d", print_w83781d }, 
     326        { "w83782d", print_w83781d }, 
     327        { "w83783d", print_w83781d }, 
     328        { "w83627hf", print_w83781d }, 
     329        { "w83627thf", print_w83781d }, 
     330        { "w83697hf", print_w83781d }, 
     331        { "w83791d", print_w83781d }, 
     332        { "as99127f", print_w83781d }, 
     333        { "maxilife", print_maxilife }, 
     334        { "maxilife-cg", print_maxilife }, 
     335        { "maxilife-co", print_maxilife }, 
     336        { "maxilife-as", print_maxilife }, 
     337        { "maxilife-nba", print_maxilife }, 
     338        { "it87", print_it87 }, 
     339        { "ddcmon", print_ddcmon }, 
     340        { "eeprom", print_eeprom }, 
     341        { "fscpos", print_fscpos }, 
     342        { "fscscy", print_fscscy }, 
     343        { "fscher", print_fscher }, 
     344        { "pcf8591", print_pcf8591 }, 
     345        { "vt1211", print_vt1211 }, 
     346        { "smsc47m1", print_smsc47m1 }, 
     347        { "lm92", print_lm92 }, 
     348        { "vt8231", print_vt8231 }, 
     349        { "bmc", print_bmc }, 
     350        { "adm1026", print_adm1026 }, 
     351        { "lm83", print_lm83 }, 
     352        { "lm90", print_lm90 }, 
     353        { "adm1032", print_lm90 }, 
     354        { "xeontemp", print_xeontemp }, 
     355        { "max6650", print_max6650 }, 
     356        { NULL, NULL } 
     357}; 
     358 
    289359void do_a_print(sensors_chip_name name) 
    290360{ 
    291361  const char *algo,*adap; 
     362  struct match *m; 
    292363 
    293364  printf("%s\n",sprintf_chip_name(name)); 
     
    302373  if (do_unknown) 
    303374    print_unknown_chip(&name); 
    304   else if (!strcmp(name.prefix,"ds1621")) 
    305     print_ds1621(&name); 
    306   else if (!strcmp(name.prefix,"lm75")) 
    307     print_lm75(&name); 
    308   else if (!strcmp(name.prefix,"adm1021") || !strcmp(name.prefix,"max1617") || 
    309            !strcmp(name.prefix,"max1617a") || !strcmp(name.prefix, "thmc10") || 
    310            !strcmp(name.prefix,"lm84") || !strcmp(name.prefix, "gl523") || 
    311            !strcmp(name.prefix, "adm1023") || !strcmp(name.prefix, "mc1066")) 
    312     print_adm1021(&name); 
    313   else if (!strcmp(name.prefix,"adm9240") || 
    314            !strcmp(name.prefix,"ds1780") || 
    315            !strcmp(name.prefix,"lm81")) 
    316     print_adm9240(&name); 
    317   else if (!strcmp(name.prefix,"lm78") || !strcmp(name.prefix,"lm78-j") || 
    318            !strcmp(name.prefix,"lm79")) 
    319     print_lm78(&name); 
    320   else if (!strcmp(name.prefix,"mtp008")) 
    321     print_mtp008(&name); 
    322   else if (!strcmp(name.prefix,"sis5595")) 
    323     print_sis5595(&name); 
    324   else if (!strcmp(name.prefix,"via686a")) 
    325     print_via686a(&name); 
    326   else if (!strcmp(name.prefix,"lm80")) 
    327     print_lm80(&name); 
    328   else if (!strcmp(name.prefix,"lm85")  || 
    329            !strcmp(name.prefix,"lm85b") || 
    330            !strcmp(name.prefix,"lm85c") || 
    331            !strcmp(name.prefix,"adm1027") || 
    332            !strcmp(name.prefix,"adt7463") || 
    333            !strcmp(name.prefix,"emc6d100") ) 
    334     print_lm85(&name); 
    335   else if (!strcmp(name.prefix,"lm87")) 
    336     print_lm87(&name); 
    337   else if (!strcmp(name.prefix,"gl518sm")) 
    338     print_gl518(&name); 
    339   else if (!strcmp(name.prefix,"adm1025")) 
    340     print_adm1025(&name); 
    341   else if (!strcmp(name.prefix,"adm1024")) 
    342     print_adm1024(&name); 
    343   else if ((!strcmp(name.prefix,"w83781d")) || 
    344            (!strcmp(name.prefix,"w83782d")) || 
    345            (!strcmp(name.prefix,"w83783s")) || 
    346            (!strcmp(name.prefix,"w83627hf")) || 
    347            (!strcmp(name.prefix,"w83627thf")) || 
    348            (!strcmp(name.prefix,"w83697hf")) || 
    349            (!strcmp(name.prefix,"w83791d")) || 
    350            (!strcmp(name.prefix,"as99127f"))) 
    351     print_w83781d(&name); 
    352   else if (!strncmp(name.prefix,"maxilife-", 9)) 
    353     print_maxilife(&name); 
    354   else if (!strcmp(name.prefix,"it87")) 
    355     print_it87(&name); 
    356   else if (!strcmp(name.prefix,"ddcmon")) 
    357     print_ddcmon(&name); 
    358   else if (!strcmp(name.prefix,"eeprom")) 
    359     print_eeprom(&name); 
    360   else if (!strcmp(name.prefix,"fscpos")) 
    361     print_fscpos(&name); 
    362   else if (!strcmp(name.prefix,"fscscy")) 
    363     print_fscscy(&name); 
    364   else if (!strcmp(name.prefix,"fscher")) 
    365     print_fscher(&name); 
    366   else if (!strcmp(name.prefix,"pcf8591")) 
    367     print_pcf8591(&name); 
    368   else if (!strcmp(name.prefix,"vt1211")) 
    369     print_vt1211(&name); 
    370   else if (!strcmp(name.prefix,"smsc47m1")) 
    371     print_smsc47m1(&name); 
    372   else if (!strcmp(name.prefix,"lm92")) 
    373     print_lm92(&name); 
    374   else if (!strcmp(name.prefix,"vt8231")) 
    375     print_vt8231(&name); 
    376   else if (!strcmp(name.prefix,"bmc")) 
    377     print_bmc(&name); 
    378   else if (!strcmp(name.prefix,"adm1026")) 
    379     print_adm1026(&name); 
    380   else if (!strcmp(name.prefix,"lm83")) 
    381     print_lm83(&name); 
    382   else if (!strcmp(name.prefix,"lm90") 
    383         || !strcmp(name.prefix,"adm1032")) 
    384     print_lm90(&name); 
    385   else if (!strcmp(name.prefix,"xeontemp")) 
    386     print_xeontemp(&name); 
    387   else if (!strcmp(name.prefix,"max6650")) 
    388     print_max6650(&name); 
    389   else 
    390     print_unknown_chip(&name); 
     375  else { 
     376    for(m = matches; m->prefix != NULL; m++) { 
     377        if(!strcmp(name.prefix, m->prefix)) { 
     378            m->fn(&name); 
     379            break; 
     380        } 
     381    } 
     382    if(m == NULL) 
     383        print_unknown_chip(&name); 
     384  } 
    391385  printf("\n"); 
    392386}