file 은 libmagic 이라는 라이브러리 패키지에서 제공하는 실행 명령입니다.
c 또는 c++ 로 만드시는 것이라면, libmagic library 를 이용하시는 것도 한 방법 입니다.
또는 분석을 위한 포맷의 정의를 파악해서 직접 만들 수도 있겠죠. 예를 들어, jpg, png, gif 를 판단하는 경우는 https://svn.oops.org/wsvn/OOPS.libimginfo/trunk/src/imginfo.c 의 check_image_type 함수를 보시면 됩니다. 이런식으로 spec 파일(jpg, png, gif 등은 rfc 문서를 보시면 됩니다.) 분석해서 해당 포맷의 spec 을 이용하는 방법이 있겠죠.
파일 이름이 xxx.yyy.zzz.jpeg 라면
파일 이름이 xxx.yyy.zzz.jpeg 라면 마지막 . (dot)을 찾아서 jpeg를 읽어내면 됩니다.
마지막 문자를 어떤 문자열에서 찾는 함수는 strrchr() 입니다.
요약.
1. 파일 이름을 읽는다.
2. 파일 이름 문자열에서 마지막 .(dot) 지점을 찾는다.
3. 그 다음 지점부터 문자열 끝까지가 파일 확장자이다.
얼마나 정확하게, 얼마나 구체적으로 파악하고 싶은지에
얼마나 정확하게, 얼마나 구체적으로 파악하고 싶은지에 따라 달라지겠지요.
이 분야의 선배인 file 명령어를 참고하는 것도 좋겠습니다.
https://www.man7.org/linux/man-pages/man1/file.1.html
file 은 libmagic 이라는 라이브러리
file 은 libmagic 이라는 라이브러리 패키지에서 제공하는 실행 명령입니다.
c 또는 c++ 로 만드시는 것이라면, libmagic library 를 이용하시는 것도 한 방법 입니다.
또는 분석을 위한 포맷의 정의를 파악해서 직접 만들 수도 있겠죠. 예를 들어, jpg, png, gif 를 판단하는 경우는 https://svn.oops.org/wsvn/OOPS.libimginfo/trunk/src/imginfo.c 의 check_image_type 함수를 보시면 됩니다. 이런식으로 spec 파일(jpg, png, gif 등은 rfc 문서를 보시면 됩니다.) 분석해서 해당 포맷의 spec 을 이용하는 방법이 있겠죠.
댓글 달기