From 0e3df7e06ad71d2e763b970d4420a4374e473cdd Mon Sep 17 00:00:00 2001 From: obrebski Date: Thu, 8 May 2008 13:42:37 +0000 Subject: [PATCH] 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 --- app/TODO | 5 +++- app/src/common/common.cc | 38 ++---------------------- app/src/common/common.h | 62 ++++++++++++++++++++++++++++++++-------- app/src/lem/main.cc | 1 + 4 files changed, 57 insertions(+), 49 deletions(-) diff --git a/app/TODO b/app/TODO index 5a2a021..7b96d73 100644 --- a/app/TODO +++ b/app/TODO @@ -14,5 +14,8 @@ WAZNE: * Zadania zwiazane z rozbudowa ser (src/ser/TODO). * Nowa funkcjonalność dla kot? con? - każde zdanie w nowym wierszu * opcja info w dgp powinna miec domyslna wartosc d lub h - +* podczas tworzenia dystrybucji pojawiaja sie komunikaty: +find: /home/to/work/utt/lang/dist/tarball/utt-0.9.2/share/utt/pl_PL.UTF-8/.svn: Nie ma takiego pliku ani katalogu +find: /home/to/work/utt/lang/dist/tarball/utt-0.9.2/share/utt/pl_PL.ISO-8859-2/.svn: Nie ma takiego pliku ani katalogu +* przyspieszyć process_seg() -> obliczanie prefiksów pól z opcji -s i -S raz na poczatku programu, a nie w kolko diff --git a/app/src/common/common.cc b/app/src/common/common.cc index 93c2a4f..fe697f3 100644 --- a/app/src/common/common.cc +++ b/app/src/common/common.cc @@ -14,8 +14,8 @@ FILE* failedf=stdout; bool copy_processed=0; bool one_field=false; bool one_line=false; -char output_field_prefix[32]; -char input_field_prefix[32]; +char output_field_prefix[FIELD_PREFIX_MAXLEN]; +char input_field_prefix[FIELD_PREFIX_MAXLEN]; extern int argc; extern char **argv; @@ -34,40 +34,6 @@ int expand_path(char* inpath, char* outpath) -/* -parameters: - -name - field name, long or short - +prefix - field name with ':' appended if long name -return value: - 1 if correct field name, 0 otherwise -examples: -name prefix r.v. -lem lem: 1 -@ @ 1 -:: 'undef' 0 -a,b 'undef' 0 -*/ -int fieldprefix(char *name, char *prefix) -{ - if (ispunct(name[0]) && name[1]=='\0') // correct short name - { - strcpy(prefix, name); return 1; - } - - int i=0; - while(name[i]!='\0' && isalnum(name[i])) ++i; - - if(name[i]=='\0' && i>0) // correct long name - { - sprintf(prefix,"%s:",name); return 1; - } - - // incorrect - return 0; -} - - - void set_program_name(char program_name[], char* argv0) { if (char* p_name = strrchr(argv0, '/')) diff --git a/app/src/common/common.h b/app/src/common/common.h index f7bc388..bad262a 100644 --- a/app/src/common/common.h +++ b/app/src/common/common.h @@ -23,6 +23,7 @@ #define INFIELD_SEP ':' #define MAXAUX 16 #define FIELD_SEP " \t\n" +#define FIELD_PREFIX_MAXLEN 32 // katalogi z plikami konfiguracyjnymi @@ -66,14 +67,11 @@ extern void process_config_files(gengetopt_args_info* args, char* argv0); extern int expand_path(char* inpath, char* outpath); -extern int fieldprefix(char *name, char *prefix); - - /************************************************** * problems with casing */ // sprawdzenie wielkosci liter -// warto zwracana: -// 0 - wszystkie mae litery +// warto¶æ zwracana: +// 0 - wszystkie ma³e litery // 1 - pierwsza wielka, reszta male // 2 - wszystkie wielkie // 3 - inne @@ -104,9 +102,9 @@ inline void tolowers(char* s, char* d) // przepisuje s do d -// nadajac wielko liter zgodnie z wartoci casing -// casing - warto zwracana przez casing() -// jeli casing==3 przepisuje bez zmian (za mao informacji) +// nadajac wielko¶æ liter zgodnie z warto¶ci± casing +// casing - warto¶æ zwracana przez casing() +// je¶li casing==3 przepisuje bez zmian (za ma³o informacji) inline void restorecasing(char *s, char *d, int casing) { switch(casing) @@ -185,10 +183,44 @@ inline int getfield(char* seg, const char* pref, char* val) } +/* +parameters: + -name - field name, long or short + +prefix - field name with ':' appended if long name +return value: + 1 if correct field name, 0 otherwise +examples: +name prefix r.v. +lem lem: 1 +@ @ 1 +:: 'undef' 0 +a,b 'undef' 0 +*/ +inline +int fieldprefix(char *name, char *prefix) +{ + if (ispunct(name[0]) && name[1]=='\0') // correct short name + { + strcpy(prefix, name); return 1; + } + + int i=0; + while(name[i]!='\0' && isalnum(name[i])) ++i; + + if(name[i]=='\0' && i>0) // correct long name + { + sprintf(prefix,"%s:",name); return 1; + } + + // incorrect + return 0; +} + inline bool process_seg(char* seg, gengetopt_args_info& args) { char buf[256]; + char pref[FIELD_PREFIX_MAXLEN]; bool ret = !args.process_given; if(args.process_given) { @@ -204,11 +236,17 @@ bool process_seg(char* seg, gengetopt_args_info& args) if(ret==false) return false; for(int i=0; iana(form, tab);