|
|||||||||||||||||||||||||||
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/
|
||||||||||||||
|
||||||||||||||