63 lines
2.3 KiB
C
63 lines
2.3 KiB
C
/****************************************************************************
|
|
|
|
|
| Userspace boundary for NSS Macintosh namespace metadata.
|
|
|
|
|
| The NSS MAC namespace stores Finder metadata as RVD_MAC_META_DATA and
|
|
| resource forks as the data stream named MAC_RF. This boundary maps those
|
|
| semantics to Netatalk's adouble:ea host representation for OtherFS userspace
|
|
| providers, per object, without extending netware.metadata.
|
|
+-------------------------------------------------------------------------*/
|
|
#ifndef _MACNSPACE_USERSPACE_H_
|
|
#define _MACNSPACE_USERSPACE_H_
|
|
|
|
#include <stddef.h>
|
|
#include <sys/types.h>
|
|
|
|
#include <public/zParams.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define NSS_MAC_NETATALK_METADATA_XATTR "org.netatalk.Metadata"
|
|
#define NSS_MAC_NETATALK_RESOURCE_XATTR "org.netatalk.ResourceFork"
|
|
#define NSS_MAC_NETATALK_METADATA_HOST_XATTR "user.org.netatalk.Metadata"
|
|
#define NSS_MAC_NETATALK_RESOURCE_HOST_XATTR "user.org.netatalk.ResourceFork"
|
|
#define NSS_MAC_RESOURCE_FORK_STREAM_NAME "MAC_RF"
|
|
|
|
#define NSS_MAC_NETATALK_AD_MAGIC 0x00051607u
|
|
#define NSS_MAC_NETATALK_AD_VERSION_EA 0x00020002u
|
|
#define NSS_MAC_NETATALK_METADATA_SIZE 402u
|
|
#define NSS_MAC_NETATALK_FINDER_INFO_SIZE 32u
|
|
|
|
const char *NssMacUserspaceMetadataXattrName(void);
|
|
const char *NssMacUserspaceResourceForkXattrName(void);
|
|
const char *NssMacUserspaceMetadataHostXattrName(void);
|
|
const char *NssMacUserspaceResourceForkHostXattrName(void);
|
|
const char *NssMacUserspaceResourceForkStreamName(void);
|
|
|
|
void NssMacUserspaceInitDefaultMacInfo(zMacInfo_s *macInfo, int isDirectory);
|
|
int NssMacUserspaceBuildNetatalkMetadata(const zMacInfo_s *macInfo,
|
|
unsigned char *buffer,
|
|
size_t bufferSize);
|
|
int NssMacUserspaceParseNetatalkMetadata(const unsigned char *buffer,
|
|
size_t bufferSize,
|
|
zMacInfo_s *macInfo);
|
|
|
|
int NssMacUserspaceWriteNetatalkMetadata(const char *path,
|
|
const zMacInfo_s *macInfo);
|
|
int NssMacUserspaceReadNetatalkMetadata(const char *path,
|
|
zMacInfo_s *macInfo);
|
|
int NssMacUserspaceWriteResourceFork(const char *path,
|
|
const void *data,
|
|
size_t dataSize);
|
|
ssize_t NssMacUserspaceReadResourceFork(const char *path,
|
|
void *data,
|
|
size_t dataSize);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _MACNSPACE_USERSPACE_H_ */
|