Changeset 0e3df7e for app/src/common


Ignore:
Timestamp:
05/08/08 15:42:37 (17 years ago)
Author:
obrebski <obrebski@…>
Branches:
master, help
Children:
40358d2
Parents:
adb4c8d
git-author:
obrebski <obrebski@…> (05/08/08 15:42:37)
git-committer:
obrebski <obrebski@…> (05/08/08 15:42:37)
Message:

process_seg() naprawione, 'lem -s kor -I kor' nie zawiesza sie

git-svn-id: svn://atos.wmid.amu.edu.pl/utt@46 e293616e-ec6a-49c2-aa92-f4a8b91c5d16

Location:
app/src/common
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • app/src/common/common.cc

    r25ae32e r0e3df7e  
    1515bool one_field=false; 
    1616bool one_line=false; 
    17 char output_field_prefix[32]; 
    18 char input_field_prefix[32]; 
     17char output_field_prefix[FIELD_PREFIX_MAXLEN]; 
     18char input_field_prefix[FIELD_PREFIX_MAXLEN]; 
    1919 
    2020extern int argc; 
     
    3232} 
    3333 
    34  
    35  
    36  
    37 /* 
    38 parameters: 
    39         -name - field name, long or short 
    40         +prefix - field name with ':' appended if long name 
    41 return value: 
    42         1 if correct field name, 0 otherwise 
    43 examples: 
    44 name    prefix  r.v. 
    45 lem     lem:    1 
    46 @       @       1 
    47 ::      'undef' 0 
    48 a,b     'undef' 0 
    49 */ 
    50 int fieldprefix(char *name, char *prefix) 
    51 { 
    52   if (ispunct(name[0]) && name[1]=='\0') // correct short name 
    53   { 
    54     strcpy(prefix, name); return 1; 
    55   } 
    56  
    57   int i=0; 
    58   while(name[i]!='\0' && isalnum(name[i])) ++i; 
    59    
    60   if(name[i]=='\0' && i>0) // correct long name 
    61   { 
    62     sprintf(prefix,"%s:",name); return 1; 
    63   } 
    64  
    65   // incorrect 
    66   return 0; 
    67 } 
    6834 
    6935 
  • app/src/common/common.h

    ra7b254c r0e3df7e  
    2424#define MAXAUX 16 
    2525#define FIELD_SEP " \t\n" 
     26#define FIELD_PREFIX_MAXLEN 32 
    2627 
    2728 
     
    6768extern int expand_path(char* inpath, char* outpath); 
    6869 
    69 extern int fieldprefix(char *name, char *prefix); 
    70  
    71  
    7270/************************************************** 
    7371 * problems with casing                           */ 
    7472// sprawdzenie wielkosci liter 
    75 // warto¶æ zwracana: 
    76 // 0 - wszystkie ma³e litery 
     73// warto¶Ê zwracana: 
     74// 0 - wszystkie ma³e litery 
    7775// 1 - pierwsza wielka, reszta male 
    7876// 2 - wszystkie wielkie 
     
    105103 
    106104// przepisuje s do d 
    107 // nadajac wielko¶æ liter zgodnie z warto¶ci± casing 
    108 // casing - warto¶æ zwracana przez casing() 
    109 // je¶li casing==3 przepisuje bez zmian (za ma³o informacji) 
     105// nadajac wielko¶Ê liter zgodnie z warto¶ci± casing 
     106// casing - warto¶Ê zwracana przez casing() 
     107// je¶li casing==3 przepisuje bez zmian (za ma³o informacji) 
    110108inline void restorecasing(char *s, char *d, int casing) 
    111109{ 
     
    186184 
    187185 
     186/* 
     187parameters: 
     188        -name - field name, long or short 
     189        +prefix - field name with ':' appended if long name 
     190return value: 
     191        1 if correct field name, 0 otherwise 
     192examples: 
     193name    prefix  r.v. 
     194lem     lem:    1 
     195@       @       1 
     196::      'undef' 0 
     197a,b     'undef' 0 
     198*/ 
     199inline 
     200int fieldprefix(char *name, char *prefix) 
     201{ 
     202  if (ispunct(name[0]) && name[1]=='\0') // correct short name 
     203  { 
     204    strcpy(prefix, name); return 1; 
     205  } 
     206 
     207  int i=0; 
     208  while(name[i]!='\0' && isalnum(name[i])) ++i; 
     209   
     210  if(name[i]=='\0' && i>0) // correct long name 
     211  { 
     212    sprintf(prefix,"%s:",name); return 1; 
     213  } 
     214 
     215  // incorrect 
     216  return 0; 
     217} 
     218 
    188219inline 
    189220bool process_seg(char* seg, gengetopt_args_info& args) 
    190221{ 
    191222  char buf[256]; 
     223  char pref[FIELD_PREFIX_MAXLEN]; 
    192224  bool ret = !args.process_given; 
    193225  if(args.process_given) 
     
    205237 
    206238  for(int i=0; i<args.select_given; ++i) 
    207     if(! getfield(seg,args.select_arg[i],buf)) 
    208       return false; 
     239    { 
     240      fieldprefix(args.select_arg[i],pref); // !!! ŁATKA - ZOPTYMALIZOWAĆ !!! 
     241      if(! getfield(seg,pref,buf)) 
     242        return false; 
     243    } 
    209244  for(int i=0; i<args.ignore_given; ++i) 
    210     if(getfield(seg,args.ignore_arg[i],buf)) 
    211       return false; 
     245    { 
     246      fieldprefix(args.ignore_arg[i],pref);  // !!! ŁATKA - ZOPTYMALIZOWAĆ !!! 
     247      if(getfield(seg,pref,buf)) 
     248        return false; 
     249    } 
    212250   
    213251  if(args.input_field_given & !getfield(seg,input_field_prefix,buf)) 
Note: See TracChangeset for help on using the changeset viewer.