1*0f9e9ec2Sjsg /* $OpenBSD: ntfs_subr.h,v 1.12 2024/05/13 01:15:53 jsg Exp $ */ 226f3deacStedu /* $NetBSD: ntfs_subr.h,v 1.1 2002/12/23 17:38:33 jdolecek Exp $ */ 326f3deacStedu 426f3deacStedu /*- 526f3deacStedu * Copyright (c) 1998, 1999 Semen Ustimenko 626f3deacStedu * All rights reserved. 726f3deacStedu * 826f3deacStedu * Redistribution and use in source and binary forms, with or without 926f3deacStedu * modification, are permitted provided that the following conditions 1026f3deacStedu * are met: 1126f3deacStedu * 1. Redistributions of source code must retain the above copyright 1226f3deacStedu * notice, this list of conditions and the following disclaimer. 1326f3deacStedu * 2. Redistributions in binary form must reproduce the above copyright 1426f3deacStedu * notice, this list of conditions and the following disclaimer in the 1526f3deacStedu * documentation and/or other materials provided with the distribution. 1626f3deacStedu * 1726f3deacStedu * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1826f3deacStedu * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1926f3deacStedu * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2026f3deacStedu * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2126f3deacStedu * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2226f3deacStedu * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2326f3deacStedu * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2426f3deacStedu * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2526f3deacStedu * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2626f3deacStedu * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2726f3deacStedu * SUCH DAMAGE. 2826f3deacStedu * 2926f3deacStedu * Id: ntfs_subr.h,v 1.4 1999/05/12 09:43:02 semenu Exp 3026f3deacStedu */ 3126f3deacStedu 3226f3deacStedu #define VA_LOADED 0x0001 3326f3deacStedu #define VA_PRELOADED 0x0002 3426f3deacStedu 3526f3deacStedu struct ntvattr { 3626f3deacStedu LIST_ENTRY(ntvattr) va_list; 3726f3deacStedu 3826f3deacStedu u_int32_t va_vflag; 3926f3deacStedu struct vnode *va_vp; 4026f3deacStedu struct ntnode *va_ip; 4126f3deacStedu 4226f3deacStedu u_int32_t va_flag; 4326f3deacStedu u_int32_t va_type; 4426f3deacStedu u_int8_t va_namelen; 4526f3deacStedu char va_name[NTFS_MAXATTRNAME]; 4626f3deacStedu 4726f3deacStedu u_int32_t va_compression; 4826f3deacStedu u_int32_t va_compressalg; 495adbeedcSjsing u_int64_t va_datalen; 505adbeedcSjsing u_int64_t va_allocated; 5126f3deacStedu cn_t va_vcnstart; 5226f3deacStedu cn_t va_vcnend; 5326f3deacStedu u_int16_t va_index; 5426f3deacStedu union { 5526f3deacStedu struct { 5626f3deacStedu cn_t * cn; 5726f3deacStedu cn_t * cl; 5826f3deacStedu u_long cnt; 5926f3deacStedu } vrun; 6026f3deacStedu caddr_t datap; 6126f3deacStedu struct attr_name *name; 6226f3deacStedu struct attr_indexroot *iroot; 6326f3deacStedu struct attr_indexalloc *ialloc; 6426f3deacStedu } va_d; 6526f3deacStedu }; 6626f3deacStedu #define va_vruncn va_d.vrun.cn 6726f3deacStedu #define va_vruncl va_d.vrun.cl 6826f3deacStedu #define va_vruncnt va_d.vrun.cnt 6926f3deacStedu #define va_datap va_d.datap 7026f3deacStedu #define va_a_name va_d.name 7126f3deacStedu #define va_a_iroot va_d.iroot 7226f3deacStedu #define va_a_ialloc va_d.ialloc 7326f3deacStedu 7490337d88Stedu int ntfs_procfixups( struct ntfsmount *, u_int32_t, caddr_t, size_t ); 7590337d88Stedu int ntfs_parserun( cn_t *, cn_t *, u_int8_t *, u_long, u_long *); 7690337d88Stedu int ntfs_runtocn( cn_t *, struct ntfsmount *, u_int8_t *, u_long, cn_t); 7790337d88Stedu int ntfs_readntvattr_plain( struct ntfsmount *, struct ntnode *, struct ntvattr *, off_t, size_t, void *,size_t *, struct uio *); 7890337d88Stedu int ntfs_readattr_plain( struct ntfsmount *, struct ntnode *, u_int32_t, char *, off_t, size_t, void *,size_t *, struct uio *); 7990337d88Stedu int ntfs_readattr( struct ntfsmount *, struct ntnode *, u_int32_t, char *, off_t, size_t, void *, struct uio *); 8090337d88Stedu int ntfs_filesize( struct ntfsmount *, struct fnode *, u_int64_t *, u_int64_t *); 8190337d88Stedu struct timespec ntfs_nttimetounix( u_int64_t ); 8290337d88Stedu int ntfs_runtovrun( cn_t **, cn_t **, u_long *, u_int8_t *); 8390337d88Stedu int ntfs_attrtontvattr( struct ntfsmount *, struct ntvattr **, struct attr * ); 8490337d88Stedu void ntfs_freentvattr( struct ntvattr * ); 8590337d88Stedu int ntfs_isnamepermitted(struct ntfsmount *, struct attr_indexentry * ); 8690337d88Stedu int ntfs_ntvattrrele(struct ntvattr * ); 8790337d88Stedu int ntfs_ntvattrget(struct ntfsmount *, struct ntnode *, u_int32_t, const char *, cn_t , struct ntvattr **); 8890337d88Stedu void ntfs_ntref(struct ntnode *); 8990337d88Stedu void ntfs_ntrele(struct ntnode *); 9090337d88Stedu int ntfs_loadntnode( struct ntfsmount *, struct ntnode * ); 9190337d88Stedu int ntfs_fget(struct ntfsmount *, struct ntnode *, int, char *, struct fnode **); 9290337d88Stedu void ntfs_frele(struct fnode *); 9326f3deacStedu int ntfs_ntreaddir(struct ntfsmount *, struct fnode *, u_int32_t, struct attr_indexentry **, struct proc *); 94db7aa982Smpi int ntfs_ntlookupfile(struct ntfsmount *, struct vnode *, struct componentname *, struct vnode **); 95db7aa982Smpi int ntfs_ntlookup(struct ntfsmount *, ntfsino_t, struct ntnode **); 96db7aa982Smpi int ntfs_ntget(struct ntnode *); 97db7aa982Smpi void ntfs_ntput(struct ntnode *); 98274476fcStedu int ntfs_toupper_use(struct mount *, struct ntfsmount *, struct proc *); 99274476fcStedu void ntfs_toupper_unuse(struct proc *); 10026f3deacStedu 10126f3deacStedu /* ntfs_conv.c stuff */ 10226f3deacStedu ntfs_wget_func_t ntfs_utf8_wget; 10326f3deacStedu ntfs_wput_func_t ntfs_utf8_wput; 10426f3deacStedu ntfs_wcmp_func_t ntfs_utf8_wcmp; 105