1 1.9 hannken /* $NetBSD: ntfs_subr.h,v 1.9 2014/11/13 16:51:53 hannken Exp $ */ 2 1.1 jdolecek 3 1.1 jdolecek /*- 4 1.1 jdolecek * Copyright (c) 1998, 1999 Semen Ustimenko 5 1.1 jdolecek * All rights reserved. 6 1.1 jdolecek * 7 1.1 jdolecek * Redistribution and use in source and binary forms, with or without 8 1.1 jdolecek * modification, are permitted provided that the following conditions 9 1.1 jdolecek * are met: 10 1.1 jdolecek * 1. Redistributions of source code must retain the above copyright 11 1.1 jdolecek * notice, this list of conditions and the following disclaimer. 12 1.1 jdolecek * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 jdolecek * notice, this list of conditions and the following disclaimer in the 14 1.1 jdolecek * documentation and/or other materials provided with the distribution. 15 1.1 jdolecek * 16 1.1 jdolecek * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17 1.1 jdolecek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 1.1 jdolecek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 1.1 jdolecek * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20 1.1 jdolecek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 1.1 jdolecek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 1.1 jdolecek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 1.1 jdolecek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 1.1 jdolecek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 1.1 jdolecek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 1.1 jdolecek * SUCH DAMAGE. 27 1.1 jdolecek * 28 1.1 jdolecek * Id: ntfs_subr.h,v 1.4 1999/05/12 09:43:02 semenu Exp 29 1.1 jdolecek */ 30 1.5 christos #if !defined(_KERNEL) 31 1.5 christos #error not supposed to be exposed to userland. 32 1.5 christos #endif 33 1.1 jdolecek 34 1.1 jdolecek #define VA_LOADED 0x0001 35 1.1 jdolecek #define VA_PRELOADED 0x0002 36 1.1 jdolecek 37 1.1 jdolecek struct ntvattr { 38 1.1 jdolecek LIST_ENTRY(ntvattr) va_list; 39 1.1 jdolecek 40 1.1 jdolecek u_int32_t va_vflag; 41 1.1 jdolecek struct vnode *va_vp; 42 1.1 jdolecek struct ntnode *va_ip; 43 1.1 jdolecek 44 1.1 jdolecek u_int32_t va_flag; 45 1.1 jdolecek u_int32_t va_type; 46 1.1 jdolecek u_int8_t va_namelen; 47 1.1 jdolecek char va_name[NTFS_MAXATTRNAME]; 48 1.1 jdolecek 49 1.1 jdolecek u_int32_t va_compression; 50 1.1 jdolecek u_int32_t va_compressalg; 51 1.3 christos u_int64_t va_datalen; 52 1.3 christos u_int64_t va_allocated; 53 1.1 jdolecek cn_t va_vcnstart; 54 1.1 jdolecek cn_t va_vcnend; 55 1.1 jdolecek u_int16_t va_index; 56 1.1 jdolecek union { 57 1.1 jdolecek struct { 58 1.1 jdolecek cn_t * cn; 59 1.1 jdolecek cn_t * cl; 60 1.1 jdolecek u_long cnt; 61 1.1 jdolecek } vrun; 62 1.6 christos void * datap; 63 1.1 jdolecek struct attr_name *name; 64 1.1 jdolecek struct attr_indexroot *iroot; 65 1.1 jdolecek struct attr_indexalloc *ialloc; 66 1.1 jdolecek } va_d; 67 1.1 jdolecek }; 68 1.1 jdolecek #define va_vruncn va_d.vrun.cn 69 1.1 jdolecek #define va_vruncl va_d.vrun.cl 70 1.1 jdolecek #define va_vruncnt va_d.vrun.cnt 71 1.1 jdolecek #define va_datap va_d.datap 72 1.1 jdolecek #define va_a_name va_d.name 73 1.1 jdolecek #define va_a_iroot va_d.iroot 74 1.1 jdolecek #define va_a_ialloc va_d.ialloc 75 1.1 jdolecek 76 1.6 christos int ntfs_procfixups(struct ntfsmount *, u_int32_t, void *, size_t); 77 1.4 xtraeme int ntfs_parserun(cn_t *, cn_t *, u_int8_t *, u_long, u_long *); 78 1.4 xtraeme int ntfs_runtocn(cn_t *, struct ntfsmount *, u_int8_t *, u_long, cn_t); 79 1.4 xtraeme int ntfs_readntvattr_plain(struct ntfsmount *, struct ntnode *, 80 1.4 xtraeme struct ntvattr *, off_t, size_t, void *,size_t *, struct uio *); 81 1.4 xtraeme int ntfs_readattr_plain(struct ntfsmount *, struct ntnode *, u_int32_t, 82 1.4 xtraeme const char *, off_t, size_t, void *,size_t *, struct uio *); 83 1.4 xtraeme int ntfs_readattr(struct ntfsmount *, struct ntnode *, u_int32_t, 84 1.4 xtraeme const char *, off_t, size_t, void *, struct uio *); 85 1.4 xtraeme struct timespec ntfs_nttimetounix(u_int64_t); 86 1.4 xtraeme int ntfs_ntreaddir(struct ntfsmount *, struct fnode *, u_int32_t, 87 1.4 xtraeme struct attr_indexentry **); 88 1.4 xtraeme int ntfs_runtovrun(cn_t **, cn_t **, u_long *, u_int8_t *); 89 1.4 xtraeme int ntfs_attrtontvattr(struct ntfsmount *, struct ntvattr **, struct attr *); 90 1.4 xtraeme void ntfs_freentvattr(struct ntvattr *); 91 1.6 christos int ntfs_loadntvattrs(struct ntfsmount *, struct vnode *, void *, 92 1.4 xtraeme struct ntvattr **); 93 1.4 xtraeme struct ntvattr * ntfs_findntvattr(struct ntfsmount *, struct ntnode *, 94 1.4 xtraeme u_int32_t, cn_t); 95 1.4 xtraeme int ntfs_ntlookupfile(struct ntfsmount *, struct vnode *, 96 1.4 xtraeme struct componentname *, struct vnode **); 97 1.4 xtraeme int ntfs_isnamepermitted(struct ntfsmount *, struct attr_indexentry *); 98 1.4 xtraeme int ntfs_ntvattrrele(struct ntvattr *); 99 1.4 xtraeme int ntfs_ntvattrget(struct ntfsmount *, struct ntnode *, u_int32_t, 100 1.4 xtraeme const char *, cn_t , struct ntvattr **); 101 1.4 xtraeme int ntfs_ntlookup(struct ntfsmount *, ino_t, struct ntnode **); 102 1.4 xtraeme int ntfs_ntget(struct ntnode *); 103 1.4 xtraeme void ntfs_ntref(struct ntnode *); 104 1.4 xtraeme void ntfs_ntrele(struct ntnode *); 105 1.4 xtraeme void ntfs_ntput(struct ntnode *); 106 1.4 xtraeme int ntfs_loadntnode(struct ntfsmount *, struct ntnode *); 107 1.4 xtraeme int ntfs_writentvattr_plain(struct ntfsmount *, struct ntnode *, 108 1.4 xtraeme struct ntvattr *, off_t, size_t, void *, size_t *, struct uio *); 109 1.4 xtraeme int ntfs_writeattr_plain(struct ntfsmount *, struct ntnode *, u_int32_t, 110 1.4 xtraeme char *, off_t, size_t, void *, size_t *, struct uio *); 111 1.4 xtraeme void ntfs_toupper_init(void); 112 1.4 xtraeme int ntfs_toupper_use(struct mount *, struct ntfsmount *); 113 1.4 xtraeme void ntfs_toupper_unuse(void); 114 1.1 jdolecek 115 1.1 jdolecek /* ntfs_conv.c stuff */ 116 1.1 jdolecek ntfs_wget_func_t ntfs_utf8_wget; 117 1.1 jdolecek ntfs_wput_func_t ntfs_utf8_wput; 118 1.1 jdolecek ntfs_wcmp_func_t ntfs_utf8_wcmp; 119