컴파일된 terminfo 파일에서 termcap 문자열을 어떻게 생성합니까?

컴파일된 terminfo 파일에서 termcap 문자열을 어떻게 생성합니까?

이 스레드의 제목이 거의 모든 것을 말해줍니다.

이 문제를 검색했을 때 내가 원하는 것을 수행한다고 하는 이라는 프로그램에 대한 언급을 찾았지만 untic이 프로그램은 내 배포판(Debian)의 공식 패키지에는 없는 것 같습니다.

(컴파일된) terminfo에서 termcap로 이동하는 다른 방법이 있습니까?

답변1

man infotocap:

infotocap - terminfo 설명을 termcap 설명으로 변환

주석이 달린

유틸리티는 실제로 링크입니다.tic, 달리다-C 모델. 다른 것을 사용할 수 있습니다tic다음과 같은 옵션-f그리고 -x.

이것은 소스 대 소스입니다. 컴파일된 terminfo 소스(terminfo 또는 termcap)의 경우 다음을 사용합니다.infocmp:

생성의 원천-C옵션은 termcap 항목으로 직접 사용할 수 있지만 매개변수화된 모든 문자열을 termcap 형식으로 변경할 수 있는 것은 아닙니다. infocmp대부분의 매개변수화된 정보를 변환하려는 시도가 이루어지며, 변환되지 않은 정보는 출력에서 ​​명확하게 표시되고 주석 처리됩니다. 이는 수동으로 편집해야 합니다.

infocmp이를 사용하는 방법은 다양합니다. termcap으로 변환하는 것은 그 중 하나일 뿐입니다.

infocmp 바이너리 terminfo 항목을 다른 terminfo 항목과 비교하고 terminfo 설명을 다시 작성하는 데 사용할 수 있습니다. use= terminfo 필드 또는다양한 형식의 바이너리 파일(용어)에서 용어 정보 설명을 인쇄합니다. 모든 경우에 부울 필드가 먼저 인쇄되고 그 다음 숫자 필드, 마지막으로 문자열 필드가 인쇄됩니다.

tic 및 infocmp는 매뉴얼 페이지에서 처리되는 터미널 데이터베이스의 위치에 대한 정보를 가정합니다.TERMINFO. 터미널 데이터베이스의 일부가 아닌 임의의 파일 이름의 경우 스크립트를 사용하여 기존 터미널 데이터베이스와 같은 디렉터리에 복사할 수 있습니다.

#!/bin/sh
mytemp=$(mktemp -d)
trap 'rm -rf "$mytemp"; exit 1' INT QUIT TERM HUP
trap 'rm -rf "$mytemp"; exit 0' EXIT
TERMINFO=$mytemp; export TERMINFO
TERMINFO_DIRS=$mytemp; export TERMINFO_DIRS

for name in "$@"
do
        [ -f "$name" ] || continue
        case $(file "$name") in
        *Compiled\ *terminfo\ entry*)
                actual=$(file "$name" | sed -E -e 's%^.*"([^"]+)".*$%\1%')
                leader=$(echo "$actual" | sed -E -e 's%^(.).*%\1%')
                part="$mytemp/$leader"
                mkdir -p "$part"
                cp "$name" "$part/$actual"
                full="$part/$actual"
                infocmp -C -T "$actual" | sed -e "s%$full%$name%"
                ;;
        esac
done

그건 아니야완전히일반적으로 ncurses를 사용하는 일부 플랫폼은 다음과 같은 다른 구조를 사용하기 때문에term맨 페이지.

관련 정보