Предыстория: Ковырял я в своей локалке DC и вылезла задача - открыть через DC инфу линухового сервера. На этом же сервере был DC-хаб. В dctc потыкался без особого успеха - не давал скачать ничего кроме файллиста с себя. Случайно надыбал на свежий проект microdc. Всё хорошо, но файллист в koi8 мало кого устраивает.
Вариантов было 2 :
  1. открыть локальный доступ по самбе и ей конвертить имена файлов и папок в 1251
  2. сделать симлинки с перекодированием. Естественно не руками
Серверу итак несладко было, поэтому вариант с самбой только как крайний случай. А ещё как раз с локалкой проблемы - линка на инет нет. Вот и решил я делать симлинки. Почему-то делать скрипт меня заломало - выглядеть будет короче, но думать надо больше :). Вот и написал на C. По крайней мере работать будет быстрее скрипта
Код:

Не хотелось заморачиваться с подтягиванием кодировок из строки запуска, выдачей параметров запуска при запуске без них и прочими нужными вещами. И не заморачивался
Компилим
gcc -O3 ./lnrecode.c -o./lnrecode
Запускаем
./lnrecode /usr/local /tmp/local
Это создаст нам в /tmp/local зеркало папок и файлов /usr/local с перекодировкой имён файлов и папок из koi8-r в cp1251. На /tmp/local я и натравливаю microdc, если хочу открыть /usr/local. microdc я запускал на сервере через
screen -dmS microdc microdc
предварительно создав конфиг