Есть iconv 2.0 (на фре поставлен из портов iconv-2.0_1 и iconv-extra-2.0).
#!/bin/sh
c="`printf '\230'`"
echo -n $c >file
echo 1
iconv -f windows-1251 -t koi8-r -s $c
echo 2
iconv -f windows-1251 -t koi8-r file
Выдает:
1
2
iconv: convert_stream: conversion stream writing error
Почему первый прогон ничего не выдает, не смотрел.
Копание в потрохах iconv(1) показывает, что во втором прогоне на этом символе
получается errno=EILSEQ, на который успешно забивается болт.
А writing error на самом деле никакой нету, это наведенная ошибка.
Во-первых, какого хрена iconv(3) вообще выставляет EILSEQ?
Hе буква - не трожь, не твое собачье дело, что у меня там лежит :-E
И это поведение не настраивается.
Во-вторых, почему сам iconv(1) игнорирует errno от iconv(3)?
Это вопрос риторический :-(
Eugene
--
"Люди забыли эту истину," - сказал Лис, - "но ты не забывай"