Ignore:
Timestamp:
05/08/08 15:42:37 (16 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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.