Changeset 13 for trunk/txlib/txparse.c

Show
Ignore:
Timestamp:
05/13/06 20:33:09 (3 years ago)
Author:
jvw
Message:

Logfile size-limit and automatic logfile rotation, very useful for crash tracing

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/txlib/txparse.c

    r11 r13  
    249249 
    250250/*****************************************************************************/ 
     251// Get option value num/string, with bytes/kilo/mega/giga modifier and default 
     252/*****************************************************************************/ 
     253ULONG TxaOptBkmg                                // RET   number value in bytes 
     254( 
     255   TXHANDLE            txh,                     // IN    TXA handle 
     256   char                option,                  // IN    option character 
     257   ULONG               def,                     // IN    default value 
     258   BYTE                mod                      // IN    b,kb,mb,gb modifier 
     259) 
     260{ 
     261   ULONG               rc = 0;                  // function return 
     262   BYTE                unit = TXA_DFUNIT; 
     263   TXA_OPTION         *opt;                     // option pointer 
     264 
     265   ENTER(); 
     266   TRACES(("Option: '%c' default: %8.8lx mod:%2.2hx = '%c'\n", 
     267            option, def, mod, mod)); 
     268 
     269   if ((opt = TxaOptValue( option)) != NULL)    // get the option details 
     270   { 
     271      switch (opt->type) 
     272      { 
     273         case TXA_STRING: 
     274            rc   = TxaParseNumber( opt->value.string, TX_RADIX_STD_CLASS, &unit); 
     275         case TXA_NO_VAL: 
     276            rc   = def; 
     277            break; 
     278 
     279         default:                               // convert, default is MiB! 
     280            rc   = opt->value.number; 
     281            unit = opt->unit; 
     282            break; 
     283      } 
     284   } 
     285   if (unit == TXA_DFUNIT) 
     286   { 
     287      unit = mod; 
     288   } 
     289   switch (tolower(unit)) 
     290   { 
     291      case 'g': 
     292         if (rc >= 4) 
     293         { 
     294            rc = 0xffffffff; 
     295            break; 
     296         } 
     297         else 
     298         { 
     299            rc *= 1024;                         // Giga 
     300         } 
     301      case 'm': rc *= 1024;                     // Mega 
     302      case 'k': rc *= 1024;                     // Kilo 
     303      default:  break;                          // Bytes, OK 
     304   } 
     305   RETURN (rc); 
     306}                                               // end 'TxaParseBkmgNumber' 
     307/*---------------------------------------------------------------------------*/ 
     308 
     309 
     310/*****************************************************************************/ 
    251311// Read one item (option or argument) and store it in the txa element 
    252312/*****************************************************************************/ 
     
    680740 
    681741/*****************************************************************************/ 
     742// Get option value num/string, with bytes/kilo/mega/giga modifier and default 
     743/*****************************************************************************/ 
     744ULONG TxaOptionBkmg                             // RET   number value in bytes 
     745( 
     746   TXHANDLE            txh,                     // IN    TXA handle 
     747   char                option,                  // IN    option character 
     748   ULONG               def,                     // IN    default value 
     749   BYTE                mod                      // IN    b,kb,mb,gb modifier 
     750) 
     751{ 
     752   ULONG               rc = 0;                  // function return 
     753   BYTE                unit = TXA_DFUNIT; 
     754   TXA_OPTION         *opt;                     // option pointer 
     755 
     756   ENTER(); 
     757   TRACES(("Option: '%c' default: %8.8lx mod:%2.2hx = '%c'\n", 
     758            option, def, mod, mod)); 
     759 
     760   if ((opt = TxaOptValue( option)) != NULL)    // get the option details 
     761   { 
     762      switch (opt->type) 
     763      { 
     764         case TXA_STRING: 
     765            rc   = TxaParseNumber( opt->value.string, TX_RADIX_STD_CLASS, &unit); 
     766         case TXA_NO_VAL: 
     767            rc   = def; 
     768            break; 
     769 
     770         default:                               // convert, default is MiB! 
     771            rc   = opt->value.number; 
     772            unit = opt->unit; 
     773            break; 
     774      } 
     775   } 
     776   if (unit == TXA_DFUNIT) 
     777   { 
     778      unit = mod; 
     779   } 
     780   switch (tolower(unit)) 
     781   { 
     782      case 'g': rc *= 1024;                     // Giga 
     783      case 'm': rc *= 1024;                     // Mega 
     784      case 'k': rc *= 1024;                     // Kilo 
     785      default:  break;                          // Bytes, OK 
     786   } 
     787   RETURN (rc); 
     788}                                               // end 'TxaOptionBkmg' 
     789/*---------------------------------------------------------------------------*/ 
     790 
     791 
     792/*****************************************************************************/ 
    682793// Get reference to specified argument-string 
    683794/*****************************************************************************/