1*0bac6265Shannken /* $NetBSD: ntfs_subr.h,v 1.9 2014/11/13 16:51:53 hannken Exp $ */ 29accf4dfSjdolecek 39accf4dfSjdolecek /*- 49accf4dfSjdolecek * Copyright (c) 1998, 1999 Semen Ustimenko 59accf4dfSjdolecek * All rights reserved. 69accf4dfSjdolecek * 79accf4dfSjdolecek * Redistribution and use in source and binary forms, with or without 89accf4dfSjdolecek * modification, are permitted provided that the following conditions 99accf4dfSjdolecek * are met: 109accf4dfSjdolecek * 1. Redistributions of source code must retain the above copyright 119accf4dfSjdolecek * notice, this list of conditions and the following disclaimer. 129accf4dfSjdolecek * 2. Redistributions in binary form must reproduce the above copyright 139accf4dfSjdolecek * notice, this list of conditions and the following disclaimer in the 149accf4dfSjdolecek * documentation and/or other materials provided with the distribution. 159accf4dfSjdolecek * 169accf4dfSjdolecek * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 179accf4dfSjdolecek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 189accf4dfSjdolecek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 199accf4dfSjdolecek * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 209accf4dfSjdolecek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 219accf4dfSjdolecek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 229accf4dfSjdolecek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 239accf4dfSjdolecek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 249accf4dfSjdolecek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 259accf4dfSjdolecek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 269accf4dfSjdolecek * SUCH DAMAGE. 279accf4dfSjdolecek * 289accf4dfSjdolecek * Id: ntfs_subr.h,v 1.4 1999/05/12 09:43:02 semenu Exp 299accf4dfSjdolecek */ 304bffed72Schristos #if !defined(_KERNEL) 314bffed72Schristos #error not supposed to be exposed to userland. 324bffed72Schristos #endif 339accf4dfSjdolecek 349accf4dfSjdolecek #define VA_LOADED 0x0001 359accf4dfSjdolecek #define VA_PRELOADED 0x0002 369accf4dfSjdolecek 379accf4dfSjdolecek struct ntvattr { 389accf4dfSjdolecek LIST_ENTRY(ntvattr) va_list; 399accf4dfSjdolecek 409accf4dfSjdolecek u_int32_t va_vflag; 419accf4dfSjdolecek struct vnode *va_vp; 429accf4dfSjdolecek struct ntnode *va_ip; 439accf4dfSjdolecek 449accf4dfSjdolecek u_int32_t va_flag; 459accf4dfSjdolecek u_int32_t va_type; 469accf4dfSjdolecek u_int8_t va_namelen; 479accf4dfSjdolecek char va_name[NTFS_MAXATTRNAME]; 489accf4dfSjdolecek 499accf4dfSjdolecek u_int32_t va_compression; 509accf4dfSjdolecek u_int32_t va_compressalg; 51aa112c89Schristos u_int64_t va_datalen; 52aa112c89Schristos u_int64_t va_allocated; 539accf4dfSjdolecek cn_t va_vcnstart; 549accf4dfSjdolecek cn_t va_vcnend; 559accf4dfSjdolecek u_int16_t va_index; 569accf4dfSjdolecek union { 579accf4dfSjdolecek struct { 589accf4dfSjdolecek cn_t * cn; 599accf4dfSjdolecek cn_t * cl; 609accf4dfSjdolecek u_long cnt; 619accf4dfSjdolecek } vrun; 6253524e44Schristos void * datap; 639accf4dfSjdolecek struct attr_name *name; 649accf4dfSjdolecek struct attr_indexroot *iroot; 659accf4dfSjdolecek struct attr_indexalloc *ialloc; 669accf4dfSjdolecek } va_d; 679accf4dfSjdolecek }; 689accf4dfSjdolecek #define va_vruncn va_d.vrun.cn 699accf4dfSjdolecek #define va_vruncl va_d.vrun.cl 709accf4dfSjdolecek #define va_vruncnt va_d.vrun.cnt 719accf4dfSjdolecek #define va_datap va_d.datap 729accf4dfSjdolecek #define va_a_name va_d.name 739accf4dfSjdolecek #define va_a_iroot va_d.iroot 749accf4dfSjdolecek #define va_a_ialloc va_d.ialloc 759accf4dfSjdolecek 7653524e44Schristos int ntfs_procfixups(struct ntfsmount *, u_int32_t, void *, size_t); 7708fcacf4Sxtraeme int ntfs_parserun(cn_t *, cn_t *, u_int8_t *, u_long, u_long *); 7808fcacf4Sxtraeme int ntfs_runtocn(cn_t *, struct ntfsmount *, u_int8_t *, u_long, cn_t); 7908fcacf4Sxtraeme int ntfs_readntvattr_plain(struct ntfsmount *, struct ntnode *, 8008fcacf4Sxtraeme struct ntvattr *, off_t, size_t, void *,size_t *, struct uio *); 8108fcacf4Sxtraeme int ntfs_readattr_plain(struct ntfsmount *, struct ntnode *, u_int32_t, 8208fcacf4Sxtraeme const char *, off_t, size_t, void *,size_t *, struct uio *); 8308fcacf4Sxtraeme int ntfs_readattr(struct ntfsmount *, struct ntnode *, u_int32_t, 8408fcacf4Sxtraeme const char *, off_t, size_t, void *, struct uio *); 8508fcacf4Sxtraeme struct timespec ntfs_nttimetounix(u_int64_t); 8608fcacf4Sxtraeme int ntfs_ntreaddir(struct ntfsmount *, struct fnode *, u_int32_t, 8708fcacf4Sxtraeme struct attr_indexentry **); 8808fcacf4Sxtraeme int ntfs_runtovrun(cn_t **, cn_t **, u_long *, u_int8_t *); 8908fcacf4Sxtraeme int ntfs_attrtontvattr(struct ntfsmount *, struct ntvattr **, struct attr *); 9008fcacf4Sxtraeme void ntfs_freentvattr(struct ntvattr *); 9153524e44Schristos int ntfs_loadntvattrs(struct ntfsmount *, struct vnode *, void *, 9208fcacf4Sxtraeme struct ntvattr **); 9308fcacf4Sxtraeme struct ntvattr * ntfs_findntvattr(struct ntfsmount *, struct ntnode *, 9408fcacf4Sxtraeme u_int32_t, cn_t); 9508fcacf4Sxtraeme int ntfs_ntlookupfile(struct ntfsmount *, struct vnode *, 9608fcacf4Sxtraeme struct componentname *, struct vnode **); 9708fcacf4Sxtraeme int ntfs_isnamepermitted(struct ntfsmount *, struct attr_indexentry *); 9808fcacf4Sxtraeme int ntfs_ntvattrrele(struct ntvattr *); 9908fcacf4Sxtraeme int ntfs_ntvattrget(struct ntfsmount *, struct ntnode *, u_int32_t, 10008fcacf4Sxtraeme const char *, cn_t , struct ntvattr **); 10108fcacf4Sxtraeme int ntfs_ntlookup(struct ntfsmount *, ino_t, struct ntnode **); 10208fcacf4Sxtraeme int ntfs_ntget(struct ntnode *); 10308fcacf4Sxtraeme void ntfs_ntref(struct ntnode *); 10408fcacf4Sxtraeme void ntfs_ntrele(struct ntnode *); 10508fcacf4Sxtraeme void ntfs_ntput(struct ntnode *); 10608fcacf4Sxtraeme int ntfs_loadntnode(struct ntfsmount *, struct ntnode *); 10708fcacf4Sxtraeme int ntfs_writentvattr_plain(struct ntfsmount *, struct ntnode *, 10808fcacf4Sxtraeme struct ntvattr *, off_t, size_t, void *, size_t *, struct uio *); 10908fcacf4Sxtraeme int ntfs_writeattr_plain(struct ntfsmount *, struct ntnode *, u_int32_t, 11008fcacf4Sxtraeme char *, off_t, size_t, void *, size_t *, struct uio *); 11108fcacf4Sxtraeme void ntfs_toupper_init(void); 11208fcacf4Sxtraeme int ntfs_toupper_use(struct mount *, struct ntfsmount *); 11308fcacf4Sxtraeme void ntfs_toupper_unuse(void); 1149accf4dfSjdolecek 1159accf4dfSjdolecek /* ntfs_conv.c stuff */ 1169accf4dfSjdolecek ntfs_wget_func_t ntfs_utf8_wget; 1179accf4dfSjdolecek ntfs_wput_func_t ntfs_utf8_wput; 1189accf4dfSjdolecek ntfs_wcmp_func_t ntfs_utf8_wcmp; 119