Hozzászólások
-
SzerzőBejegyzés
-
a másik: összenézem 2.6.8-as kernellel is, ahogy néztem nincs túl sok eltérés a kettõ közt, akár mehetne is jól.
[align=right][snapback]90526[/snapback][/align]Igazából csak egyszer kell teljesen lefordítani a .pot fájlokat, utána már a gettext fogja kikeresni a változásokat. A belefordításos módszer esetén a hivatalos foltot kellene kézzel „átnyálazni” minden egyes verzióváltás esetén. Sztm nagy elõny, hogy a foltom nem tartalmaz verzióspecifikus részt, így tetszõleges kernellel mindíg mûködõképes marad.
A kernel üzeneteknél úgy oldottam meg a kernel karbantartás problémáját, hogy minden egyes fordítandó üzenet kap egy N_ elõtagot:
printk („Szövegn”);
=>
printk (N_(„Szövegn”));Ezeket az xgettext szépen kigyûjti egy .pot fájlba. Egy másik, általam készített progi (translate.cc) beolvassa a megfelelõ .po fájlt (pl. hu.po), és a .c fájlokban kicseréli a N_ kezdetû sztringeket a lefordítottra, majd elment a fájlokat .lang.c néven. Mindezt fordítási idõben.
Nem lettek kiadva a következõ utasítások (vagy nem lett feltéve az elõzõ kernel forráskódja):
# ln -s /usr/src/linux/include/asm/ /usr/include/asm
# ln -s /usr/src/linux/include/linux/ /usr/include/linux
# ln -s /usr/src/linux/include/scsi/ /usr/include/scsiElkészült az elsõ változat, természetesen csak tesztként. Sikerült úgy megoldanom, hogy ne zavarjon be a fordítás sehova se. Bár még kell rajta módosítani, azért használható.
Kb. 0,001%-a van lefordítva, a lényeg, hogy megjelenik 1-2 magyar nyelvû szöveg. Ez egy olyan technikai elõzetes. Jelenleg 2.6.7-hez készült el, tartalmazza a grsecurity, LIDS, RSBAC foltokat.
Aki csak tudja, legyen oly kedves tesztelni. Kisebb hibák vannak még benne, de több szem többet lát.
http://gabaman.fantom.hu/
(a szerver nem vmi jó, sorry)Nekem könnyû volt megtalálni az infót. Belenéztem a kernel forrásába, nevezetesen a pcspkr.c-be. Ott kiderült, hogy a speaker-t egy sound event (EV_SND) segítésgével lehet elérni kívülrõl. Vmi ilyesmit írtam be a google-ba: „kernel speaker ev_snd”.
Két megoldás is van (NxM-es mátrix):
1. Lineáris:
foglalás:
Code:Típus* ptr = (Típus*)malloc (sizeof(Típus)*N*M);elérés (n és m):
Code:ptr[n*M+m];törlés:
Code:free(ptr);2. 2D vektor:
foglalás:Code:Típus** ptr = (Típus**) malloc (N*sizeof(Típus*));
for (i=0;i<N;i++)
ptr[i] = (Típus*)malloc(M*sizeof(Típus));elérés (n és m):
Code:ptr[n][m]törlés:
Code:for (i=0;i<N;i++)
free (ptr[i]);
free(ptr);A kernel tartalmazza a PC speaker modult (pcspkr), amit ioctl event segítségével lehet elérni (/dev/input/eventX).
Egy hasonló példa (event átirányítás, neked kiváltani kell):
http://lkml.org/lkml/2003/9/11/8A Pinglin jó példa, hogy mit és hogyan nem szabad megvalósítani. Hiába van lefordítva az egyik 2.4-es kernel, szinte semmit se lehet újra felhasználni belõle.
Van pár ötletem, hogy hogyan lehet normálisan megoldani a kernel fordítását, de még finomítani kell õket. Alapvetõen nem szabad „belefordítani” a kernelbe, mert egy idõ után nagyon átláthatatlan lesz az egész. Jelenleg .pot fájlok (gettext) létrehozásán dolgozom, és a CML2 nyelvû Kconfig fájlokból már van teszt változat. A kernel forrásában levõ üzeneteket is le lehet fordítani a .pot fájlok segítségével, de a fordítást vissza kell majd helyettesíteni.
Amint használható formába öntöm a módosításaimat, felteszem vhová a Netre. Szerintem még nem érdemes elkezdeni fordíthatni, elõbb inkább a módszereket kellene megvitatni.
Hogy hamvában holt dolog lenne az egész? Nekem meg lenne az elsõ – ha nem is magas színvonalú – kernel foltom, a fordítás biztosan összekötne pár emberkét, mások meg végre önmaguktól le tudnának fordítani egy kernelt. Nem is tudom, talán bele se kezdjünk.
Tehát Gege moderátor lesz. Yesszus Pepi. :sarcasm:
Nekem az kene, hogy a teljes sort a new line karakterig szedje ki… Van erre opcio az fcanf-hez?
[align=right][snapback]89559[/snapback][/align]Nincs, de nincs is értelme. Az fgets() függvényt találták ki erre. Ha egyenként akarod beolvasni, akkor a „%s” helyett használhatsz „%s,”-t is, bár így az utolsó problémásan lesz beolvasva. Persze ha csak négy adat van egy sorban, akkor a „%s,%s,%s,%s” a megfelelõ minta.
Mit értesz sztring alatt? Biztosan nem azt, mint a C nyelvet létrehozók. Az fscanf (fp, „%s”, str); valóban csak a szóközig olvas, de a %s nem az idézõjelek („) közötti részt jelöli, hanem a beolvasás adatformátumát. Egyébként a szöveges fájlban nincsenek szringek, mert az egész egy karakterhalmaz. Ha az idézõjelek közötti részt akarod beolvasni, akkor az fgets() függvényt (esetleg az fgetc()+while is szóba jöhet) használd, majd ki kell szedni belõle a két idézõjel közötti részt.
Ha esetleg komplex beolvasás kell, akkor arra ott a yacc (flex).
-
SzerzőBejegyzés