Re: AppleDouble format
Re: AppleDouble format
- Subject: Re: AppleDouble format
- From: Vince DeMarco <email@hidden>
- Date: Mon, 5 Nov 2001 13:25:13 -0800
On Monday, November 5, 2001, at 11:46 am, Charles Srstka wrote:
Does anyone know of a way to programmatically decode those ._filename
AppleDouble files that UFS uses into actual HFS resource forks?
I don't know this one.
Also, is it possible to determine the format of a drive programmatically?
use statfs()
STATFS(2) System Programmer's Manual
STATFS(2)
NAME
statfs - get file system statistics
SYNOPSIS
#include <sys/param.h>
#include <sys/mount.h>
int
statfs(const char *path, struct statfs *buf)
int
fstatfs(int fd, struct statfs *buf)
DESCRIPTION
Statfs() returns information about a mounted file system. Path is the
path name of any file within the mounted file system. Buf is a
pointer
to a statfs structure defined as follows:
typedef struct { int32_t val[2]; } fsid_t;
#define MFSNAMELEN 16 /* length of fs type name, including nul */
#define MNAMELEN 32 /* length of buffer for returned name */
struct statfs {
short f_type; /* type of file system (unused; zero) */
short f_flags; /* copy of mount flags */
long f_bsize; /* fundamental file system block size */
long f_iosize; /* optimal transfer block size */
long f_blocks; /* total data blocks in file system */
long f_bfree; /* free blocks in fs */
long f_bavail; /* free blocks avail to non-superuser */
long f_files; /* total file nodes in file system */
long f_ffree; /* free file nodes in fs */
fsid_t f_fsid; /* file system id (super-user only) */
uid_t f_owner; /* user that mounted the file system */
long f_spare[4]; /* spare for later */
char f_fstypename[MFSNAMELEN]; /* fs type name */
char f_mntonname[MNAMELEN]; /* directory on which mounted *
/
char f_mntfromname[MNAMELEN]; /* mounted file system */
};
Fields that are undefined for a particular file system are set to -1.
Fstatfs() returns the same information about an open file referenced
by
descriptor fd.
look at the f_fstypename field
vince