le bloque du Bak'alla

CVS nervt III

Umlaute sind immer noch böse… auch in 2007. Ich kriege kein komplettes Checkout zustande weil jemand ein PDF mit einem ä eingecheckt hat. Das kann doch nicht so schwer sein dachte ich… heh naja - hier meine Ergebnisse bis jetzt:

Damit die bash unter OS X Umlaute korrekt darstellt kann man folgendes tun:

Fenstereinstellungen -> Darstellung -> UTF-8 einstellen.
~/.inputrc anlegen mit folgendem Inhalt:
set meta-flag ON
set input-meta On
set convert-meta Off
set output-meta On
set show-all-if-ambiguous On

Zum Test: touch hallö.txt
ls
Man sollte hall??.txt sehen. Das ist aber die Schuld von ls. ls -w zeigt das ö korrekt an. Ich habe mir ein alias auf ls in meiner ~/.bash_profile gesetzt:
alias ls=’ls -w’

Das hilft bei dem CVS Problem allerdings alles herzlich wenig. Ich habe in den CVS Sources nachgesehen. Das Problem ist, dass die stdio Funktion rename(const char *from, const char *to) benutzt wird. Die kommt zwar mit UTF-8 klar, aber der String, der von an rename übergeben wird scheint ISO-8859 zu sein.

Passieren tut das ganze in filesubr.c. Für windowsNT, OS halbe und VMS gibt’s da schon ne Extrawurst, für alle Unixe wird es allerdings gleich gemacht. Ich frage mich, ob das Auschecken unter Linux funktionieren würde.

Zum Test habe ich cvs so gepatcht, dass statt der rename() Funktion die Funktion FSMoveObjectSync() aus dem Core Foundation Framework genommen, und siehe da - es funktioniert.

Die Frage die ich mir stelle ist nun, ob ich der CFStringCreateWithCString Methode immer kCFStringEncodingWindowsLatin1 geben kann, bzw. ISO-8859. Ausserdem fliegt nach dem erfolgreichen rename noch der chmod auf die Nase, wohl aus dem gleichen Grund. Da gibt es wohl die eine oder andere Stelle, an der man ran müsste.
Falls jemand weiss wie es besser geht: mic at systemshutdown.de

Vorerst werde ich die Datei mit dem bösen ä umbenennen, das spart ungemein Arbeit ;)