mzuntar

개요

Archive 파일의 하나인 TAR 형식에 대한 untar를 구현해본겁니다.

본래 취지는 library 로 만들어서 쉽게 tar파일을 다룰수 있게 하고 FUSE구현부를 추가하여 간단한 파일시스템으로 다룰수 있도록 하는게 목표였으나 아직은 갈길이 많이 남아 있네요. 현재는 그냥 utility로써 다른분들이 소스를 활용할수 있는 정도수준으로만 공개합니다.

언젠가는 목표했던바 완벽한 Library로 제공할수 있는 시간적 여유가 있으면 좋겠네요.

TAR의 Header 구조

typedef enum
{
 E_TAR_HEADER_SIZE_NAME            = 100,
 E_TAR_HEADER_SIZE_MODE            =   8,
 E_TAR_HEADER_SIZE_UID             =   8,
 E_TAR_HEADER_SIZE_GID             =   8,
 E_TAR_HEADER_SIZE_SIZE            =  12,
 E_TAR_HEADER_SIZE_MAKETIME        =  12,
 E_TAR_HEADER_SIZE_CHECKSUM        =   8,
 E_TAR_HEADER_SIZE_TYPEFLAG        =   1,
 E_TAR_HEADER_SIZE_LINKNAME        = 100,
 E_TAR_HEADER_SIZE_MAGIC           =   6,
 E_TAR_HEADER_SIZE_VERSION         =   2,
 E_TAR_HEADER_SIZE_UNAME           =  32,
 E_TAR_HEADER_SIZE_GNAME           =  32,
 E_TAR_HEADER_SIZE_DEVMAJOR        =   8,
 E_TAR_HEADER_SIZE_DEVMINOR        =   8,
 E_TAR_HEADER_SIZE_PREFIX          = 155,
 E_TAR_HEADER_SIZE_PADDING         =  12,
}e_TAR_HEADER

typedef struct
{
 char                       Name[E_TAR_HEADER_SIZE_NAME];
 char                       Mode[E_TAR_HEADER_SIZE_MODE];
 char                       UID[E_TAR_HEADER_SIZE_UID];
 char                       GID[E_TAR_HEADER_SIZE_GID];
 char                       Size[E_TAR_HEADER_SIZE_SIZE];
 char                       MakeTime[E_TAR_HEADER_SIZE_MAKETIME];
 char                       CheckSum[E_TAR_HEADER_SIZE_CHECKSUM];
 char                       TypeFlag[E_TAR_HEADER_SIZE_TYPEFLAG];
 char                       LinkName[E_TAR_HEADER_SIZE_LINKNAME];
 char                       Magic[E_TAR_HEADER_SIZE_MAGIC];
 char                       Version[E_TAR_HEADER_SIZE_VERSION];
 char                       UName[E_TAR_HEADER_SIZE_UNAME];
 char                       GName[E_TAR_HEADER_SIZE_GNAME];
 char                       DevMajor[E_TAR_HEADER_SIZE_DEVMAJOR];
 char                       DevMinor[E_TAR_HEADER_SIZE_DEVMINOR];
 char                       Prefix[E_TAR_HEADER_SIZE_PREFIX];
 char                       Padding[E_TAR_HEADER_SIZE_PADDING];
}t_TAR_HEADER; /* Total header size is 512 bytes */


사용권한

mzuntar utility source 는 수정없이 사용하신다면 누구나 그대로 사용하셔도 좋습니다. 단, source를 수정하셔서 사용하시려고 한다면 해당 수정사항에 대한 부분을 저에게 알려주시길 바랍니다.

다운로드




/*

[ FrontPage | PrintView | RawView | RSS ]

Copyright ⓒ MINZKN.COM
All Rights Reserved.

MINZKN

----

*/