SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [LOCALE] Problemer med /bin/sort



On Thu, Jun 29, 2000 at 14:10:19 +0200, Byrial Jensen wrote:
> On Thu, Jun 29, 2000 at 11:52:24 +0200, Jacob Sparre Andersen wrote:
> > Det lader til at der er nogen der har problemer med at
> > forstå, hvordan man sorterer ord i alfabetisk orden på
> > dansk:
> > 
> > Hvor går man ind og retter? Er det i sort eller i glibc?
> 
> Jeg har ikke prøvet, men så vidt jeg forstår det, gør man følgende:
> 
> 1) skriver en god en locale-definition for LC_COLLATE. Se locale(5).
>    (Der må være noget man kan rette i i kildeteksten til glibc).
> 2) oversætter den til noget binært snask med programmet localedef
> 3) placererer det i (f.eks.) /usr/share/locale/da_DK/LC_COLLATE

Hov, en lille test afslører at localedefinitionen hos mig er god
nok, men at det er sort(1) som ikke bruger locale.

$ echo z æ ø å | xargs -n 1 | /bin/sort
z
å
æ
ø
$ cat sort.c
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

#define LINJER 10
#define LINLEN 50
char linjer[LINJER][LINLEN];

int main()
{
  int i, j;

  setlocale (LC_COLLATE, "");
  for (i = 0; i < LINJER ; ++i)
  {
    if (! fgets (linjer[i], LINLEN, stdin))
      break;
    linjer[i][LINLEN - 2] = '\n';
    linjer[i][LINLEN - 1] = 0;
  }
  qsort (linjer, i, LINLEN,
	 (int (*)(const void *, const void *)) strcoll);
  for (j = 0; j < i ; ++j)
    fputs (linjer[j], stdout);
  return 0;
}
$ gcc sort.c -o sort
$ echo z æ ø å | xargs -n 1 | ./sort
z
æ
ø
å
$ echo båd baad baade både | xargs -n 1 | ./sort
båd
baad
både
baade
$ 

-- 
Byrial
http://home.worldonline.dk/~byrial/


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 20:52
Denne side vedligeholdes af MHonArc .