Bestanden uitwisselen tussen OS2 en Windows |
De lange namen van de vFAT schijven (Long File Names, LFNs) worden in twee of meer directory ingangen opgeslagen. Een ervan bevat een systematisch gegenereerde DOS naam in het 8.3 formaat: deze alias eindigt typisch op een trema-teken en een of meer cijfers (~1). VFAT gebruikt een extra directory ingang voor iedere 13 tekens van de lange bestandsnaam.
Zonder speciale vFAT drivers leest OS/2 de bestanden op FAT(16) schijven zoals DOS; dus in het DOS 8.3-formaat, waarbij lange namen afgekort worden tot hun alias:
Deze 8.3 alias presentatie geldt ook voor de vFAT schijven van een Win95/98 computer die onder OS/2 (en NT 3) via een NETBIOS netwerk benaderd worden. De SMB server van Windows 9x geeft aan niet Windows clients de 8.3 DOS namen door. Samba meldt zich daarom als Windows aan. OS/2 meldt zich aan als OS/2 en wordt door Windows behandeld als DOS.
Opvallend is ook dat de meeste 32 bits Windows programmamakers het 8.3 naamsysteem blijven gebruiken. Ook in de Windows registry vindt je regelmatig aliassen terug. Men heeft niet altijd vertrouwen in dit LFN alias systeem.
Zonder speciale OS/2 vFAT driver worden de bestanden op vFAT schijven onder OS/2 ook op dezelfde manier behandeld als een gewone DOS-toepassing zou doen. Als u het bestand onder OS/2 opent, bewerkt en daarna onder exact dezelfde naam en locatie opslaat, bent u een onder Windows 95 aangemaakte lange naam dus in principe niet kwijt. Maar als u het bestand - buiten het zicht van Windows 9x om - onder DOS of OS/2 (zonder vFAT driver die aliassen omzet in lange namen) naar een andere locatie verplaatst, verliest u de lange naam. Windows 9x kan in dat geval de voor de lange naam benodigde extra directory ingangen niet aanpassen.
Directories en bestanden op een FAT16 schijf worden onder OS/2 in de regel met hoofdletters weergegeven. Ook al heeft u ze onder Windows met kleine letters getypt. Onder de WPS is dit meteen zichtbaar. Sommige bestandsbeheerders (FileCommander/2, Windows Bestandsbeheer) laten kleine letters zien, maar het DIR commando onder de "plain" OS/2 prompt laat zien dat het voor OS/2 gewoon hoofdletters zijn.
Bij gebruik van de OS/2 vFAT driver (zie verderop) veranderen de meeste hoofdletters weer in kleine letters:
Dit geeft hetzelfde beeld als onder Windows 9x of Linux (FAT16 schijf gemount als vFAT).
Opvallend is dat Windows 95 de eerste letters van de in lange namen omgezette aliassen veelvuldig met een hoofdletter laat beginnen. Een "index.html" wordt onder Windows ongevraagd in "Index.html" omgezet. Dit staat wel leuk, maar het bevordert de compatibiliteit met het internet niet. Naamgeving onder DOS, OS/2 en Windows is niet case-sensitive: "DIR" geeft hetzelfde resultaat als "dir". Maar op het UNIX deel van het internet mag u in de paden en bestandsnamen geen hoofd- met kleine letters verwisselen. Alleen de host en domeinnamen zijn niet case sensitief. Dit is een bug die Microsoft om begrijpelijke redenen nooit verbeterd heeft. Ze heeft er immers zelf weinig last van.
Voor onder OS/2 op een FAT16 vaste schijf aangemaakte bestanden met lange namen geldt een soortgelijk verhaal. Een bestand met de naam "Dit is een test" dat u van HPFS naar een FAT schijf verplaatst behoudt vanuit OS/2 gezien dezelfde naam. OS/2 haalt de lange naam uit de FAT schijf, maar past nogal wat trucs toe om hem zo op te slaan.
Maar via het WPS Instellingenblok kunt u onder Bestand zien dat het bestand onder OS/2 nu eigenlijk "DIT_IS_E" heet en onder DOS "dit_is_e" met kleine letters. Onder die laatste naam is de tekst ook vanuit DOS en Windows te bewerken, ja zelfs fysiek op de harddisk te verplaatsen bij een defragmentatie onder DOS of Win95, zolang u maar van de naam en het pad afblijft. De lange naam "Dit is een test" is niet meer dan een uitgebreid attribuut van het bestand "DIT_IS_E".
OS/2 bewaart lange namen op vaste FAT schijven in de uitgebreide attributen (extended attributes, EAs). Hierbij wordt per bestand maximaal 64KB extra informatie (meta-informatie ) toegekend naast de gegevens die het FAT biedt. Het biedt ruimte voor lange bestandsnamen (.LONGNAME) , van de extensie onafhankelijke bestandstypen (.CLASSINFO), iconen (.ICONPOS), commentaar (.COMMENTS) en ga zo maar door. Zo zal WGET de URL van de gedownload bestand in .SUBJECTS opslaan.
Uitgebreide attributen en lange bestandsnamen werden voor het eerst in HPFS geïmplementeerd, maar voor de uitwisselbaarheid met het FAT bestandssysteem werd een truc bedacht.
De FAT bestandstabel geeft ieder bestand de volgende informatie in zijn record mee.
Ingang |
Locatie (hex) |
---|---|
Bestandsnaam |
00-07 |
Extensie |
08-0A |
Attribuut |
0B |
Gereserveerd |
0C-15 (14 en15 => EA's) |
Tijd |
16-17 |
Datum |
18-19 |
FAT cluster |
1A-1B |
Grootte |
1C-1F |
Aangezien FAT geen uitgebreide attributen ondersteunt, moesten de OS/2 ontwikkelaars een manier bedenken om bestandsnamen aan uitgebreide attributen te koppelen. Hiertoe maakten ze gebruik van gereserveerde plaatsen in de 20 bytes grote bestandsingangen van de FAT tabel. Deze tabel geeft aan op welke clusters zich welke bestanden bevinden en geeft hun bestandskenmerken (attributen, tijd, datum en grootte) weer. Op lokatie 14-15 voegden ze geheime clusters van de uitgebreide bestandsattributen toe.
De lange bestandsnamen van OS/2 en andere uitgebreide attributen worden op FAT schijven in voor DOS verborgen clusters opgeslagen. Clusters zijn de de eenheden van het FAT bestandssysteem. Aangezien deze clusters zich bij een checkdisk onder DOS als "lost clusters " kunnen voordoen, moet OS/2 de door uitgebreide attributen ingenomen clusters voor zichzelf reserveren. Hiertoe dient het bestand EA_DATA . SF . In de door de OS/2 gemanipuleerde FAT tabel pretendeert EA_DATA . SF deze ruimte (clusters) in te nemen.
Op systemen die OS/2 via het netwerk benadert zie je bovendien *WP ROOT. SF en *WP SHARE. SF staan. Dus bijvoorbeeld /home/sjoerd/*WP ROOT. SF op een Linux systeem. Dit bestand WP ROOT . SF bewaard de uitgebreide attributen van de rootmap (het drive object). In het bovenstaande geval de manier waarop mijn homedir door OS/2 via het samba netwerk geopend wordt. Als u het bestand wist, komt het weer terug met standaardwaarden.
OS/2 bewaakt steeds de logische locaties van de bestanden. Worden ze onder de WPS van OS/2 verplaatst , dan is er niets aan de hand. Worden ze buiten de WPS om verplaatst of hernoemd, dan kan OS/2 WPS het niet bijbenen. Blijken ze na een defragmentatie van de schijf weer op hetzelfde logische adres te staan, dan is er na een fysieke verplaatsing niets aan de hand. Het gaat net als bij IP adressen om de logische adressering. Niet om de fysieke locatie op de vaste schijf.
Hun ongebruikelijke - onder DOS zelfs verboden - naam met spaties erin, voorkomt dat ze per ongeluk (onder Windows of DOS) gewist worden. Onder OS/2 kunt u ze gewoonlijk niet wissen. Een poging hiertoe geeft als foutmelding " Sharing violation" omdat de bestanden doorgaans in gebruik zijn. Het bijwerken van de uitgebreide attributen gebeurt op de achtergrond: Als u onder OS/2 bestanden op FAT schijven kopieert of verplaatst - ook al is dit met een DOS-programma - dan houdt OS/2 de informatie in EA DATA. SF en WP ROOT. SF voor u bij.
DIR /N toont de grootte van de uitgebreide attributen van de bestanden op FAT en HPFS schijven.
Omdat Win95 en OS/2 lange namen op FAT16 schijven op verschillende manieren opslaan zullen ze zelden met elkaar corresponderen. Handig is dit natuurlijk niet.
Wilt u bestanden onder OS/2 en Windows 9x per se dezelfde lange naam geven dan kunt u ze met schijfcompressieprogramma's die lange namen ondersteunen zippen. Zowel onder OS/2 als Windows 9x draaien zip utilities die u toestaan gezipte bestanden (in tijdelijke directories) te bewerken. Het gezipte bestand geeft u zelf natuurlijk een korte naam (bijv. doc.zip ).
Een aanrader voor Windows is het freeware programma Easyzip dat ook tar en tgz bestanden kan uitpakken. Onder OS/2 is Object Desktop reuze handig.
In de praktijk werk ik nauwelijks met lange namen op vFAT schijven. Ik plaats bestanden die ik onder alle besturingssystemen bewerken wil gewoon in het 8.3 formaat op FAT drives, zodat ik zeker weet dat ze door elk besturingssysteem altijd en zonder problemen zijn te benaderen. Het scheelt typewerk bovendien. Lange bestandsnamen die ik onder Windows download (ik maak ze zelf eigenlijk nooit aan), verplaats ik naar een Zipbestand, zodat ik ze met Object Desktop of een andere utility onder OS/2 naar HPFS kan kopiëren. De lange naam blijft dan gewoon behouden.
Een andere optie is gebruik te maken van de op Linux code gebaseerde vFAT driver van D. Steiner. Dat kan, maar de OS/2 vFAT driver is bèta, gezien de naamgeving eigenlijk alpha en ondermijnde bij mij de wel eens de stabiliteit van OS/2. Het is de vraag of er - met de opkomst van FAT32 - nog veel tijd in geïnvesteerd wordt. Bovendien werkt de driver niet meer op de WSeB kernel van OS/2 FP14 en eCS.
Als u de OS/2 vFAT driver toch wilt uitproberen, beperk haar dan tot uw exclusieve Windows 95 stations (dus niet met de optie -VFAT:*, maar met -VFAT:C,E o.i.d.). Of laat de optie -VFAT weg en remount het station als vFAT "on demand". In het voorbeeld hiernaast is dat met een batch gedaan. De batches zijn helaas niet in menu van het betreffende vFAT schijf object te integreren, omdat de vFAT driver geen EAs ondersteund.
De vFAT driver ondersteunt geen uitgebreide attributen. De EA DATA. SF en WP ROOT. SF worden dus niet gebruikt. Ze zijn zelfs onder OS/2 te wissen! U kunt ook geen reflecties op de Werkplek plaatsen van objecten (Mappen, data, programma's) op door de vFAT driver gelezen partities. Indien u deze driver installeert voor een eerder als FAT benaderde schijf, dan raakt de WPS de in de EA's geschreven instellingen van de objecten op die vFAT schijf (bijv. dos-settings, iconen, reflecties) dus kwijt! Een herstart van OS/2 Warp na deactivatie van de driver (REM ervoor) geeft u de oude instellingen terug - mits u de EA DATA. SF en WP ROOT. SF ongemoeid liet.
Lastig is dat de OS/2 vFAT driver de bestanden anders weergeeft dan de Windows 9x VFAT driver: De OS/2 vFAT driver heeft moeite met de klassieke DOS 8.3 formaat namen. Ze worden met hoofdletters weergeven. Dus, bestanden en mappen die - in tegenstelling tot het eerder gegeven Netscape voorbeeld - kompleet in het 8.3 formaat staan behouden hier hun hoofdletters. Zo ziet u met de OS/2 vFAT driver van Steiner "\OS2\INDEX.HTM" naast "E:\Program Files\Netscape\Communicator\Program\netscape.exe" staan.
Hieronder een voorbeeld van een DIR onder OS/2 op een VFAT schijf. Alle bestandsnamen stonden in kleine letters geschreven op de Ext2 partitie van een Linux PC. Ze werden via Samba vanaf een Ext2 schijf naar een onder OS/2 als vFAT gemounte FAT16 schijf gekopieerd.
Bij een kopieeractie naar een HPFS schijf zou u weer kleine letters zien.
De belangrijkste reden voor mij om standaard van de vFAT driver af te zien was het optreden van instabiliteit van het systeem. Ik zie met name trap errors bij gebruik van Lotus Smartsuite voor OS/2. Mijn database staat daarom in een onder FAT en vFAT identiek DOS 8.3 formaat. Ik laad de driver wel:
IFS=I:\OS2\FS\VFAT\VFAT-OS2.IFS -RW -CACHE:512 -ERRORS=CONTINUE
Ik activeer hem alleen als hij nodig is zoals in het onderstaande hp.cmd of "handmatig" met een in een WPS menu geïntegreerde batch in het drives object (vfatg.cmd).
remount -t vfat g: |
Dit is ook de inhoud van vfatg.cmd |
call soffice.exe g:\homepage\index.html |
Het geheel in de rechter kolom was de inhoud van hp.cmd (toen de homepage nog op vFAT stond). Inmiddels benaderd Linux probleemloos HPFS en zit ik niet meer aan Bill Gates' pseudo-lange namen systeem vast. |
remount -t fat g: |
Dit is ook de inhoud van fatg.cmd die o.a voor een checkini /c opgeroepen wordt. |
exit |
Sluit de achtergrondsessie. |
Een remount werkt natuurlijk alleen als er geen bestanden geopend zijn op de betreffende partitie.
Informatie over de vFAT driver: Windows 95 VFAT file system support for OS/2 (VFAT-OS2) home page.
Waarschijnlijk is het beter om de FAT32 driver van Henk Kelder te gebruiken. Ik had hier tot voor kort geen ervaring mee, omdat de "gewone" Windows 95 geen FAT32 ondersteunt. Ervaringen van anderen waren bijzonder positief. De FAT32 driver ondersteunt ook uitgebreide attributen.
Het bij Henk Kelders driver geleverde PARTFILT filter maakt het mogelijk partities een andere naam te geven. Standaard wordt de FAT32 schijf achter alle andere schijven geplaatst.
Dat laatste zal vaak nodig zijn, want als u een logisch FAT16 station naar FAT32 converteert, zal OS/2 die achter de FAT16 en HPFS schijven plaatsen! Oftewel een OS/2 bootpartitie I wordt nu H en OS/2 zal niet booten. Experimenteer hier dus alleen mee als u OS/2 config.sys in noodgevallen goed bereiken kunt (bootfloppen) om het PARTFILT filter aan te kunnen passen, of maak een kleine dummy partitie voor de OS/2 partitie aan (bijv. voor swapper.dat).
Wist u dat:
U met IFS=CDFS.IFS /W in de CONFIG.SYS Joliet level 1 and 2 CD-Roms met lange namen kon lezen? En met de laatste driver van Hobbes ook level 3!
Fixpack 5 bij Warp 3 nodig is om veilig een CHKDSK /C vanuit OS/2 te kunnen doen op een door Windows 95 bewerkte FAT16 partitie met lange namen.
VOICE Newsletter 03/2005 - VFAT and USB memory sticks
Implementation of extended attributes on the FAT file system