ReactOS  0.4.15-dev-5488-ge316d61
BtrfsPropSheet Class Reference

#include <propsheet.h>

Inheritance diagram for BtrfsPropSheet:
Collaboration diagram for BtrfsPropSheet:

Public Member Functions

 BtrfsPropSheet ()
 
virtual ~BtrfsPropSheet ()
 
HRESULT __stdcall QueryInterface (REFIID riid, void **ppObj)
 
ULONG __stdcall AddRef ()
 
ULONG __stdcall Release ()
 
virtual HRESULT __stdcall Initialize (PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID)
 
virtual HRESULT __stdcall AddPages (LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
 
virtual HRESULT __stdcall ReplacePage (UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam)
 
void init_propsheet (HWND hwndDlg)
 
void change_inode_flag (HWND hDlg, uint64_t flag, UINT state)
 
void change_perm_flag (HWND hDlg, ULONG perm, UINT state)
 
void change_uid (HWND hDlg, uint32_t uid)
 
void change_gid (HWND hDlg, uint32_t gid)
 
void apply_changes (HWND hDlg)
 
void set_size_on_disk (HWND hwndDlg)
 
DWORD search_list_thread ()
 
void do_search (const wstring &fn)
 
void update_size_details_dialog (HWND hDlg)
 
void open_as_admin (HWND hwndDlg)
 
void set_cmdline (const wstring &cmdline)
 

Public Attributes

bool readonly
 
bool can_change_perms
 
bool can_change_nocow
 
WCHAR size_format [255]
 
WCHAR cr_format [255]
 
WCHAR frag_format [255]
 
HANDLE thread
 
uint32_t min_mode
 
uint32_t max_mode
 
uint32_t mode
 
uint32_t mode_set
 
uint64_t min_flags
 
uint64_t max_flags
 
uint64_t flags
 
uint64_t flags_set
 
uint64_t subvol
 
uint64_t inode
 
uint64_t rdev
 
uint8_t type
 
uint8_t min_compression_type
 
uint8_t max_compression_type
 
uint8_t compress_type
 
uint32_t uid
 
uint32_t gid
 
bool various_subvols
 
bool various_inodes
 
bool various_types
 
bool various_uids
 
bool various_gids
 
bool compress_type_changed
 
bool has_subvols
 
bool ro_subvol
 
bool various_ro
 
bool ro_changed
 
bool show_admin_button
 

Private Member Functions

void apply_changes_file (HWND hDlg, const wstring &fn)
 
HRESULT check_file (const wstring &fn, UINT i, UINT num_files, UINT *sv)
 
HRESULT load_file_list ()
 
- Private Member Functions inherited from IShellPropSheetExt
HRESULT AddPages ([in] LPFNSVADDPROPSHEETPAGE pfnAddPage, [in] LPARAM lParam)
 
HRESULT ReplacePage ([in] EXPPS uPageID, [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith, [in] LPARAM lParam)
 

Private Attributes

LONG refcount
 
bool ignore
 
STGMEDIUM stgm
 
bool stgm_set
 
bool flags_changed
 
bool perms_changed
 
bool uid_changed
 
bool gid_changed
 
uint64_t sizes [5]
 
uint64_t totalsize
 
uint64_t allocsize
 
uint64_t sparsesize
 
uint64_t num_extents
 
deque< wstring > search_list
 
wstring filename
 
uint32_t sector_size
 

Additional Inherited Members

- Public Types inherited from IShellExtInit
typedef IShellExtInitLPSHELLEXTINIT
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Private Types inherited from IShellPropSheetExt
enum  tagSHELLPROPSHEETEXTPAGEID { EXPPS_FILETYPES = 0x1 }
 
typedef UINT EXPPS
 
- Private Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 

Detailed Description

Definition at line 91 of file propsheet.h.

Constructor & Destructor Documentation

◆ BtrfsPropSheet()

BtrfsPropSheet::BtrfsPropSheet ( )
inline

Definition at line 93 of file propsheet.h.

93  {
94  refcount = 0;
95  ignore = true;
96  stgm_set = false;
97  readonly = false;
98  flags_changed = false;
99  perms_changed = false;
100  uid_changed = false;
101  gid_changed = false;
102  compress_type_changed = false;
103  ro_changed = false;
104  can_change_perms = false;
105  show_admin_button = false;
106  thread = nullptr;
107  mode = mode_set = 0;
108  flags = flags_set = 0;
109  has_subvols = false;
110  filename = L"";
111 
112  sizes[0] = sizes[1] = sizes[2] = sizes[3] = sizes[4] = 0;
114  num_extents = 0;
115  sector_size = 0;
116  size_format[0] = 0;
117  cr_format[0] = 0;
118  frag_format[0] = 0;
119 
121  }
bool uid_changed
Definition: propsheet.h:189
WCHAR frag_format[255]
Definition: propsheet.h:174
const char * filename
Definition: ioapi.h:137
WCHAR size_format[255]
Definition: propsheet.h:174
uint64_t totalsize
Definition: propsheet.h:190
uint64_t allocsize
Definition: propsheet.h:190
#define L(x)
Definition: ntvdm.h:50
bool has_subvols
Definition: propsheet.h:181
LONG objs_loaded
Definition: main.cpp:48
uint64_t num_extents
Definition: propsheet.h:190
uint32_t sector_size
Definition: propsheet.h:193
uint32_t mode_set
Definition: propsheet.h:176
bool compress_type_changed
Definition: propsheet.h:181
bool perms_changed
Definition: propsheet.h:189
bool gid_changed
Definition: propsheet.h:189
GLbitfield flags
Definition: glext.h:7161
HANDLE thread
Definition: propsheet.h:175
uint64_t sparsesize
Definition: propsheet.h:190
WCHAR cr_format[255]
Definition: propsheet.h:174
bool can_change_perms
Definition: propsheet.h:172
GLenum mode
Definition: glext.h:6217
bool flags_changed
Definition: propsheet.h:189
#define InterlockedIncrement
Definition: armddk.h:53
uint64_t sizes[5]
Definition: propsheet.h:190
bool show_admin_button
Definition: propsheet.h:181
uint64_t flags_set
Definition: propsheet.h:177

◆ ~BtrfsPropSheet()

virtual BtrfsPropSheet::~BtrfsPropSheet ( )
inlinevirtual

Definition at line 123 of file propsheet.h.

123  {
124  if (stgm_set) {
125  GlobalUnlock(stgm.hGlobal);
127  }
128 
130  }
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
Definition: ole2.c:2033
LONG objs_loaded
Definition: main.cpp:48
#define InterlockedDecrement
Definition: armddk.h:52
STGMEDIUM stgm
Definition: propsheet.h:187
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
Definition: heapmem.c:1190

Member Function Documentation

◆ AddPages()

HRESULT __stdcall BtrfsPropSheet::AddPages ( LPFNADDPROPSHEETPAGE  pfnAddPage,
LPARAM  lParam 
)
virtual

Definition at line 1317 of file propsheet.cpp.

1317  {
1318  try {
1319  PROPSHEETPAGEW psp;
1320  HPROPSHEETPAGE hPage;
1321  INITCOMMONCONTROLSEX icex;
1322 
1323  if (ignore)
1324  return S_OK;
1325 
1326  icex.dwSize = sizeof(icex);
1327  icex.dwICC = ICC_LINK_CLASS;
1328 
1329  if (!InitCommonControlsEx(&icex))
1331 
1332  psp.dwSize = sizeof(psp);
1334  psp.hInstance = module;
1336  psp.hIcon = 0;
1339  psp.pcRefParent = (UINT*)&objs_loaded;
1340  psp.pfnCallback = nullptr;
1341  psp.lParam = (LPARAM)this;
1342 
1343  hPage = CreatePropertySheetPageW(&psp);
1344 
1345  if (hPage) {
1346  if (pfnAddPage(hPage, lParam)) {
1347  this->AddRef();
1348  return S_OK;
1349  } else
1350  DestroyPropertySheetPage(hPage);
1351  } else
1352  return E_OUTOFMEMORY;
1353  } catch (const exception& e) {
1354  error_message(nullptr, e.what());
1355  }
1356 
1357  return E_FAIL;
1358 }
HMODULE module
Definition: main.cpp:47
LPCWSTR pszTemplate
Definition: prsht.h:218
#define IDD_PROP_SHEET
Definition: resource.h:15
BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE hPropPage)
Definition: propsheet.c:3144
#define IDS_INITCOMMONCONTROLSEX_FAILED
Definition: resource.h:205
#define E_FAIL
Definition: ddrawi.h:102
void error_message(HWND hwnd, const char *msg)
Definition: main.cpp:783
DWORD dwSize
Definition: prsht.h:214
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
DLGPROC pfnDlgProc
Definition: prsht.h:226
#define e
Definition: ke_i.h:82
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
LONG_PTR LPARAM
Definition: windef.h:208
LPCWSTR pszTitle
Definition: prsht.h:225
HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage)
Definition: propsheet.c:3075
#define PSP_USEREFPARENT
Definition: prsht.h:29
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:893
LPARAM lParam
Definition: prsht.h:227
HINSTANCE hInstance
Definition: prsht.h:216
#define PSP_USETITLE
Definition: prsht.h:26
INT_PTR(CALLBACK * DLGPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2886
HICON hIcon
Definition: prsht.h:222
#define S_OK
Definition: intsafe.h:52
ULONG __stdcall AddRef()
Definition: propsheet.h:136
unsigned int UINT
Definition: ndis.h:50
struct _PROPSHEETPAGEW *UINT * pcRefParent
Definition: prsht.h:228
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
LONG objs_loaded
Definition: main.cpp:48
LPARAM lParam
Definition: combotst.c:139
DWORD dwFlags
Definition: prsht.h:215
static INT_PTR CALLBACK PropSheetDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: propsheet.cpp:1102
#define ICC_LINK_CLASS
Definition: commctrl.h:74
#define IDS_PROP_SHEET_TITLE
Definition: resource.h:16

◆ AddRef()

ULONG __stdcall BtrfsPropSheet::AddRef ( void  )
inline

Implements IUnknown.

Definition at line 136 of file propsheet.h.

136  {
138  }
#define InterlockedIncrement
Definition: armddk.h:53

Referenced by AddPages(), and QueryInterface().

◆ apply_changes()

void BtrfsPropSheet::apply_changes ( HWND  hDlg)

Definition at line 698 of file propsheet.cpp.

698  {
699  UINT num_files, i;
700  WCHAR fn[MAX_PATH]; // FIXME - is this long enough?
701 
702  if (various_uids)
703  uid_changed = false;
704 
705  if (various_gids)
706  gid_changed = false;
707 
709  return;
710 
711  if (filename[0] != 0)
713  else {
714  num_files = DragQueryFileW((HDROP)stgm.hGlobal, 0xFFFFFFFF, nullptr, 0);
715 
716  for (i = 0; i < num_files; i++) {
717  if (DragQueryFileW((HDROP)stgm.hGlobal, i, fn, sizeof(fn) / sizeof(WCHAR))) {
718  apply_changes_file(hDlg, fn);
719  }
720  }
721  }
722 
723  flags_changed = false;
724  perms_changed = false;
725  uid_changed = false;
726  gid_changed = false;
727  ro_changed = false;
728 }
bool uid_changed
Definition: propsheet.h:189
bool various_gids
Definition: propsheet.h:181
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
const char * filename
Definition: ioapi.h:137
void apply_changes_file(HWND hDlg, const wstring &fn)
Definition: propsheet.cpp:615
bool various_uids
Definition: propsheet.h:181
bool compress_type_changed
Definition: propsheet.h:181
__wchar_t WCHAR
Definition: xmlstorage.h:180
bool perms_changed
Definition: propsheet.h:189
#define MAX_PATH
Definition: compat.h:34
bool gid_changed
Definition: propsheet.h:189
STGMEDIUM stgm
Definition: propsheet.h:187
bool flags_changed
Definition: propsheet.h:189
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: ndis.h:50
UINT WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszwFile, UINT lLength)
Definition: shellole.c:622

Referenced by PropSheetDlgProc().

◆ apply_changes_file()

void BtrfsPropSheet::apply_changes_file ( HWND  hDlg,
const wstring &  fn 
)
private

Definition at line 615 of file propsheet.cpp.

615  {
616  win_handle h;
620  btrfs_inode_info bii2;
622 
623  if (flags_changed || ro_changed)
624  perms |= FILE_WRITE_ATTRIBUTES;
625 
627  perms |= WRITE_DAC;
628 
629  if (mode_set & S_ISUID && (((min_mode & S_ISUID) != (max_mode & S_ISUID)) || ((min_mode & S_ISUID) != (mode & S_ISUID))))
630  perms |= WRITE_OWNER;
631 
632  h = CreateFileW(fn.c_str(), perms, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr,
634 
635  if (h == INVALID_HANDLE_VALUE)
636  throw last_error(GetLastError());
637 
638  ZeroMemory(&bsii, sizeof(btrfs_set_inode_info));
639 
640  Status = NtFsControlFile(h, nullptr, nullptr, nullptr, &iosb, FSCTL_BTRFS_GET_INODE_INFO, nullptr, 0, &bii2, sizeof(btrfs_inode_info));
641 
642  if (!NT_SUCCESS(Status))
643  throw ntstatus_error(Status);
644 
645  if (bii2.inode == SUBVOL_ROOT_INODE && ro_changed) {
647  FILE_BASIC_INFO fbi;
648 
649  if (!GetFileInformationByHandle(h, &bhfi))
650  throw last_error(GetLastError());
651 
652  memset(&fbi, 0, sizeof(fbi));
653  fbi.FileAttributes = bhfi.dwFileAttributes;
654 
655  if (ro_subvol)
656  fbi.FileAttributes |= FILE_ATTRIBUTE_READONLY;
657  else
658  fbi.FileAttributes &= ~FILE_ATTRIBUTE_READONLY;
659 
660  Status = NtSetInformationFile(h, &iosb, &fbi, sizeof(FILE_BASIC_INFO), FileBasicInformation);
661  if (!NT_SUCCESS(Status))
662  throw ntstatus_error(Status);
663  }
664 
666  if (flags_changed) {
667  bsii.flags_changed = true;
668  bsii.flags = (bii2.flags & ~flags_set) | (flags & flags_set);
669  }
670 
671  if (perms_changed) {
672  bsii.mode_changed = true;
673  bsii.st_mode = (bii2.st_mode & ~mode_set) | (mode & mode_set);
674  }
675 
676  if (uid_changed) {
677  bsii.uid_changed = true;
678  bsii.st_uid = uid;
679  }
680 
681  if (gid_changed) {
682  bsii.gid_changed = true;
683  bsii.st_gid = gid;
684  }
685 
686  if (compress_type_changed) {
687  bsii.compression_type_changed = true;
689  }
690 
691  Status = NtFsControlFile(h, nullptr, nullptr, nullptr, &iosb, FSCTL_BTRFS_SET_INODE_INFO, &bsii, sizeof(btrfs_set_inode_info), nullptr, 0);
692 
693  if (!NT_SUCCESS(Status))
694  throw ntstatus_error(Status);
695  }
696 }
static PIO_STATUS_BLOCK iosb
Definition: file.c:98
bool uid_changed
Definition: propsheet.h:189
uint8_t compression_type
Definition: btrfsioctl.h:98
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
#define SUBVOL_ROOT_INODE
Definition: propsheet.cpp:42
LONG NTSTATUS
Definition: precomp.h:26
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
#define ZeroMemory
Definition: winbase.h:1670
#define WRITE_OWNER
Definition: nt_native.h:60
#define FILE_SHARE_WRITE
Definition: nt_native.h:681
#define FILE_WRITE_ATTRIBUTES
Definition: nt_native.h:649
uint32_t st_mode
Definition: btrfsioctl.h:76
#define FILE_SHARE_READ
Definition: compat.h:136
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
#define FILE_TRAVERSE
Definition: nt_native.h:643
uint32_t uid
Definition: propsheet.h:180
#define OPEN_EXISTING
Definition: compat.h:775
uint32_t mode_set
Definition: propsheet.h:176
Status
Definition: gdiplustypes.h:24
bool compress_type_changed
Definition: propsheet.h:181
NTSYSAPI NTSTATUS NTAPI NtFsControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
BOOL WINAPI GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
Definition: fileinfo.c:458
uint32_t min_mode
Definition: propsheet.h:176
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
bool perms_changed
Definition: propsheet.h:189
#define FILE_ATTRIBUTE_READONLY
Definition: nt_native.h:702
bool gid_changed
Definition: propsheet.h:189
#define WRITE_DAC
Definition: nt_native.h:59
uint64_t flags
Definition: btrfsioctl.h:78
GLbitfield flags
Definition: glext.h:7161
BOOL compression_type_changed
Definition: btrfsioctl.h:99
#define FILE_READ_ATTRIBUTES
Definition: nt_native.h:647
#define FILE_SHARE_DELETE
Definition: nt_native.h:682
uint64_t inode
Definition: btrfsioctl.h:71
#define FSCTL_BTRFS_SET_INODE_INFO
Definition: btrfsioctl.h:11
GLenum mode
Definition: glext.h:6217
uint8_t compress_type
Definition: propsheet.h:179
uint32_t gid
Definition: propsheet.h:180
bool flags_changed
Definition: propsheet.h:189
#define S_ISUID
Definition: propsheet.h:65
#define FSCTL_BTRFS_GET_INODE_INFO
Definition: btrfsioctl.h:10
#define CreateFileW
Definition: compat.h:741
#define FILE_FLAG_BACKUP_SEMANTICS
Definition: disk.h:41
#define FILE_FLAG_OPEN_REPARSE_POINT
Definition: disk.h:39
unsigned int ULONG
Definition: retypes.h:1
uint32_t max_mode
Definition: propsheet.h:176
uint64_t flags_set
Definition: propsheet.h:177
#define memset(x, y, z)
Definition: compat.h:39
NTSYSAPI NTSTATUS NTAPI NtSetInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
Definition: iofunc.c:3096

Referenced by apply_changes().

◆ change_gid()

void BtrfsPropSheet::change_gid ( HWND  hDlg,
uint32_t  gid 
)

Definition at line 796 of file propsheet.cpp.

796  {
797  if (this->gid != gid) {
798  this->gid = gid;
799  gid_changed = true;
800 
801  SendMessageW(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0);
802  }
803 }
UINT_PTR WPARAM
Definition: windef.h:207
bool gid_changed
Definition: propsheet.h:189
uint32_t gid
Definition: propsheet.h:180
HWND WINAPI GetParent(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define PSM_CHANGED
Definition: prsht.h:164

Referenced by PropSheetDlgProc().

◆ change_inode_flag()

void BtrfsPropSheet::change_inode_flag ( HWND  hDlg,
uint64_t  flag,
UINT  state 
)

Definition at line 586 of file propsheet.cpp.

586  {
589 
590  if (state == BST_CHECKED) {
591  flags |= flag;
592  flags_set |= flag;
593  } else if (state == BST_UNCHECKED) {
594  flags &= ~flag;
595  flags_set |= flag;
596  } else if (state == BST_INDETERMINATE) {
597  flags_set = ~flag;
598  }
599 
601  EnableWindow(GetDlgItem(hDlg, IDC_COMPRESS), false);
603  } else {
604  EnableWindow(GetDlgItem(hDlg, IDC_COMPRESS), true);
606  }
607 
609 
610  flags_changed = true;
611 
612  SendMessageW(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0);
613 }
#define BTRFS_INODE_NODATACOW
Definition: propsheet.h:77
UINT_PTR WPARAM
Definition: windef.h:207
#define BST_INDETERMINATE
Definition: winuser.h:198
#define IDC_COMPRESS
Definition: resource.h:224
#define BTRFS_INODE_COMPRESS
Definition: propsheet.h:87
#define IDC_NODATACOW
Definition: resource.h:220
#define IDC_COMPRESS_TYPE
Definition: resource.h:318
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define BTRFS_INODE_NODATASUM
Definition: propsheet.h:76
GLbitfield flags
Definition: glext.h:7161
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
static int state
Definition: maze.c:121
#define BST_UNCHECKED
Definition: winuser.h:199
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HWND WINAPI GetParent(_In_ HWND)
bool flags_changed
Definition: propsheet.h:189
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define PSM_CHANGED
Definition: prsht.h:164
#define BST_CHECKED
Definition: winuser.h:197
uint64_t flags_set
Definition: propsheet.h:177

Referenced by PropSheetDlgProc().

◆ change_perm_flag()

void BtrfsPropSheet::change_perm_flag ( HWND  hDlg,
ULONG  perm,
UINT  state 
)

Definition at line 771 of file propsheet.cpp.

771  {
772  if (state == BST_CHECKED) {
773  mode |= flag;
774  mode_set |= flag;
775  } else if (state == BST_UNCHECKED) {
776  mode &= ~flag;
777  mode_set |= flag;
778  } else if (state == BST_INDETERMINATE) {
779  mode_set = ~flag;
780  }
781 
782  perms_changed = true;
783 
784  SendMessageW(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0);
785 }
UINT_PTR WPARAM
Definition: windef.h:207
#define BST_INDETERMINATE
Definition: winuser.h:198
uint32_t mode_set
Definition: propsheet.h:176
bool perms_changed
Definition: propsheet.h:189
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
static int state
Definition: maze.c:121
GLenum mode
Definition: glext.h:6217
#define BST_UNCHECKED
Definition: winuser.h:199
HWND WINAPI GetParent(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define PSM_CHANGED
Definition: prsht.h:164
#define BST_CHECKED
Definition: winuser.h:197

Referenced by PropSheetDlgProc().

◆ change_uid()

void BtrfsPropSheet::change_uid ( HWND  hDlg,
uint32_t  uid 
)

Definition at line 787 of file propsheet.cpp.

787  {
788  if (this->uid != uid) {
789  this->uid = uid;
790  uid_changed = true;
791 
792  SendMessageW(GetParent(hDlg), PSM_CHANGED, (WPARAM)hDlg, 0);
793  }
794 }
bool uid_changed
Definition: propsheet.h:189
UINT_PTR WPARAM
Definition: windef.h:207
uint32_t uid
Definition: propsheet.h:180
HWND WINAPI GetParent(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define PSM_CHANGED
Definition: prsht.h:164

Referenced by PropSheetDlgProc().

◆ check_file()

HRESULT BtrfsPropSheet::check_file ( const wstring &  fn,
UINT  i,
UINT  num_files,
UINT sv 
)
private

Definition at line 172 of file propsheet.cpp.

172  {
173  win_handle h;
178  btrfs_inode_info bii2;
179 
182 
183  if (h == INVALID_HANDLE_VALUE)
184  return E_FAIL;
185 
187  if (!NT_SUCCESS(Status))
188  return E_FAIL;
189 
192 
194 
195  if (!readonly && num_files == 1 && !can_change_perms)
196  show_admin_button = true;
197 
200 
201  memset(&bii2, 0, sizeof(bii2));
202 
203  Status = NtFsControlFile(h, nullptr, nullptr, nullptr, &iosb, FSCTL_BTRFS_GET_INODE_INFO, nullptr, 0, &bii2, sizeof(btrfs_inode_info));
204 
205  if (NT_SUCCESS(Status) && !bii2.top) {
206  LARGE_INTEGER filesize;
207 
208  if (i == 0) {
209  subvol = bii2.subvol;
210  inode = bii2.inode;
211  type = bii2.type;
212  uid = bii2.st_uid;
213  gid = bii2.st_gid;
214  rdev = bii2.st_rdev;
215  } else {
216  if (subvol != bii2.subvol)
217  various_subvols = true;
218 
219  if (inode != bii2.inode)
220  various_inodes = true;
221 
222  if (type != bii2.type)
223  various_types = true;
224 
225  if (uid != bii2.st_uid)
226  various_uids = true;
227 
228  if (gid != bii2.st_gid)
229  various_gids = true;
230  }
231 
232  if (bii2.inline_length > 0) {
233  totalsize += bii2.inline_length;
234  sizes[0] += bii2.inline_length;
235  }
236 
237  if (bii2.disk_size_uncompressed > 0) {
239  sizes[1] += bii2.disk_size_uncompressed;
240  }
241 
242  if (bii2.disk_size_zlib > 0) {
243  totalsize += bii2.disk_size_zlib;
244  sizes[2] += bii2.disk_size_zlib;
245  }
246 
247  if (bii2.disk_size_lzo > 0) {
248  totalsize += bii2.disk_size_lzo;
249  sizes[3] += bii2.disk_size_lzo;
250  }
251 
252  if (bii2.disk_size_zstd > 0) {
253  totalsize += bii2.disk_size_zstd;
254  sizes[4] += bii2.disk_size_zstd;
255  }
256 
257  sparsesize += bii2.sparse_size;
258  num_extents += bii2.num_extents == 0 ? 0 : (bii2.num_extents - 1);
259 
261 
263 
264  if (!NT_SUCCESS(Status))
265  throw ntstatus_error(Status);
266 
267  if (bii2.inline_length > 0)
269  else
271 
272  min_mode |= ~bii2.st_mode;
273  max_mode |= bii2.st_mode;
274  min_flags |= ~bii2.flags;
275  max_flags |= bii2.flags;
278 
279  if (bii2.inode == SUBVOL_ROOT_INODE) {
280  bool ro = bhfi.dwFileAttributes & FILE_ATTRIBUTE_READONLY;
281 
282  has_subvols = true;
283 
284  if (*sv == 0)
285  ro_subvol = ro;
286  else {
287  if (ro_subvol != ro)
288  various_ro = true;
289  }
290 
291  (*sv)++;
292  }
293 
294  ignore = false;
295 
296  if (bii2.type != BTRFS_TYPE_DIRECTORY && GetFileSizeEx(h, &filesize)) {
297  if (filesize.QuadPart != 0)
298  can_change_nocow = false;
299  }
300 
301  {
303 
305 
306  if (NT_SUCCESS(Status))
308 
309  if (sector_size == 0)
310  sector_size = 4096;
311  }
312  } else
313  return E_FAIL;
314 
315  return S_OK;
316 }
#define MAXIMUM_ALLOWED
Definition: nt_native.h:83
uint64_t subvol
Definition: propsheet.h:178
static PIO_STATUS_BLOCK iosb
Definition: file.c:98
#define FileAccessInformation
Definition: propsheet.cpp:51
uint64_t disk_size_lzo
Definition: btrfsioctl.h:82
bool various_inodes
Definition: propsheet.h:181
void push_back(const value_type &__t=_STLP_DEFAULT_CONSTRUCTED(_Tp))
Definition: _deque.h:668
bool various_gids
Definition: propsheet.h:181
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
uint8_t max_compression_type
Definition: propsheet.h:179
#define SUBVOL_ROOT_INODE
Definition: propsheet.cpp:42
LONG NTSTATUS
Definition: precomp.h:26
uint32_t st_uid
Definition: btrfsioctl.h:74
NTSYSAPI NTSTATUS NTAPI NtQueryInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, OUT PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
uint64_t max_flags
Definition: propsheet.h:177
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
uint32_t num_extents
Definition: btrfsioctl.h:86
#define FILE_SHARE_WRITE
Definition: nt_native.h:681
#define E_FAIL
Definition: ddrawi.h:102
uint64_t disk_size_zstd
Definition: btrfsioctl.h:84
#define FILE_WRITE_ATTRIBUTES
Definition: nt_native.h:649
uint32_t st_mode
Definition: btrfsioctl.h:76
#define FILE_SHARE_READ
Definition: compat.h:136
uint64_t totalsize
Definition: propsheet.h:190
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
uint64_t allocsize
Definition: propsheet.h:190
Definition: fs.h:78
uint32_t inline_length
Definition: btrfsioctl.h:79
uint32_t st_gid
Definition: btrfsioctl.h:75
uint8_t min_compression_type
Definition: propsheet.h:179
bool has_subvols
Definition: propsheet.h:181
uint64_t min_flags
Definition: propsheet.h:177
#define BTRFS_TYPE_DIRECTORY
Definition: shellext.h:86
uint64_t num_extents
Definition: propsheet.h:190
uint32_t sector_size
Definition: propsheet.h:193
uint64_t st_rdev
Definition: btrfsioctl.h:77
bool various_subvols
Definition: propsheet.h:181
uint32_t uid
Definition: propsheet.h:180
bool various_uids
Definition: propsheet.h:181
#define OPEN_EXISTING
Definition: compat.h:775
#define FILE_ATTRIBUTE_DIRECTORY
Definition: nt_native.h:705
Status
Definition: gdiplustypes.h:24
NTSYSAPI NTSTATUS NTAPI NtFsControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
BOOL WINAPI GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
Definition: fileinfo.c:458
uint32_t min_mode
Definition: propsheet.h:176
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define FILE_ATTRIBUTE_READONLY
Definition: nt_native.h:702
#define WRITE_DAC
Definition: nt_native.h:59
uint64_t disk_size_zlib
Definition: btrfsioctl.h:81
uint64_t flags
Definition: btrfsioctl.h:78
deque< wstring > search_list
Definition: propsheet.h:191
LARGE_INTEGER AllocationSize
Definition: propsheet.cpp:54
#define FILE_READ_ATTRIBUTES
Definition: nt_native.h:647
uint64_t sparsesize
Definition: propsheet.h:190
#define GetFileSizeEx
Definition: compat.h:757
bool can_change_perms
Definition: propsheet.h:172
#define FILE_SHARE_DELETE
Definition: nt_native.h:682
uint64_t inode
Definition: btrfsioctl.h:71
uint32_t gid
Definition: propsheet.h:180
#define S_OK
Definition: intsafe.h:52
NTSTATUS NTAPI NtQueryVolumeInformationFile(HANDLE FileHandle, PIO_STATUS_BLOCK IoStatusBlock, PVOID FsInformation, ULONG Length, FS_INFORMATION_CLASS FsInformationClass)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define FSCTL_BTRFS_GET_INODE_INFO
Definition: btrfsioctl.h:10
uint64_t sizes[5]
Definition: propsheet.h:190
bool various_types
Definition: propsheet.h:181
#define FileStandardInformation
Definition: propsheet.cpp:61
#define CreateFileW
Definition: compat.h:741
#define FILE_FLAG_BACKUP_SEMANTICS
Definition: disk.h:41
#define FILE_FLAG_OPEN_REPARSE_POINT
Definition: disk.h:39
uint8_t compression_type
Definition: btrfsioctl.h:83
bool show_admin_button
Definition: propsheet.h:181
uint32_t max_mode
Definition: propsheet.h:176
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
uint64_t rdev
Definition: propsheet.h:178
uint64_t sparse_size
Definition: btrfsioctl.h:85
#define memset(x, y, z)
Definition: compat.h:39
uint64_t disk_size_uncompressed
Definition: btrfsioctl.h:80
uint64_t subvol
Definition: btrfsioctl.h:70
bool can_change_nocow
Definition: propsheet.h:173
LONGLONG QuadPart
Definition: typedefs.h:114

Referenced by load_file_list().

◆ do_search()

void BtrfsPropSheet::do_search ( const wstring &  fn)

Definition at line 88 of file propsheet.cpp.

88  {
89  wstring ss;
90  WIN32_FIND_DATAW ffd;
91 
92 #ifndef __REACTOS__
93  ss = fn + L"\\*"s;
94 #else
95  ss = fn + wstring(L"\\*");
96 #endif
97 
98  fff_handle h = FindFirstFileW(ss.c_str(), &ffd);
99  if (h == INVALID_HANDLE_VALUE)
100  return;
101 
102  do {
103  if (ffd.cFileName[0] != '.' || ((ffd.cFileName[1] != 0) && (ffd.cFileName[1] != '.' || ffd.cFileName[2] != 0))) {
104  wstring fn2;
105 
106 #ifndef __REACTOS__
107  fn2 = fn + L"\\"s + ffd.cFileName;
108 #else
109  fn2 = fn + wstring(L"\\") + ffd.cFileName;
110 #endif
111 
112  if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
113  search_list.push_back(fn2);
114  else {
117 
118  if (fh != INVALID_HANDLE_VALUE) {
121  btrfs_inode_info bii2;
122 
123  memset(&bii2, 0, sizeof(bii2));
124 
125  Status = NtFsControlFile(fh, nullptr, nullptr, nullptr, &iosb, FSCTL_BTRFS_GET_INODE_INFO, nullptr, 0, &bii2, sizeof(btrfs_inode_info));
126 
127  if (NT_SUCCESS(Status)) {
128  sizes[0] += bii2.inline_length;
129  sizes[1] += bii2.disk_size_uncompressed;
130  sizes[2] += bii2.disk_size_zlib;
131  sizes[3] += bii2.disk_size_lzo;
132  sizes[4] += bii2.disk_size_zstd;
134  sparsesize += bii2.sparse_size;
135  num_extents += bii2.num_extents == 0 ? 0 : (bii2.num_extents - 1);
136  }
137 
139 
140  Status = NtQueryInformationFile(fh, &iosb, &fsi, sizeof(fsi), FileStandardInformation);
141 
142  if (NT_SUCCESS(Status)) {
143  if (bii2.inline_length > 0)
145  else
147  }
148  }
149  }
150  }
151  } while (FindNextFileW(h, &ffd));
152 }
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
Definition: find.c:382
static PIO_STATUS_BLOCK iosb
Definition: file.c:98
uint64_t disk_size_lzo
Definition: btrfsioctl.h:82
void push_back(const value_type &__t=_STLP_DEFAULT_CONSTRUCTED(_Tp))
Definition: _deque.h:668
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
LONG NTSTATUS
Definition: precomp.h:26
NTSYSAPI NTSTATUS NTAPI NtQueryInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, OUT PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
uint32_t num_extents
Definition: btrfsioctl.h:86
#define FILE_SHARE_WRITE
Definition: nt_native.h:681
uint64_t disk_size_zstd
Definition: btrfsioctl.h:84
#define FILE_SHARE_READ
Definition: compat.h:136
uint64_t totalsize
Definition: propsheet.h:190
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
uint64_t allocsize
Definition: propsheet.h:190
#define FILE_TRAVERSE
Definition: nt_native.h:643
#define L(x)
Definition: ntvdm.h:50
uint32_t inline_length
Definition: btrfsioctl.h:79
uint64_t num_extents
Definition: propsheet.h:190
#define OPEN_EXISTING
Definition: compat.h:775
#define FILE_ATTRIBUTE_DIRECTORY
Definition: nt_native.h:705
Status
Definition: gdiplustypes.h:24
NTSYSAPI NTSTATUS NTAPI NtFsControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
uint64_t disk_size_zlib
Definition: btrfsioctl.h:81
deque< wstring > search_list
Definition: propsheet.h:191
LARGE_INTEGER AllocationSize
Definition: propsheet.cpp:54
#define FILE_READ_ATTRIBUTES
Definition: nt_native.h:647
uint64_t sparsesize
Definition: propsheet.h:190
#define FILE_SHARE_DELETE
Definition: nt_native.h:682
GLdouble s
Definition: gl.h:2039
#define FSCTL_BTRFS_GET_INODE_INFO
Definition: btrfsioctl.h:10
uint64_t sizes[5]
Definition: propsheet.h:190
#define FileStandardInformation
Definition: propsheet.cpp:61
#define CreateFileW
Definition: compat.h:741
#define FILE_FLAG_BACKUP_SEMANTICS
Definition: disk.h:41
#define FILE_FLAG_OPEN_REPARSE_POINT
Definition: disk.h:39
#define ss
Definition: i386-dis.c:442
uint64_t sparse_size
Definition: btrfsioctl.h:85
#define memset(x, y, z)
Definition: compat.h:39
uint64_t disk_size_uncompressed
Definition: btrfsioctl.h:80
LONGLONG QuadPart
Definition: typedefs.h:114
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
Definition: find.c:320

Referenced by search_list_thread().

◆ init_propsheet()

void BtrfsPropSheet::init_propsheet ( HWND  hwndDlg)

Definition at line 931 of file propsheet.cpp.

931  {
932  wstring s;
933  ULONG sr;
934  int i;
935  HWND comptype;
936 
941 
942  if (various_subvols) {
944  throw last_error(GetLastError());
945  } else
946  wstring_sprintf(s, L"%llx", subvol);
947 
948  SetDlgItemTextW(hwndDlg, IDC_SUBVOL, s.c_str());
949 
950  if (various_inodes) {
952  throw last_error(GetLastError());
953  } else
954  wstring_sprintf(s, L"%llx", inode);
955 
956  SetDlgItemTextW(hwndDlg, IDC_INODE, s.c_str());
957 
958  if (various_types)
959  sr = IDS_VARIOUS;
960  else
962 
963  if (various_inodes) {
964  if (sr == IDS_INODE_CHAR)
966  else if (sr == IDS_INODE_BLOCK)
968  }
969 
970  if (sr == IDS_INODE_UNKNOWN) {
971  wstring t;
972 
973  if (!load_string(module, sr, t))
974  throw last_error(GetLastError());
975 
976  wstring_sprintf(s, t, type);
977  } else if (sr == IDS_INODE_CHAR || sr == IDS_INODE_BLOCK) {
978  wstring t;
979 
980  if (!load_string(module, sr, t))
981  throw last_error(GetLastError());
982 
984  } else {
985  if (!load_string(module, sr, s))
986  throw last_error(GetLastError());
987  }
988 
989  SetDlgItemTextW(hwndDlg, IDC_TYPE, s.c_str());
990 
991  if (size_format[0] == 0)
992  GetDlgItemTextW(hwndDlg, IDC_SIZE_ON_DISK, size_format, sizeof(size_format) / sizeof(WCHAR));
993 
994  if (cr_format[0] == 0)
995  GetDlgItemTextW(hwndDlg, IDC_COMPRESSION_RATIO, cr_format, sizeof(cr_format) / sizeof(WCHAR));
996 
997  if (frag_format[0] == 0)
998  GetDlgItemTextW(hwndDlg, IDC_FRAGMENTATION, frag_format, sizeof(frag_format) / sizeof(WCHAR));
999 
1000  set_size_on_disk(hwndDlg);
1001 
1002  if (thread)
1003  SetTimer(hwndDlg, 1, 250, nullptr);
1004 
1007 
1009  EnableWindow(GetDlgItem(hwndDlg, IDC_COMPRESS), false);
1011  EnableWindow(GetDlgItem(hwndDlg, IDC_NODATACOW), false);
1012 
1013  comptype = GetDlgItem(hwndDlg, IDC_COMPRESS_TYPE);
1014 
1015  while (SendMessageW(comptype, CB_GETCOUNT, 0, 0) > 0) {
1016  SendMessageW(comptype, CB_DELETESTRING, 0, 0);
1017  }
1018 
1020  SendMessageW(comptype, CB_ADDSTRING, 0, (LPARAM)L"");
1021  SendMessageW(comptype, CB_SETCURSEL, 0, 0);
1022  }
1023 
1024  i = 0;
1025  while (comp_types[i] != 0) {
1026  wstring t;
1027 
1028  if (!load_string(module, comp_types[i], t))
1029  throw last_error(GetLastError());
1030 
1031  SendMessageW(comptype, CB_ADDSTRING, 0, (LPARAM)t.c_str());
1032 
1033  i++;
1034  }
1035 
1039  }
1040 
1042 
1043  i = 0;
1044  while (perm_controls[i] != 0) {
1045  set_check_box(hwndDlg, perm_controls[i], min_mode & perms[i], max_mode & perms[i]);
1046  i++;
1047  }
1048 
1049  if (various_uids) {
1050  if (!load_string(module, IDS_VARIOUS, s))
1051  throw last_error(GetLastError());
1052 
1053  EnableWindow(GetDlgItem(hwndDlg, IDC_UID), 0);
1054  } else
1055  s = to_wstring(uid);
1056 
1057  SetDlgItemTextW(hwndDlg, IDC_UID, s.c_str());
1058 
1059  if (various_gids) {
1060  if (!load_string(module, IDS_VARIOUS, s))
1061  throw last_error(GetLastError());
1062 
1063  EnableWindow(GetDlgItem(hwndDlg, IDC_GID), 0);
1064  } else
1065  s = to_wstring(gid);
1066 
1067  SetDlgItemTextW(hwndDlg, IDC_GID, s.c_str());
1068 
1070 
1071  if (has_subvols)
1073 
1074  if (!can_change_nocow)
1075  EnableWindow(GetDlgItem(hwndDlg, IDC_NODATACOW), 0);
1076 
1077  if (!can_change_perms) {
1078  i = 0;
1079  while (perm_controls[i] != 0) {
1080  EnableWindow(GetDlgItem(hwndDlg, perm_controls[i]), 0);
1081  i++;
1082  }
1083 
1084  EnableWindow(GetDlgItem(hwndDlg, IDC_UID), 0);
1085  EnableWindow(GetDlgItem(hwndDlg, IDC_GID), 0);
1086  EnableWindow(GetDlgItem(hwndDlg, IDC_SETUID), 0);
1087  }
1088 
1089  if (readonly) {
1090  EnableWindow(GetDlgItem(hwndDlg, IDC_NODATACOW), 0);
1091  EnableWindow(GetDlgItem(hwndDlg, IDC_COMPRESS), 0);
1093  }
1094 
1095  if (show_admin_button) {
1096  SendMessageW(GetDlgItem(hwndDlg, IDC_OPEN_ADMIN), BCM_SETSHIELD, 0, true);
1098  } else
1100 }
#define IDS_INODE_UNKNOWN
Definition: resource.h:27
#define IDC_USERW
Definition: resource.h:214
uint64_t subvol
Definition: propsheet.h:178
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
Definition: dialog.c:2263
#define IDC_GROUPR
Definition: resource.h:212
WCHAR frag_format[255]
Definition: propsheet.h:174
#define BTRFS_INODE_NODATACOW
Definition: propsheet.h:77
#define S_ISGID
Definition: propsheet.h:69
#define IDC_UID
Definition: resource.h:209
bool various_inodes
Definition: propsheet.h:181
bool various_gids
Definition: propsheet.h:181
uint8_t max_compression_type
Definition: propsheet.h:179
#define SW_HIDE
Definition: winuser.h:762
#define IDC_USERR
Definition: resource.h:211
#define IDC_FRAGMENTATION
Definition: resource.h:242
uint64_t max_flags
Definition: propsheet.h:177
GLdouble GLdouble t
Definition: gl.h:2047
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
#define IDC_TYPE
Definition: resource.h:223
#define BCM_SETSHIELD
Definition: commctrl.h:4653
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define IDC_SUBVOL_RO
Definition: resource.h:320
#define IDC_USERX
Definition: resource.h:217
WCHAR size_format[255]
Definition: propsheet.h:174
#define IDS_INODE_BLOCK_SIMPLE
Definition: resource.h:40
#define IDC_COMPRESS
Definition: resource.h:224
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
Definition: fs.h:78
#define IDC_GID
Definition: resource.h:210
#define IDS_INODE_CHAR_SIMPLE
Definition: resource.h:39
#define L(x)
Definition: ntvdm.h:50
uint8_t min_compression_type
Definition: propsheet.h:179
bool has_subvols
Definition: propsheet.h:181
#define BTRFS_INODE_COMPRESS
Definition: propsheet.h:87
#define S_IRGRP
Definition: propsheet.h:41
#define S_IXOTH
Definition: propsheet.h:61
#define IDC_NODATACOW
Definition: resource.h:220
uint64_t min_flags
Definition: propsheet.h:177
#define CB_ADDSTRING
Definition: winuser.h:1926
LONG_PTR LPARAM
Definition: windef.h:208
#define IDS_INODE_BLOCK
Definition: resource.h:23
#define IDS_VARIOUS
Definition: resource.h:38
#define SW_SHOW
Definition: winuser.h:769
bool various_subvols
Definition: propsheet.h:181
uint32_t uid
Definition: propsheet.h:180
bool various_uids
Definition: propsheet.h:181
#define IDC_COMPRESS_TYPE
Definition: resource.h:318
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define IDC_GROUPX
Definition: resource.h:218
void wstring_sprintf(wstring &s, wstring fmt,...)
Definition: main.cpp:225
#define S_IWGRP
Definition: propsheet.h:45
#define S_IXGRP
Definition: propsheet.h:49
#define IDC_OTHERW
Definition: resource.h:216
#define S_IWUSR
Definition: propsheet.h:33
void set_size_on_disk(HWND hwndDlg)
Definition: propsheet.cpp:730
uint32_t min_mode
Definition: propsheet.h:176
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
static void set_check_box(HWND hwndDlg, ULONG id, uint64_t min, uint64_t max)
Definition: propsheet.cpp:866
#define IDS_COMPRESS_ZSTD
Definition: resource.h:200
HANDLE thread
Definition: propsheet.h:175
#define IDC_GROUPW
Definition: resource.h:215
WCHAR cr_format[255]
Definition: propsheet.h:174
bool can_change_perms
Definition: propsheet.h:172
#define S_IXUSR
Definition: propsheet.h:37
#define IDC_STICKY
Definition: resource.h:234
#define S_IROTH
Definition: propsheet.h:53
#define IDC_OPEN_ADMIN
Definition: resource.h:276
#define IDC_COMPRESSION_RATIO
Definition: resource.h:240
GLdouble s
Definition: gl.h:2039
#define CB_SETCURSEL
Definition: winuser.h:1951
uint8_t compress_type
Definition: propsheet.h:179
#define S_IWOTH
Definition: propsheet.h:57
uint32_t gid
Definition: propsheet.h:180
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define IDC_SETUID
Definition: resource.h:228
#define IDC_SIZE_ON_DISK
Definition: resource.h:225
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define IDC_SETGID
Definition: resource.h:231
#define S_ISUID
Definition: propsheet.h:65
#define major(rdev)
Definition: propsheet.cpp:928
#define IDC_SUBVOL
Definition: resource.h:221
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IDS_COMPRESS_ANY
Definition: resource.h:124
#define S_IRUSR
Definition: propsheet.h:29
bool various_types
Definition: propsheet.h:181
static int load_string(HINSTANCE hModule, UINT resId, LPWSTR pwszBuffer, INT cMaxChars)
Definition: muireg.c:10
#define IDC_OTHERR
Definition: resource.h:213
static ULONG inode_type_to_string_ref(uint8_t type)
Definition: propsheet.cpp:558
#define IDC_INODE
Definition: resource.h:222
bool show_admin_button
Definition: propsheet.h:181
unsigned int ULONG
Definition: retypes.h:1
#define minor(rdev)
Definition: propsheet.cpp:929
#define IDS_INODE_CHAR
Definition: resource.h:22
#define CB_GETCOUNT
Definition: winuser.h:1932
#define IDS_COMPRESS_ZLIB
Definition: resource.h:125
uint32_t max_mode
Definition: propsheet.h:176
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
uint64_t rdev
Definition: propsheet.h:178
#define CB_DELETESTRING
Definition: winuser.h:1927
#define IDC_OTHERX
Definition: resource.h:219
bool can_change_nocow
Definition: propsheet.h:173
#define IDS_COMPRESS_LZO
Definition: resource.h:126
#define S_ISVTX
Definition: propsheet.h:73

Referenced by open_as_admin().

◆ Initialize()

HRESULT __stdcall BtrfsPropSheet::Initialize ( PCIDLIST_ABSOLUTE  pidlFolder,
IDataObject pdtobj,
HKEY  hkeyProgID 
)
virtual

Implements IShellExtInit.

Definition at line 361 of file propsheet.cpp.

361  {
362  try {
363  FORMATETC format = { CF_HDROP, nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
364  HDROP hdrop;
365  HRESULT hr;
366 
367  if (pidlFolder)
368  return E_FAIL;
369 
370  if (!pdtobj)
371  return E_FAIL;
372 
373  stgm.tymed = TYMED_HGLOBAL;
374 
375  if (FAILED(pdtobj->GetData(&format, &stgm)))
376  return E_INVALIDARG;
377 
378  stgm_set = true;
379 
380  hdrop = (HDROP)GlobalLock(stgm.hGlobal);
381 
382  if (!hdrop) {
384  stgm_set = false;
385  return E_INVALIDARG;
386  }
387 
388  try {
389  hr = load_file_list();
390  if (FAILED(hr))
391  return hr;
392 
393  if (search_list.size() > 0) {
394  thread = CreateThread(nullptr, 0, global_search_list_thread, this, 0, nullptr);
395 
396  if (!thread)
397  throw last_error(GetLastError());
398  }
399  } catch (...) {
400  GlobalUnlock(hdrop);
401  throw;
402  }
403 
404  GlobalUnlock(hdrop);
405  } catch (const exception& e) {
406  error_message(nullptr, e.what());
407 
408  return E_FAIL;
409  }
410 
411  return S_OK;
412 }
HRESULT hr
Definition: shlfolder.c:183
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
Definition: ole2.c:2033
HRESULT load_file_list()
Definition: propsheet.cpp:318
HRESULT GetData([in, unique] FORMATETC *pformatetcIn, [out] STGMEDIUM *pmedium)
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
#define E_FAIL
Definition: ddrawi.h:102
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
void error_message(HWND hwnd, const char *msg)
Definition: main.cpp:783
#define e
Definition: ke_i.h:82
#define E_INVALIDARG
Definition: ddrawi.h:101
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
#define CF_HDROP
Definition: constants.h:410
LONG HRESULT
Definition: typedefs.h:79
deque< wstring > search_list
Definition: propsheet.h:191
HANDLE thread
Definition: propsheet.h:175
static DWORD WINAPI global_search_list_thread(LPVOID lpParameter)
Definition: propsheet.cpp:166
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
Definition: heapmem.c:755
STGMEDIUM stgm
Definition: propsheet.h:187
#define S_OK
Definition: intsafe.h:52
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
Definition: heapmem.c:1190
size_type size() const
Definition: _deque.h:471

◆ load_file_list()

HRESULT BtrfsPropSheet::load_file_list ( )
private

Definition at line 318 of file propsheet.cpp.

318  {
319  UINT num_files, i, sv = 0;
320  WCHAR fn[MAX_PATH];
321 
322  num_files = DragQueryFileW((HDROP)stgm.hGlobal, 0xFFFFFFFF, nullptr, 0);
323 
324  min_mode = 0;
325  max_mode = 0;
326  min_flags = 0;
327  max_flags = 0;
328  min_compression_type = 0xff;
331 
332  can_change_perms = true;
333  can_change_nocow = true;
334 
335  sizes[0] = sizes[1] = sizes[2] = sizes[3] = sizes[4] = 0;
337 
338  for (i = 0; i < num_files; i++) {
339  if (DragQueryFileW((HDROP)stgm.hGlobal, i, fn, sizeof(fn) / sizeof(WCHAR))) {
340  HRESULT hr;
341 
342  hr = check_file(fn, i, num_files, &sv);
343  if (FAILED(hr))
344  return hr;
345  } else
346  return E_FAIL;
347  }
348 
349  min_mode = ~min_mode;
350  min_flags = ~min_flags;
351 
352  mode = min_mode;
353  mode_set = ~(min_mode ^ max_mode);
354 
355  flags = min_flags;
357 
358  return S_OK;
359 }
HRESULT hr
Definition: shlfolder.c:183
bool various_inodes
Definition: propsheet.h:181
bool various_gids
Definition: propsheet.h:181
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
uint8_t max_compression_type
Definition: propsheet.h:179
uint64_t max_flags
Definition: propsheet.h:177
#define E_FAIL
Definition: ddrawi.h:102
uint64_t totalsize
Definition: propsheet.h:190
uint64_t allocsize
Definition: propsheet.h:190
uint8_t min_compression_type
Definition: propsheet.h:179
uint64_t min_flags
Definition: propsheet.h:177
bool various_subvols
Definition: propsheet.h:181
bool various_uids
Definition: propsheet.h:181
uint32_t mode_set
Definition: propsheet.h:176
uint32_t min_mode
Definition: propsheet.h:176
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:79
#define MAX_PATH
Definition: compat.h:34
GLbitfield flags
Definition: glext.h:7161
uint64_t sparsesize
Definition: propsheet.h:190
bool can_change_perms
Definition: propsheet.h:172
GLenum mode
Definition: glext.h:6217
STGMEDIUM stgm
Definition: propsheet.h:187
#define S_OK
Definition: intsafe.h:52
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
uint64_t sizes[5]
Definition: propsheet.h:190
unsigned int UINT
Definition: ndis.h:50
bool various_types
Definition: propsheet.h:181
uint32_t max_mode
Definition: propsheet.h:176
uint64_t flags_set
Definition: propsheet.h:177
HRESULT check_file(const wstring &fn, UINT i, UINT num_files, UINT *sv)
Definition: propsheet.cpp:172
UINT WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszwFile, UINT lLength)
Definition: shellole.c:622
bool can_change_nocow
Definition: propsheet.h:173

Referenced by Initialize(), and open_as_admin().

◆ open_as_admin()

void BtrfsPropSheet::open_as_admin ( HWND  hwndDlg)

Definition at line 883 of file propsheet.cpp.

883  {
884  ULONG num_files, i;
885  WCHAR fn[MAX_PATH], modfn[MAX_PATH];
886 
887  num_files = DragQueryFileW((HDROP)stgm.hGlobal, 0xFFFFFFFF, nullptr, 0);
888 
889  if (num_files == 0)
890  return;
891 
892  GetModuleFileNameW(module, modfn, sizeof(modfn) / sizeof(WCHAR));
893 
894  for (i = 0; i < num_files; i++) {
895  if (DragQueryFileW((HDROP)stgm.hGlobal, i, fn, sizeof(fn) / sizeof(WCHAR))) {
896  wstring t;
897  SHELLEXECUTEINFOW sei;
898 
899 #ifndef __REACTOS__
900  t = L"\""s + modfn + L"\",ShowPropSheet "s + fn;
901 #else
902  t = wstring(L"\"") + modfn + wstring(L"\",ShowPropSheet ") + fn;
903 #endif
904 
905  RtlZeroMemory(&sei, sizeof(sei));
906 
907  sei.cbSize = sizeof(sei);
908  sei.hwnd = hwndDlg;
909  sei.lpVerb = L"runas";
910  sei.lpFile = L"rundll32.exe";
911  sei.lpParameters = t.c_str();
912  sei.nShow = SW_SHOW;
914 
915  if (!ShellExecuteExW(&sei))
916  throw last_error(GetLastError());
917 
919  CloseHandle(sei.hProcess);
920 
921  load_file_list();
922  init_propsheet(hwndDlg);
923  }
924  }
925 }
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
#define CloseHandle
Definition: compat.h:739
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
#define SEE_MASK_NOCLOSEPROCESS
Definition: shellapi.h:31
HRESULT load_file_list()
Definition: propsheet.cpp:318
GLdouble GLdouble t
Definition: gl.h:2047
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
#define L(x)
Definition: ntvdm.h:50
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Definition: shlexec.cpp:2335
#define SW_SHOW
Definition: winuser.h:769
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:34
GLdouble s
Definition: gl.h:2039
STGMEDIUM stgm
Definition: propsheet.h:187
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
LPCWSTR lpParameters
Definition: shellapi.h:331
unsigned int ULONG
Definition: retypes.h:1
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
void init_propsheet(HWND hwndDlg)
Definition: propsheet.cpp:931
#define INFINITE
Definition: serial.h:102
UINT WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszwFile, UINT lLength)
Definition: shellole.c:622

Referenced by PropSheetDlgProc().

◆ QueryInterface()

HRESULT __stdcall BtrfsPropSheet::QueryInterface ( REFIID  riid,
void **  ppObj 
)

Implements IUnknown.

Definition at line 73 of file propsheet.cpp.

73  {
74  if (riid == IID_IUnknown || riid == IID_IShellPropSheetExt) {
75  *ppObj = static_cast<IShellPropSheetExt*>(this);
76  AddRef();
77  return S_OK;
78  } else if (riid == IID_IShellExtInit) {
79  *ppObj = static_cast<IShellExtInit*>(this);
80  AddRef();
81  return S_OK;
82  }
83 
84  *ppObj = nullptr;
85  return E_NOINTERFACE;
86 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:52
ULONG __stdcall AddRef()
Definition: propsheet.h:136

Referenced by Factory::CreateInstance().

◆ Release()

ULONG __stdcall BtrfsPropSheet::Release ( void  )
inline

Implements IUnknown.

Definition at line 140 of file propsheet.h.

140  {
142 
143  if (rc == 0)
144  delete this;
145 
146  return rc;
147  }
long LONG
Definition: pedump.c:60
#define InterlockedDecrement
Definition: armddk.h:52

◆ ReplacePage()

HRESULT __stdcall BtrfsPropSheet::ReplacePage ( UINT  uPageID,
LPFNADDPROPSHEETPAGE  pfnReplacePage,
LPARAM  lParam 
)
virtual

Definition at line 1360 of file propsheet.cpp.

1360  {
1361  return S_OK;
1362 }
#define S_OK
Definition: intsafe.h:52

◆ search_list_thread()

DWORD BtrfsPropSheet::search_list_thread ( )

Definition at line 154 of file propsheet.cpp.

154  {
155  while (!search_list.empty()) {
157 
159  }
160 
161  thread = nullptr;
162 
163  return 0;
164 }
void pop_front()
Definition: _deque.h:722
reference front()
Definition: _deque.h:458
void do_search(const wstring &fn)
Definition: propsheet.cpp:88
bool empty() const
Definition: _deque.h:473
deque< wstring > search_list
Definition: propsheet.h:191
HANDLE thread
Definition: propsheet.h:175

Referenced by global_search_list_thread().

◆ set_cmdline()

void BtrfsPropSheet::set_cmdline ( const wstring &  cmdline)

Definition at line 414 of file propsheet.cpp.

414  {
415  win_handle h;
418  UINT sv = 0;
420  btrfs_inode_info bii2;
422 
423  min_mode = 0;
424  max_mode = 0;
425  min_flags = 0;
426  max_flags = 0;
427  min_compression_type = 0xff;
430 
431  can_change_perms = true;
432  can_change_nocow = true;
433 
436 
437  if (h == INVALID_HANDLE_VALUE)
438  throw last_error(GetLastError());
439 
441  if (!NT_SUCCESS(Status))
442  throw ntstatus_error(Status);
443 
446 
448 
451 
452  memset(&bii2, 0, sizeof(bii2));
453 
454  Status = NtFsControlFile(h, nullptr, nullptr, nullptr, &iosb, FSCTL_BTRFS_GET_INODE_INFO, nullptr, 0, &bii2, sizeof(btrfs_inode_info));
455 
456  if (!NT_SUCCESS(Status))
457  throw ntstatus_error(Status);
458 
459  if (!bii2.top) {
460  LARGE_INTEGER filesize;
461 
462  subvol = bii2.subvol;
463  inode = bii2.inode;
464  type = bii2.type;
465  uid = bii2.st_uid;
466  gid = bii2.st_gid;
467  rdev = bii2.st_rdev;
468 
469  if (bii2.inline_length > 0) {
470  totalsize += bii2.inline_length;
471  sizes[0] += bii2.inline_length;
472  }
473 
474  if (bii2.disk_size_uncompressed > 0) {
476  sizes[1] += bii2.disk_size_uncompressed;
477  }
478 
479  if (bii2.disk_size_zlib > 0) {
480  totalsize += bii2.disk_size_zlib;
481  sizes[2] += bii2.disk_size_zlib;
482  }
483 
484  if (bii2.disk_size_lzo > 0) {
485  totalsize += bii2.disk_size_lzo;
486  sizes[3] += bii2.disk_size_lzo;
487  }
488 
489  if (bii2.disk_size_zstd > 0) {
490  totalsize += bii2.disk_size_zstd;
491  sizes[4] += bii2.disk_size_zstd;
492  }
493 
494  sparsesize += bii2.sparse_size;
495 
497 
499 
500  if (!NT_SUCCESS(Status))
501  throw ntstatus_error(Status);
502 
503  if (bii2.inline_length > 0)
505  else
507 
508  min_mode |= ~bii2.st_mode;
509  max_mode |= bii2.st_mode;
510  min_flags |= ~bii2.flags;
511  max_flags |= bii2.flags;
514 
515  if (bii2.inode == SUBVOL_ROOT_INODE) {
516  bool ro = bhfi.dwFileAttributes & FILE_ATTRIBUTE_READONLY;
517 
518  has_subvols = true;
519 
520  if (sv == 0)
521  ro_subvol = ro;
522  else {
523  if (ro_subvol != ro)
524  various_ro = true;
525  }
526 
527  sv++;
528  }
529 
530  ignore = false;
531 
532  if (bii2.type != BTRFS_TYPE_DIRECTORY && GetFileSizeEx(h, &filesize)) {
533  if (filesize.QuadPart != 0)
534  can_change_nocow = false;
535  }
536  } else
537  return;
538 
539  min_mode = ~min_mode;
540  min_flags = ~min_flags;
541 
542  mode = min_mode;
543  mode_set = ~(min_mode ^ max_mode);
544 
545  flags = min_flags;
547 
548  if (search_list.size() > 0) {
549  thread = CreateThread(nullptr, 0, global_search_list_thread, this, 0, nullptr);
550 
551  if (!thread)
552  throw last_error(GetLastError());
553  }
554 
555  this->filename = cmdline;
556 }
#define MAXIMUM_ALLOWED
Definition: nt_native.h:83
uint64_t subvol
Definition: propsheet.h:178
static PIO_STATUS_BLOCK iosb
Definition: file.c:98
#define FileAccessInformation
Definition: propsheet.cpp:51
uint64_t disk_size_lzo
Definition: btrfsioctl.h:82
bool various_inodes
Definition: propsheet.h:181
void push_back(const value_type &__t=_STLP_DEFAULT_CONSTRUCTED(_Tp))
Definition: _deque.h:668
bool various_gids
Definition: propsheet.h:181
uint8_t max_compression_type
Definition: propsheet.h:179
#define SUBVOL_ROOT_INODE
Definition: propsheet.cpp:42
LONG NTSTATUS
Definition: precomp.h:26
uint32_t st_uid
Definition: btrfsioctl.h:74
NTSYSAPI NTSTATUS NTAPI NtQueryInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, OUT PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
uint64_t max_flags
Definition: propsheet.h:177
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
TCHAR * cmdline
Definition: stretchblt.cpp:32
#define FILE_SHARE_WRITE
Definition: nt_native.h:681
const char * filename
Definition: ioapi.h:137
uint64_t disk_size_zstd
Definition: btrfsioctl.h:84
#define FILE_WRITE_ATTRIBUTES
Definition: nt_native.h:649
uint32_t st_mode
Definition: btrfsioctl.h:76
#define FILE_SHARE_READ
Definition: compat.h:136
uint64_t totalsize
Definition: propsheet.h:190
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
uint64_t allocsize
Definition: propsheet.h:190
Definition: fs.h:78
uint32_t inline_length
Definition: btrfsioctl.h:79
uint32_t st_gid
Definition: btrfsioctl.h:75
uint8_t min_compression_type
Definition: propsheet.h:179
bool has_subvols
Definition: propsheet.h:181
uint64_t min_flags
Definition: propsheet.h:177
#define BTRFS_TYPE_DIRECTORY
Definition: shellext.h:86
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
uint64_t st_rdev
Definition: btrfsioctl.h:77
bool various_subvols
Definition: propsheet.h:181
uint32_t uid
Definition: propsheet.h:180
bool various_uids
Definition: propsheet.h:181
#define OPEN_EXISTING
Definition: compat.h:775
uint32_t mode_set
Definition: propsheet.h:176
#define FILE_ATTRIBUTE_DIRECTORY
Definition: nt_native.h:705
Status
Definition: gdiplustypes.h:24
NTSYSAPI NTSTATUS NTAPI NtFsControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
BOOL WINAPI GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
Definition: fileinfo.c:458
uint32_t min_mode
Definition: propsheet.h:176
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define FILE_ATTRIBUTE_READONLY
Definition: nt_native.h:702
#define WRITE_DAC
Definition: nt_native.h:59
uint64_t disk_size_zlib
Definition: btrfsioctl.h:81
uint64_t flags
Definition: btrfsioctl.h:78
deque< wstring > search_list
Definition: propsheet.h:191
LARGE_INTEGER AllocationSize
Definition: propsheet.cpp:54
GLbitfield flags
Definition: glext.h:7161
#define FILE_READ_ATTRIBUTES
Definition: nt_native.h:647
HANDLE thread
Definition: propsheet.h:175
uint64_t sparsesize
Definition: propsheet.h:190
#define GetFileSizeEx
Definition: compat.h:757
bool can_change_perms
Definition: propsheet.h:172
#define FILE_SHARE_DELETE
Definition: nt_native.h:682
static DWORD WINAPI global_search_list_thread(LPVOID lpParameter)
Definition: propsheet.cpp:166
uint64_t inode
Definition: btrfsioctl.h:71
GLenum mode
Definition: glext.h:6217
uint32_t gid
Definition: propsheet.h:180
#define FSCTL_BTRFS_GET_INODE_INFO
Definition: btrfsioctl.h:10
uint64_t sizes[5]
Definition: propsheet.h:190
unsigned int UINT
Definition: ndis.h:50
bool various_types
Definition: propsheet.h:181
#define FileStandardInformation
Definition: propsheet.cpp:61
#define CreateFileW
Definition: compat.h:741
size_type size() const
Definition: _deque.h:471
#define FILE_FLAG_BACKUP_SEMANTICS
Definition: disk.h:41
#define FILE_FLAG_OPEN_REPARSE_POINT
Definition: disk.h:39
uint8_t compression_type
Definition: btrfsioctl.h:83
uint32_t max_mode
Definition: propsheet.h:176
uint64_t flags_set
Definition: propsheet.h:177
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
uint64_t rdev
Definition: propsheet.h:178
uint64_t sparse_size
Definition: btrfsioctl.h:85
#define memset(x, y, z)
Definition: compat.h:39
uint64_t disk_size_uncompressed
Definition: btrfsioctl.h:80
uint64_t subvol
Definition: btrfsioctl.h:70
bool can_change_nocow
Definition: propsheet.h:173
LONGLONG QuadPart
Definition: typedefs.h:114

Referenced by ShowPropSheetW().

◆ set_size_on_disk()

void BtrfsPropSheet::set_size_on_disk ( HWND  hwndDlg)

Definition at line 730 of file propsheet.cpp.

730  {
731  wstring s, size_on_disk, cr, frag;
732  WCHAR old_text[1024];
733  float ratio;
734 
735  format_size(totalsize, size_on_disk, true);
736 
737  wstring_sprintf(s, size_format, size_on_disk.c_str());
738 
739  if (allocsize == sparsesize || totalsize == 0)
740  ratio = 0.0f;
741  else
742  ratio = 100.0f * (1.0f - ((float)totalsize / (float)(allocsize - sparsesize)));
743 
744  wstring_sprintf(cr, cr_format, ratio);
745 
746  GetDlgItemTextW(hwndDlg, IDC_SIZE_ON_DISK, old_text, sizeof(old_text) / sizeof(WCHAR));
747 
748  if (s != old_text)
749  SetDlgItemTextW(hwndDlg, IDC_SIZE_ON_DISK, s.c_str());
750 
751  GetDlgItemTextW(hwndDlg, IDC_COMPRESSION_RATIO, old_text, sizeof(old_text) / sizeof(WCHAR));
752 
753  if (cr != old_text)
754  SetDlgItemTextW(hwndDlg, IDC_COMPRESSION_RATIO, cr.c_str());
755 
756  uint64_t extent_size = (allocsize - sparsesize - sizes[0]) / (sector_size == 0 ? 4096 : sector_size);
757 
758  if (num_extents == 0 || extent_size <= 1)
759  ratio = 0.0f;
760  else
761  ratio = 100.0f * ((float)num_extents / (float)(extent_size - 1));
762 
763  wstring_sprintf(frag, frag_format, ratio);
764 
765  GetDlgItemTextW(hwndDlg, IDC_FRAGMENTATION, old_text, sizeof(old_text) / sizeof(WCHAR));
766 
767  if (frag != old_text)
768  SetDlgItemTextW(hwndDlg, IDC_FRAGMENTATION, frag.c_str());
769 }
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
Definition: dialog.c:2263
WCHAR frag_format[255]
Definition: propsheet.h:174
#define IDC_FRAGMENTATION
Definition: resource.h:242
WCHAR size_format[255]
Definition: propsheet.h:174
uint64_t totalsize
Definition: propsheet.h:190
uint64_t allocsize
Definition: propsheet.h:190
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
uint64_t num_extents
Definition: propsheet.h:190
uint32_t sector_size
Definition: propsheet.h:193
void wstring_sprintf(wstring &s, wstring fmt,...)
Definition: main.cpp:225
__wchar_t WCHAR
Definition: xmlstorage.h:180
uint64_t sparsesize
Definition: propsheet.h:190
WCHAR cr_format[255]
Definition: propsheet.h:174
#define IDC_COMPRESSION_RATIO
Definition: resource.h:240
GLdouble s
Definition: gl.h:2039
UINT64 uint64_t
Definition: types.h:77
#define IDC_SIZE_ON_DISK
Definition: resource.h:225
static float(__cdecl *square_half_float)(float x
uint64_t sizes[5]
Definition: propsheet.h:190
void format_size(uint64_t size, wstring &s, bool show_bytes)
Definition: main.cpp:65

Referenced by init_propsheet(), and PropSheetDlgProc().

◆ update_size_details_dialog()

void BtrfsPropSheet::update_size_details_dialog ( HWND  hDlg)

Definition at line 805 of file propsheet.cpp.

805  {
806  wstring size;
807  WCHAR old_text[1024];
808  int i;
810 
811  for (i = 0; i < 5; i++) {
812  format_size(sizes[i], size, true);
813 
814  GetDlgItemTextW(hDlg, items[i], old_text, sizeof(old_text) / sizeof(WCHAR));
815 
816  if (size != old_text)
817  SetDlgItemTextW(hDlg, items[i], size.c_str());
818  }
819 }
#define IDC_SIZE_ZSTD
Definition: resource.h:239
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
Definition: dialog.c:2263
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
#define IDC_SIZE_ZLIB
Definition: resource.h:232
#define IDC_SIZE_UNCOMPRESSED
Definition: resource.h:229
GLsizeiptr size
Definition: glext.h:5919
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define IDC_SIZE_INLINE
Definition: resource.h:227
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
uint64_t sizes[5]
Definition: propsheet.h:190
unsigned int ULONG
Definition: retypes.h:1
#define IDC_SIZE_LZO
Definition: resource.h:236
static TCHAR * items[]
Definition: page1.c:45
void format_size(uint64_t size, wstring &s, bool show_bytes)
Definition: main.cpp:65

Referenced by SizeDetailsDlgProc().

Member Data Documentation

◆ allocsize

uint64_t BtrfsPropSheet::allocsize
private

◆ can_change_nocow

bool BtrfsPropSheet::can_change_nocow

Definition at line 173 of file propsheet.h.

Referenced by check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ can_change_perms

bool BtrfsPropSheet::can_change_perms

Definition at line 172 of file propsheet.h.

Referenced by BtrfsPropSheet(), check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ compress_type

uint8_t BtrfsPropSheet::compress_type

Definition at line 179 of file propsheet.h.

Referenced by apply_changes_file(), init_propsheet(), and PropSheetDlgProc().

◆ compress_type_changed

bool BtrfsPropSheet::compress_type_changed

Definition at line 181 of file propsheet.h.

Referenced by apply_changes(), apply_changes_file(), BtrfsPropSheet(), and PropSheetDlgProc().

◆ cr_format

WCHAR BtrfsPropSheet::cr_format[255]

Definition at line 174 of file propsheet.h.

Referenced by BtrfsPropSheet(), init_propsheet(), and set_size_on_disk().

◆ filename

wstring BtrfsPropSheet::filename
private

Definition at line 192 of file propsheet.h.

◆ flags

uint64_t BtrfsPropSheet::flags

Definition at line 177 of file propsheet.h.

◆ flags_changed

bool BtrfsPropSheet::flags_changed
private

Definition at line 189 of file propsheet.h.

Referenced by apply_changes(), apply_changes_file(), BtrfsPropSheet(), and change_inode_flag().

◆ flags_set

uint64_t BtrfsPropSheet::flags_set

◆ frag_format

WCHAR BtrfsPropSheet::frag_format[255]

Definition at line 174 of file propsheet.h.

Referenced by BtrfsPropSheet(), init_propsheet(), and set_size_on_disk().

◆ gid

uint32_t BtrfsPropSheet::gid

Definition at line 180 of file propsheet.h.

Referenced by apply_changes_file(), change_gid(), check_file(), init_propsheet(), and set_cmdline().

◆ gid_changed

bool BtrfsPropSheet::gid_changed
private

Definition at line 189 of file propsheet.h.

Referenced by apply_changes(), apply_changes_file(), BtrfsPropSheet(), and change_gid().

◆ has_subvols

bool BtrfsPropSheet::has_subvols

Definition at line 181 of file propsheet.h.

Referenced by BtrfsPropSheet(), check_file(), init_propsheet(), and set_cmdline().

◆ ignore

bool BtrfsPropSheet::ignore
private

Definition at line 186 of file propsheet.h.

Referenced by AddPages(), BtrfsPropSheet(), check_file(), and set_cmdline().

◆ inode

uint64_t BtrfsPropSheet::inode

Definition at line 178 of file propsheet.h.

◆ max_compression_type

uint8_t BtrfsPropSheet::max_compression_type

◆ max_flags

uint64_t BtrfsPropSheet::max_flags

Definition at line 177 of file propsheet.h.

Referenced by check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ max_mode

uint32_t BtrfsPropSheet::max_mode

◆ min_compression_type

uint8_t BtrfsPropSheet::min_compression_type

◆ min_flags

uint64_t BtrfsPropSheet::min_flags

Definition at line 177 of file propsheet.h.

Referenced by check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ min_mode

uint32_t BtrfsPropSheet::min_mode

◆ mode

uint32_t BtrfsPropSheet::mode

Definition at line 176 of file propsheet.h.

◆ mode_set

uint32_t BtrfsPropSheet::mode_set

◆ num_extents

uint64_t BtrfsPropSheet::num_extents
private

Definition at line 190 of file propsheet.h.

Referenced by BtrfsPropSheet(), check_file(), do_search(), and set_size_on_disk().

◆ perms_changed

bool BtrfsPropSheet::perms_changed
private

Definition at line 189 of file propsheet.h.

Referenced by apply_changes(), apply_changes_file(), BtrfsPropSheet(), and change_perm_flag().

◆ rdev

uint64_t BtrfsPropSheet::rdev

Definition at line 178 of file propsheet.h.

Referenced by check_file(), init_propsheet(), and set_cmdline().

◆ readonly

bool BtrfsPropSheet::readonly

◆ refcount

LONG BtrfsPropSheet::refcount
private

Definition at line 185 of file propsheet.h.

Referenced by AddRef(), BtrfsPropSheet(), and Release().

◆ ro_changed

bool BtrfsPropSheet::ro_changed

Definition at line 181 of file propsheet.h.

Referenced by apply_changes(), apply_changes_file(), BtrfsPropSheet(), and PropSheetDlgProc().

◆ ro_subvol

bool BtrfsPropSheet::ro_subvol

◆ search_list

deque<wstring> BtrfsPropSheet::search_list
private

Definition at line 191 of file propsheet.h.

Referenced by check_file(), do_search(), Initialize(), search_list_thread(), and set_cmdline().

◆ sector_size

uint32_t BtrfsPropSheet::sector_size
private

Definition at line 193 of file propsheet.h.

Referenced by BtrfsPropSheet(), check_file(), and set_size_on_disk().

◆ show_admin_button

bool BtrfsPropSheet::show_admin_button

Definition at line 181 of file propsheet.h.

Referenced by BtrfsPropSheet(), check_file(), and init_propsheet().

◆ size_format

WCHAR BtrfsPropSheet::size_format[255]

Definition at line 174 of file propsheet.h.

Referenced by BtrfsPropSheet(), init_propsheet(), and set_size_on_disk().

◆ sizes

uint64_t BtrfsPropSheet::sizes[5]
private

◆ sparsesize

uint64_t BtrfsPropSheet::sparsesize
private

◆ stgm

STGMEDIUM BtrfsPropSheet::stgm
private

◆ stgm_set

bool BtrfsPropSheet::stgm_set
private

Definition at line 188 of file propsheet.h.

Referenced by BtrfsPropSheet(), Initialize(), and ~BtrfsPropSheet().

◆ subvol

uint64_t BtrfsPropSheet::subvol

Definition at line 178 of file propsheet.h.

Referenced by check_file(), init_propsheet(), and set_cmdline().

◆ thread

◆ totalsize

uint64_t BtrfsPropSheet::totalsize
private

◆ type

uint8_t BtrfsPropSheet::type

Definition at line 179 of file propsheet.h.

◆ uid

uint32_t BtrfsPropSheet::uid

Definition at line 180 of file propsheet.h.

Referenced by apply_changes_file(), change_uid(), check_file(), init_propsheet(), and set_cmdline().

◆ uid_changed

bool BtrfsPropSheet::uid_changed
private

Definition at line 189 of file propsheet.h.

Referenced by apply_changes(), apply_changes_file(), BtrfsPropSheet(), and change_uid().

◆ various_gids

bool BtrfsPropSheet::various_gids

Definition at line 181 of file propsheet.h.

Referenced by apply_changes(), check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ various_inodes

bool BtrfsPropSheet::various_inodes

Definition at line 181 of file propsheet.h.

Referenced by check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ various_ro

bool BtrfsPropSheet::various_ro

Definition at line 181 of file propsheet.h.

Referenced by check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ various_subvols

bool BtrfsPropSheet::various_subvols

Definition at line 181 of file propsheet.h.

Referenced by check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ various_types

bool BtrfsPropSheet::various_types

Definition at line 181 of file propsheet.h.

Referenced by check_file(), init_propsheet(), load_file_list(), and set_cmdline().

◆ various_uids

bool BtrfsPropSheet::various_uids

Definition at line 181 of file propsheet.h.

Referenced by apply_changes(), check_file(), init_propsheet(), load_file_list(), and set_cmdline().


The documentation for this class was generated from the following files: