LINUX.ORG.RU

Компиляция iconv.

 , ,


0

2

Помогите собрать iconv с поддержкой gsm7. Пробовал по двум манам, но собрать не получается.

./encodings.def:156:1: note: in expansion of macro 'DEFENCODING'
 DEFENCODING(( "GSM-7",
 ^
make[1]: *** [iconv.lo] Error 1
make[1]: Leaving directory `/home/user/libiconv-1.14/lib'
make: *** [all] Error 2
http://git.savannah.gnu.org/cgit/libiconv.git/diff/?id=614f279f http://mobiletidings.com/2009/07/06/gsm-7-encoding-gnu-libiconv/

Тот пост с mobiletidings датирован 2009 годом, наверное, ему нужна libiconv версии 1.13 или 1.12 (при условии что без этого патча iconv у вас собирается, что это не проблема компилятора и т.д.).

mky ★★★★★
()
Ответ на: комментарий от mky

Без апгрейда тоже не компилируется.

make[2]: *** [progname.o] Error 1
make[2]: Leaving directory `/home/user/libiconv1.14/srclib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/user/libiconv1.14/srclib'
make: *** [all] Error 2

viktor76876
() автор топика
Ответ на: комментарий от anonymous

+1

Там какая-то макропитушня голимая. Одинаковые макросы раскрываются по разному, макрос на макросе сидит и макросом погоняет.

Хедер aliases.h не обновляется при вызове configure, а он должен генерится gpref'ом из aliases.def. В итоге сгенерированный aliases.h уже захардкожен, и добавление GSM-7 / GSM7 в aliases.def абсолютно ничего не меняет.

GNU в своём репертуаре, короче. А ещё всё это смачно смазано соплями autotools'а.

Помучался 20 минут, дропнул. Я не настолько бородат, чтобы разгребать эту сишную макросную вермишель с GOTO в соседние файлы.

Истину глаголишь, анончик. Проше для своей софтины выдрать этот GSM-7, чем разгребать это.

inb4: неосилятор.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

То ли лыжи не едут толи ......... Скрипт же этот «encoding ascii data to 7-bit GSM character set» Кодирует Hello world!!! в gsm? Нужно наоборот gsm -> читаемый текст.

viktor76876
() автор топика
Ответ на: комментарий от EXL

Спасибо.

def gsm7bitdecode(f):
   f = ''.join(["{0:08b}".format(int(f[i:i+2], 16)) for i in range(0, len(f), 2)][::-1])
   return ''.join([chr(int(f[::-1][i:i+7][::-1], 2)) for i in range(0, len(f), 7)])
print(gsm7bitdecode('gsmtext'))
А как на питоне будет выглядеть
encodePDU()		# text to PDU
{
    in=$1
    let "in_len=${#in}-1"
    for chr in $(seq  0 $in_len)
    do
        let "chr2=$chr+1"
        let "t=$chr%8+1"
        if [ "$t" -ne 8 ]; then
            byte=$(printf "%d" "'${in:$chr:1}")
            let "c=$byte>>($chr%8)"
            let "c2=(1<<$t)-1"
            byte2=$(printf "%d" "'${in:$chr2:1}")
            let "b=$byte2 & $c2"
            let "c=$b<<(8-$t) | $c"
            REPLY=$REPLY$(echo "obase=16; $c" | bc | sed "s/^\(.\{,1\}\)$/0\1/")
        fi
    done
	echo "$REPLY"
	echo
	echo "AT-command to send '$1' as USSD-request: AT+CUSD=1,\"$REPLY\",15"
}

viktor76876
() автор топика
Ответ на: комментарий от viktor76876

Увы, понятия не имею и не помогу тут. Я эту shell-лапшу обхожу за версту.

Посмотри в гугле python at commands

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.