Changeset 428 for WizardsToolkit/trunk

Show
Ignore:
Timestamp:
10/21/09 12:50:29 (4 weeks ago)
Author:
cristy
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • WizardsToolkit/trunk/wizard/log.c

    r415 r428  
    124124  WizardBooleanType 
    125125    append, 
     126    exempt, 
    126127    stealth; 
    127128 
     
    149150  }; 
    150151 
    151 static const char 
    152   *LogMap = (const char *) 
    153     "<?xml version=\"1.0\"?>" 
    154     "<logmap>" 
    155     "  <log events=\"None\" />" 
    156     "  <log output=\"console\" />" 
    157     "  <log filename=\"Wizard-%d.log\" />" 
    158     "  <log format=\"%t %r %u %v %d %c[%p]: %m/%f/%l/%d\n  %e\" />" 
    159     "</logmap>"; 
     152typedef struct _LogMapInfo 
     153{ 
     154  const LogEventType 
     155    event_mask; 
     156 
     157  const LogHandlerType 
     158    handler_mask; 
     159 
     160  const char 
     161    *filename, 
     162    *format; 
     163} LogMapInfo; 
    160164 
    161165/* 
    162166  Static declarations. 
    163167*/ 
     168static const LogMapInfo 
     169  LogMap[] = 
     170  { 
     171    { NoEvents, ConsoleHandler, "Magick-%d.log", 
     172      "%t %r %u %v %d %c[%p]: %m/%f/%l/%d\n  %e" } 
     173  }; 
     174 
    164175static char 
    165176  log_name[MaxTextExtent] = "Wizard"; 
     
    258269      p->file=(FILE *) NULL; 
    259270    } 
    260   if (p->filename != (char *) NULL) 
    261     p->filename=DestroyString(p->filename); 
    262   if (p->path != (char *) NULL) 
    263     p->path=DestroyString(p->path); 
    264   if (p->format != (char *) NULL) 
    265     p->format=DestroyString(p->format); 
     271  if (p->exempt == WizardFalse) 
     272    { 
     273      if (p->format != (char *) NULL) 
     274        p->format=DestroyString(p->format); 
     275      if (p->filename != (char *) NULL) 
     276        p->filename=DestroyString(p->filename); 
     277      if (p->path != (char *) NULL) 
     278        p->path=DestroyString(p->path); 
     279    } 
    266280  if (p->timer != (TimerInfo *) NULL) 
    267281    p->timer=DestroyTimerInfo(p->timer); 
     
    13751389        log_info->path=ConstantString(filename); 
    13761390        log_info->timer=AcquireTimerInfo(); 
     1391        log_info->exempt=WizardFalse; 
    13771392        log_info->signature=WizardSignature; 
    13781393        continue; 
     
    15071522  ExceptionInfo *exception) 
    15081523{ 
    1509 #if defined(WIZARDSTOOLKIT_EMBEDDABLE_SUPPORT) 
    1510   return(LoadLogList(LogMap,"built-in",0,exception)); 
    1511 #else 
    15121524  const StringInfo 
    15131525    *option; 
     
    15191531    status; 
    15201532 
     1533  register long 
     1534    i; 
     1535 
     1536  /* 
     1537    Load built-in log map. 
     1538  */ 
    15211539  status=WizardFalse; 
     1540  if (log_list == (LinkedListInfo *) NULL) 
     1541    { 
     1542      log_list=NewLinkedList(0); 
     1543      if (log_list == (LinkedListInfo *) NULL) 
     1544        { 
     1545          ThrowFileException(exception,FileError,filename); 
     1546          return(WizardFalse); 
     1547        } 
     1548    } 
     1549  for (i=0; i < (long) (sizeof(LogMap)/sizeof(*LogMap)); i++) 
     1550  { 
     1551    LogInfo 
     1552      *log_info; 
     1553 
     1554    register const LogMapInfo 
     1555      *p; 
     1556 
     1557    p=LogMap+i; 
     1558    log_info=(LogInfo *) AcquireWizardMemory(sizeof(*log_info)); 
     1559    if (log_info == (LogInfo *) NULL) 
     1560      { 
     1561        (void) ThrowWizardException(exception,GetWizardModule(),ResourceError, 
     1562          "memory allocation failed `%s'",log_info->name); 
     1563        continue; 
     1564      } 
     1565    (void) ResetWizardMemory(log_info,0,sizeof(*log_info)); 
     1566    log_info->path=(char *) "[built-in]"; 
     1567    log_info->timer=AcquireTimerInfo(); 
     1568    log_info->event_mask=p->event_mask; 
     1569    log_info->handler_mask=p->handler_mask; 
     1570    log_info->filename=(char *) p->filename; 
     1571    log_info->format=(char *) p->format; 
     1572    log_info->exempt=WizardTrue; 
     1573    log_info->signature=WizardSignature; 
     1574    status=AppendValueToLinkedList(log_list,log_info); 
     1575    if (status == WizardFalse) 
     1576      (void) ThrowWizardException(exception,GetWizardModule(),ResourceError, 
     1577        "memory allocation failed `%s'",log_info->name); 
     1578  } 
     1579  /* 
     1580    Load external log map. 
     1581  */ 
    15221582  options=GetConfigureOptions(filename,exception); 
    15231583  option=(const StringInfo *) GetNextValueInLinkedList(options); 
     
    15291589  } 
    15301590  options=DestroyConfigureOptions(options); 
    1531   if ((log_list == (LinkedListInfo *) NULL) || 
    1532       (IsLinkedListEmpty(log_list) != WizardFalse)) 
    1533     status|=LoadLogList(LogMap,"built-in",0,exception); 
    15341591  return(status != 0 ? WizardTrue : WizardFalse); 
    1535 #endif 
    15361592} 
    15371593