1/* 2 * Copyright (c) 2006-2007 Troeglazov Gerasim (3dEyes**) 3 * 4 * This program/include file is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License as published 6 * by the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program/include file is distributed in the hope that it will be 10 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty 11 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program (in the main directory of the Linux-NTFS 16 * distribution in the file COPYING); if not, write to the Free Software 17 * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 */ 19#ifndef _NTFS_H 20#define _NTFS_H 21 22 23#ifdef __cplusplus 24extern "C" { 25#endif 26 27 28#include <fs_attr.h> 29#include <fs_cache.h> 30#include <fs_info.h> 31#include <fs_interface.h> 32#include <fs_info.h> 33#include <fs_index.h> 34#include <fs_query.h> 35#include <fs_volume.h> 36#include <lock.h> 37#include <NodeMonitor.h> 38#include <util/kernel_cpp.h> 39 40#include "config.h" 41#include "attrib.h" 42#include "inode.h" 43#include "volume.h" 44#include "dir.h" 45#include "unistr.h" 46#include "layout.h" 47#include "index.h" 48#include "utils.h" 49#include "ntfstime.h" 50#include "misc.h" 51#include "utils.h" 52#include "bootsect.h" 53 54#include "lock.h" 55#include "ntfsdir.h" 56 57#define TRACE(...) ; 58//#define TRACE dprintf 59#define ERROR dprintf 60 61#define DEV_FD(dev) (*(int *)dev->d_private) 62 63#define LOCK_VOL(vol) \ 64{ \ 65if (vol == NULL) { \ 66 return EINVAL; \ 67} \ 68\ 69LOCK((vol)->vlock); \ 70} 71 72#define UNLOCK_VOL(vol) \ 73{ \ 74UNLOCK((vol)->vlock); \ 75} 76 77typedef enum { 78 NF_FreeClustersOutdate = (1 << 0), // Information about amount of free clusters is outdated. 79 NF_FreeMFTOutdate = (1 << 1), // Information about amount of free MFT records is outdated. 80} ntfs_state_bits; 81 82 83typedef struct vnode { 84 u64 vnid; 85 u64 parent_vnid; 86 char *mime; 87} vnode; 88 89typedef struct filecookie { 90 int omode; 91 off_t last_size; 92} filecookie; 93 94typedef struct attrcookie { 95 int omode; 96 ino_t vnid; 97 ntfschar* uname; 98 int uname_len; 99 uint32 type; 100} attrcookie; 101 102typedef struct attrdircookie { 103 ntfs_inode* inode; 104 ntfs_attr_search_ctx *ctx; 105} attrdircookie; 106 107#define ntfs_mark_free_space_outdated(ns) (ns->state |= (NF_FreeClustersOutdate | NF_FreeMFTOutdate)); 108 109 110 111typedef struct nspace { 112 ntfs_volume *ntvol; 113 char devicePath[MAX_PATH]; 114 dev_t id; 115 int free_cluster_count; 116 char volumeLabel[MAX_PATH]; 117 ulong flags; 118 int state; 119 s64 free_clusters; 120 long free_mft; 121 BOOL ro; 122 BOOL show_sys_files; 123 BOOL fake_attrib; 124 BOOL silent; 125 BOOL force; 126 BOOL debug; 127 BOOL noatime; 128 BOOL no_detach; 129 lock vlock; 130} nspace; 131 132 133#ifdef __cplusplus 134} 135#endif 136 137 138#endif 139 140