mount_msdosfs UTF-16

lockdoc

Well-Known Member
Hallo Leute,

ich hatte ja derweilen Probleme meine Dateien einer MsDOS Partition unter FreeBSD korrekt anzeigen zu koennen, da Windows mit UTF-16 arbeitet und das nicht ganz so kompatibel zu BSD scheint.

Allerdings habe ich es grade erfolgreich hinbekommen, wenn auch ueber einen kleinen Umweg :D:D:D:D:D

Mein Freund war dieser Port
Code:
sysutils/fusefs-fusexmp_fh

Vorgehensweise

1.) Mounten
Also ich mounte mein MSDOS Drive wie folgt:
Code:
mount_msdosfs -L zh_CN.GBK /dev//da1 /mnt/tmp/

Durch -L zh_CN.GBK werden schonmal alle Dateien in dem Verzeichnis angezeigt (ohne diese Option sind diese nicht sichtbar). Jetzt haben diese allerdings alle das Anhaengsel, dass sie ein falsches Encoding haben und man sieht in den Namen ueberall ??????


2.) Recode
Ich nutze jetzt fusexmp_fh um das ganze neu encoded woanders zu mounten
Code:
fusexmp_fh -oallow_other,modules=iconv:subdir,from_code=GBK,subdir=/mnt/tmp/ /media/CW-P7EOS-X/
Und siehe da, jetzt werden die Nicht Standard Zeichen in Ordner und DateiNamen korrekt angezeigt und ich kann auch solche erstellen!



Getestet mit Chinesisch (simplified) und Japanisch. Ich denke Chinese Traditionell sollte auch gehen.
 
Wrapper

Hallo, ich bin grade dabei einen Wrapper zu schreiben, der dieses alles automatisiert.

Dazu wollte ich das jetzt ins System mit einbauen, das gnome das fuer seinen automount nutzen kann. also habe ich das wirkliche mount_msdosfs nach mount_msdosfs verschoben.

Code:
#!/bin/sh

TMP_MOUNT_DIR="/mnt/tmp"
MOUNT_DOS_BIN="/sbin/mount_msdosfs.old"

show_usage()
{
	echo ""
	echo "  usage: ${0} device mountpint"
	echo ""
}

if test ! -d $TMP_MONT_DIR  # create tmp dir, if not exist
then
	mkdir -p $TMP_MOUNT_DIR
fi

if [ -z $1 ]  || [ -z $2 ]	# check if arg1 and arg2 are not set
then
	show_usage
else

	echo "$MOUNT_DOS_BIN -o longnames -L zh_CN.GBK $1 $TMP_MOUNT_DIR..."
	$MOUNT_DOS_BIN -o longnames -L zh_CN.GBK $1 $TMP_MOUNT_DIR

	echo "fusexmp_fh -oallow_other,modules=iconv:subdir,from_code=GBK,subdir=$TMP_MOUNT_DIR $2"
	fusexmp_fh -oallow_other,modules=iconv:subdir,from_code=GBK,subdir=$TMP_MOUNT_DIR $2
fi

Das script funktioniert soweit ganz gut, wenn man es manuell aufruft. Wenn man den mountpoint nach /media/<Vol-Name> setzt, dann bekommt man auch ein schoenese Desktop Icon :D

Das Problem ist, wenn ich gnome das jetzt automatisch verwalten lasse, dann haengt er da noch ein paar zusaetzliche mountpoints ran (obwohl ich im Configuration Editor unter /system/storage/default_options/vfat alle Optionen rausgenommen habe).

Dann hab ich mir gedacht, das beste waere, wenn ich diesem Script das gleiche Parameter Handling beibringen koennte, wie es das eigentliche mount_msdosfs beherrscht.

Das erscheint mir allerdings recht kompliziert:
Code:
mount_msdosfs [-9ls] [-D DOS_codepage] [-g gid] [-L locale] [-M mask]
                   [-m mask] [-o options] [-u uid] [-W table] special node

Hat schon jemand ein shell example hier mit umfangreichem Parameter Handling, was ich mir als Referenz mal ansehen koennte?

Evtl. habt ihr ja auch eine andere Idee fuer einen anderen Ansatz des Scriptes um die integration in Gnome zu machen.


Wenn das alles klappt wuerde ich auch einen Port drauss machen xDD

LG
lockdoc
 
Back
Top