2014-01-28 13 views
10

TL : DR : 32 비트 emacs-lisp 바이트 범위가 파일의 처음 512MB를 초과 할 수 있습니까?emacs lisp에서 most-positive-fixnum을 초과하는 바이트에 액세스

필자는 편집기와의 높은 수준의 통합으로 인해 다양한 데이터 처리 작업에 emacs-lisp을 사용하기를 좋아합니다.

이렇게 사용자 정의 함수를 작성할 때 나는 때때로 most-positive-fixnum에 의해 부과 된 제한을 실행합니다. 내가 전체 1GB 파일을 버퍼에로드 할 수없는 이유를 이해하고 이해할 수있는 동안 insert-file-contents[-literally] 인터페이스는 파일의 첫 번째 512MB를 초과하는 데이터 청크를 액세스 할 수 없습니다. 정수 바이트 범위.

이 제한을 우회하는 방법이 있습니까? 지금까지 내가 아는 한, insert-file-contents은 emacs-lisp에서 사용할 수있는 가장 낮은 수준의 파일 읽기 기능이며, insert-file-contents-literally은 몇 가지 변수를 설정하여 처음으로 변형 된 것입니다. 즉, emacs-lisp는 낮은 값을 제공하지 않는 것 같습니다. 레벨 fopen 유형의 파일 인터페이스.

부동 소수점 인수를 사용하여 insert-file-contents-literally을 호출하면 이상한 점이 있습니다 (반올림 오류가 발생할 수 있음). 높은 바이트 범위에 액세스 할 수 있습니다. 그러나 ftp.gnu.org의 최신 컴파일 된 이맥스 버전 (서면으로 24.3)을 사용하면 (wrong-type-argument file-offset NUMBER) 오류가 발생합니다.

+0

'head'와'tail'과 같은 외부 명령을 사용해야하는 것처럼 보입니다. http://www.emacswiki.org/emacs/VLF를 참조하십시오. 이 경우'emacs-calc' 임의의 정밀도 숫자로 주위를 둘러 볼 수 있습니다. – Tobias

+1

외부 명령을 사용하면 슬프게도 피하고 싶지 않은 플랫폼 종속성을 도입합니다. 나는 주로 Windows에서 이맥스를 사용하고있다. – kdb

답변

1

Emacs에서만이 작업을 수행 할 수있는 방법은 없습니다. 몇 가지 외부 프로그램을 사용해야합니다. 알려진 제한 사항입니다. 이미 버그 추적기에 있다고 생각합니다.

관련 문제