jeudi 14 novembre 2013

... et 10 ans + tard !

Finalement je change de locale sous linux, environ 10 ans après que la plupart l'aient fait.
Bah avant les années 2000 tout le monde en France utilisait le latin1, puis le latin9 pour avoir le signe euro en + au dessus de la touche E (!). Et puis je ne sais plus quand exactement mais c'était autour de 2000, tout le monde est devenu taré à propos de l'utf8, et comment c'était bien et c'était absolument ce qu'il nous fallait à tous ! Sous windows tout le monde y est passé, pas le choix, pour que le passage ne soit pas trop douloureux ils ont collé l'encodage des noms de fichiers directement dans le système de fichiers pour qu'il n'y ait pas besoin de renommer tous les fichiers qui contenaient des accents dans leur nom, du coup la plupart des gens ne se sont même pas aperçus qu'ils ont changé, il n'y a que de rares cas où ça pouvait se voir.
Sous linux on oblige personne à faire quoi que ce soit, et les systèmes de fichiers laissent tout le monde encoder ses noms comme il veut, du coup y a aucun champ indiquant l'encodage. Du coup si on change de locale, faut renommer tous les fichiers à la main ! Sacré bazar, du coup j'ai rien fait du tout...
Et tout s'est à peu près bien passé pendant + de 10 ans en fait, y a vraiment aucun intérêt à utiliser cette stupidité d'utf, à la base l'utf c'était surtout fait pour pouvoir faire cohabiter des caractères asiatiques et des caractères occidentaux, donc ça n'a pas vraiment énormément d'intérêt. Du coup y a énormément de projets informatiques qui ont passé un temps fou à corriger des bugs juste pour pouvoir gérer ces foutues locales qui étaient totalement inutiles pour la plupart des gens (entre autres perl a corrigé des bugs et amélioré les locales pendant des années !!!). Ca a aussi généré pas mal de bugs sur le web...
Quel énorme gâchis de temps quand même...
Et au final je viens quand même de renommer moi même tous mes fichiers en utf8 à cause de qbittorrent qui a justement une gestion déplorable des locales, et si jamais on lui donne un torrent créé avec une locale utf8 alors qu'on utilise pas l'utf8 comme moi, il répond "le fichier n'existe pas". Baka va ! Comme j'aime quand même bien sa capacité à récupérer les torrents du début à la fin au lieu d'être au hasard comme la plupart des autres (ça permet de faire du streaming), j'ai quand même pris le temps de renommer au moins tous les fichiers du répertoire torrents en utf8. Voilà le script qui sait faire ça :

#!/bin/bash

f=`find -name '*[éèêëùà]*'|head -n 1`
while [ "$f" != "" ]; do
        bn="`basename \"$f\"`"
        dn="`dirname \"$f\"`"
        echo fichier $bn
        cd "$dn"
        mv "$bn" "`echo $bn|recode latin1..utf8`"||exit 1
        cd -
        f=`find -name '*[éèêëùà]*'|head -n 1`
done

Un peu long quand même pour un truc aussi anecdotique, et en + à mon avis ça risque de me poser d'autres problèmes dans d'autres répertoires + tard, mais bon... Enfin on verra bien, au pire on peut toujours retourner en arrière ! Remarque j'ai d'abord été signaler le bug sur leur tracker, mais ils n'ont eu aucune réaction. Dommage parce que ktorrent par exemple gère tout seul et de façon transparente la conversion des locales, si y avait pas cette fonction qui permet le streaming j'aurais viré qbittorrent !
Tiens au passage j'ai vu qu'ils ont viré le goto dans les scripts, c'est malin, ici ça m'oblige à répéter la ligne pour initialiser f. Le goto c'est pas la mal absolu, y a des gens tordus des fois... !