Index: app/src/common/common.cc
===================================================================
--- app/src/common/common.cc	(revision 25ae32e4c2354e0ed6756bbe1de83f39cd814652)
+++ app/src/common/common.cc	(revision 0e3df7e06ad71d2e763b970d4420a4374e473cdd)
@@ -15,6 +15,6 @@
 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;
@@ -32,38 +32,4 @@
 }
 
-
-
-
-/*
-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;
-}
 
 
Index: app/src/common/common.h
===================================================================
--- app/src/common/common.h	(revision a7b254ce77c711b3e446417865b7d466028dfa62)
+++ app/src/common/common.h	(revision 0e3df7e06ad71d2e763b970d4420a4374e473cdd)
@@ -24,4 +24,5 @@
 #define MAXAUX 16
 #define FIELD_SEP " \t\n"
+#define FIELD_PREFIX_MAXLEN 32
 
 
@@ -67,12 +68,9 @@
 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 ma³e litery
+// wartoÂ¶ÃŠ zwracana:
+// 0 - wszystkie maÂ³e litery
 // 1 - pierwsza wielka, reszta male
 // 2 - wszystkie wielkie
@@ -105,7 +103,7 @@
 
 // przepisuje s do d
-// nadajac wielko¶æ liter zgodnie z warto¶ci± casing
-// casing - warto¶æ zwracana przez casing()
-// je¶li casing==3 przepisuje bez zmian (za ma³o 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)
 {
@@ -186,8 +184,42 @@
 
 
+/*
+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)
@@ -205,9 +237,15 @@
 
   for(int i=0; i<args.select_given; ++i)
-    if(! getfield(seg,args.select_arg[i],buf))
-      return false;
+    {
+      fieldprefix(args.select_arg[i],pref); // !!! ÅATKA - ZOPTYMALIZOWAÄ !!!
+      if(! getfield(seg,pref,buf))
+	return false;
+    }
   for(int i=0; i<args.ignore_given; ++i)
-    if(getfield(seg,args.ignore_arg[i],buf))
-      return false;
+    {
+      fieldprefix(args.ignore_arg[i],pref);  // !!! ÅATKA - ZOPTYMALIZOWAÄ !!!
+      if(getfield(seg,pref,buf))
+	return false;
+    }
   
   if(args.input_field_given & !getfield(seg,input_field_prefix,buf))
