blob: d671883c3adda4e4ca955350a761e1630be30a15 [file] [log] [blame]
* Copyright (c) 2000-2001 Silicon Graphics, Inc.
* All Rights Reserved.
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation.
* This program is distributed in the hope that it would be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef DIRATTR_H
#define DIRATTR_H
/* dah_t - handle to registered directory attributes
* a special handle is reserved for the caller's convenience,
* to indicate no directory attributes have been registered.
typedef size32_t dah_t;
/* dirattr_init - creates the directory attributes registry.
* resync indicates if an existing context should be re-opened.
* returns FALSE if an error encountered. if NOT resync,
* dircnt hints at number of directories to expect.
extern bool_t dirattr_init( char *housekeepingdir,
bool_t resync,
u_int64_t dircnt );
/* dirattr_cleanup - removes all traces
extern void dirattr_cleanup( void );
/* dirattr_add - registers a directory's attributes. knows how to interpret
* the filehdr. returns handle for use with dirattr_get_...().
extern dah_t dirattr_add( filehdr_t *fhdrp );
/* dirattr_update - modifies existing registered attributes
extern void dirattr_update( dah_t dah, filehdr_t *fhdrp );
/* dirattr_del - frees dirattr no longer needed
extern void dirattr_del( dah_t dah );
/* dirattr_get_... - retrieve various attributes
mode_t dirattr_get_mode( dah_t dah );
uid_t dirattr_get_uid( dah_t dah );
gid_t dirattr_get_gid( dah_t dah );
time32_t dirattr_get_atime( dah_t dah );
time32_t dirattr_get_mtime( dah_t dah );
time32_t dirattr_get_ctime( dah_t dah );
u_int32_t dirattr_get_xflags( dah_t dah );
u_int32_t dirattr_get_extsize( dah_t dah );
u_int32_t dirattr_get_projid( dah_t dah );
u_int32_t dirattr_get_dmevmask( dah_t dah );
u_int32_t dirattr_get_dmstate( dah_t dah );
/* dirattr_flush - flush dirattr I/O buffer. Returns 0 if successful.
extern rv_t dirattr_flush( void );
/* dirattr_addextattr - record an extended attribute. second argument is
* ptr to extattrhdr_t, with extattr name and value appended as
* described by hdr.
extern void dirattr_addextattr( dah_t dah, extattrhdr_t *ahdrp );
/* dirattr_cb_extattr - calls back for every extended attribute associated with
* the given dah. stops iteration and returnd FALSE if cbfunc returns FALSE,
* else returns TRUE.
extern bool_t dirattr_cb_extattr( dah_t dah,
bool_t ( * cbfunc )( extattrhdr_t *ahdrp,
void *ctxp ),
extattrhdr_t *ahdrp,
void *ctxp );
#endif /* DIRATTR_H */