MKSTR(1)

명칭
mkstr - C 언어 원시 파일로부터 에러 메세지 파일을 작성한다

서식
mkstr [-] messagefile prefix file ...

해설
mkstr 유틸리티는, C 언어 원시 파일로부터 에러 메세지를 추출해, 이것을 격납하는 파일을 작성합니다. 또 작성되고 에러 메세지 파일을 사용하도록(듯이), 그 원시 파일을 수정해 (을)를 목적으로 하고 있습니다 ( 버그 의 항을 참조)

mkstr 유틸리티는, 명령행으로 지정된 파일을 처리해, 수정한 입력 파일을, 지정된 파일명에, 지정된 프레픽스를 붙인 이름의 파일 그리고 출력합니다. 이하의 사용예는 전형적인 것입니다.

    mkstr pistrings xx *. c

mkstr (은)는, 커런트 디렉토리에 있는 모든 C 언어 소스로부터 모았다 에러 메세지를, 파일 pistrings 에 출력해, 수정된 원시 파일을, 파일명의 선두에 xx (을)를 붙인 파일에 출력합니다.

옵션

-   지정된 에러 메세지 파일의 마지막으로, 에러 메세지가 놓여집니다. 이것은, mkstr 그리고 처리된 거대한 프로그램의 일부를 재컴파일 하기 위해서 사용합니다.

mkstr 유틸리티는, 원시 파일중의 `error("' 그렇다고 하는 캐릭터 라인을 기초로 에러 메세지를 검색합니다. 이 캐릭터 라인이 출현하면(자), ‘"’ (으)로부터 개시되는 캐릭터 라인 및 그 후에 눌 캐릭터와 개행 캐릭터를 메세지 파일에 출력합니다; 변경전의 소스에 대해 캐릭터 라인인 부분은, 메세지 파일의 오프셋(offset)로 옮겨지고 lseek(2) 에 의해 대응하는 메세지를 꺼낼 수가 있습니다. 실제로 메세지를 꺼내는 경우에는, 이하와 같은 코드를 사용합니다.

    char efilname = "/usr/lib/pi_strings";
    int efil = -1;
    error(a1, a2, a3, a4)
    {
    	char buf[256];
    	if (efil < 0) {
    		efil = open(efilname, 0);
    		if (efil < 0)
    			err(1, "%s", efilname);
    	}
    	if (lseek(efil, (off_t) a1, SEEK_SET) < 0 ||
    	    read(efil, buf, 256) <= 0)
    		err(1, "%s", efilname);
    	printf(buf, a2, a3, a4);
    }

관련 항목
xstr(1), lseek(2)

역사
mkstr 유틸리티는 3.0BSD 그리고 등장했습니다.

버그
mkstr 유틸리티는, PDP 11 패밀리의 제한된 아키텍쳐를 위해서(때문에) 개발되었습니다. 매우 일부의 프로그램 밖에 mkstr 를 사용하고 있지 않습니다. Pascal 인터프리터 pi(1) (와)과 에디터 ex(1) 하지만 mkstr 에 의해 작성되고 있습니다. mkstr 방법은 효율적인 물건이라고는 할 수 없기 때문에, 에러 메세지는 프로그램 텍스트 속에 파묻히고 있어야 합니다 ((역주) 최근에는 메세지의 국제화등을 위해서(때문에), 프로그램중에 메세지를 묻지 않는 방법도 잘 이용됩니다)