* along with WinBtrfs. If not, see <http://www.gnu.org/licenses/>. */
#include "btrfs_drv.h"
+#include "crc32c.h"
#ifndef __REACTOS__
// not currently in mingw
#else
#define FileIdExtdDirectoryInformation (enum _FILE_INFORMATION_CLASS)60
#define FileIdExtdBothDirectoryInformation (enum _FILE_INFORMATION_CLASS)63
-#endif
+#endif // __REACTOS__
enum DirEntryType {
DirEntryType_File,
Status = read_file(fcb, (uint8_t*)&tag, 0, sizeof(ULONG), &br, NULL);
if (!NT_SUCCESS(Status)) {
- ERR("read_file returned %08x\n", Status);
+ ERR("read_file returned %08lx\n", Status);
return 0;
}
}
return IO_REPARSE_TAG_SYMLINK;
else if (lxss) {
if (type == BTRFS_TYPE_SOCKET)
- return IO_REPARSE_TAG_LXSS_SOCKET;
+ return IO_REPARSE_TAG_AF_UNIX;
else if (type == BTRFS_TYPE_FIFO)
- return IO_REPARSE_TAG_LXSS_FIFO;
+ return IO_REPARSE_TAG_LX_FIFO;
else if (type == BTRFS_TYPE_CHARDEV)
- return IO_REPARSE_TAG_LXSS_CHARDEV;
+ return IO_REPARSE_TAG_LX_CHR;
else if (type == BTRFS_TYPE_BLOCKDEV)
- return IO_REPARSE_TAG_LXSS_BLOCKDEV;
+ return IO_REPARSE_TAG_LX_BLK;
}
if (type != BTRFS_TYPE_FILE && type != BTRFS_TYPE_DIRECTORY)
Status = open_fcb(Vcb, subvol, inode, type, NULL, false, NULL, &fcb, PagedPool, Irp);
if (!NT_SUCCESS(Status)) {
- ERR("open_fcb returned %08x\n", Status);
+ ERR("open_fcb returned %08lx\n", Status);
return 0;
}
Status = IoCheckEaBufferValidity((FILE_FULL_EA_INFORMATION*)eadata, len, &offset);
if (!NT_SUCCESS(Status)) {
- WARN("IoCheckEaBufferValidity returned %08x (error at offset %u)\n", Status, offset);
+ WARN("IoCheckEaBufferValidity returned %08lx (error at offset %lu)\n", Status, offset);
ExFreePool(eadata);
return 0;
} else {
Status = find_item(fcb->Vcb, r, &tp, &searchkey, false, Irp);
if (!NT_SUCCESS(Status)) {
- ERR("error - find_item returned %08x\n", Status);
+ ERR("error - find_item returned %08lx\n", Status);
return Status;
}
needed = sizeof(FILE_BOTH_DIR_INFORMATION) - sizeof(WCHAR) + de->name.Length;
if (needed > *len) {
- TRACE("buffer overflow - %u > %u\n", needed, *len);
+ TRACE("buffer overflow - %li > %lu\n", needed, *len);
return STATUS_BUFFER_OVERFLOW;
}
needed = sizeof(FILE_DIRECTORY_INFORMATION) - sizeof(WCHAR) + de->name.Length;
if (needed > *len) {
- TRACE("buffer overflow - %u > %u\n", needed, *len);
+ TRACE("buffer overflow - %li > %lu\n", needed, *len);
return STATUS_BUFFER_OVERFLOW;
}
needed = sizeof(FILE_FULL_DIR_INFORMATION) - sizeof(WCHAR) + de->name.Length;
if (needed > *len) {
- TRACE("buffer overflow - %u > %u\n", needed, *len);
+ TRACE("buffer overflow - %li > %lu\n", needed, *len);
return STATUS_BUFFER_OVERFLOW;
}
needed = sizeof(FILE_ID_BOTH_DIR_INFORMATION) - sizeof(WCHAR) + de->name.Length;
if (needed > *len) {
- TRACE("buffer overflow - %u > %u\n", needed, *len);
+ TRACE("buffer overflow - %li > %lu\n", needed, *len);
return STATUS_BUFFER_OVERFLOW;
}
needed = sizeof(FILE_ID_FULL_DIR_INFORMATION) - sizeof(WCHAR) + de->name.Length;
if (needed > *len) {
- TRACE("buffer overflow - %u > %u\n", needed, *len);
+ TRACE("buffer overflow - %li > %lu\n", needed, *len);
return STATUS_BUFFER_OVERFLOW;
}
needed = offsetof(FILE_ID_EXTD_DIR_INFORMATION, FileName[0]) + de->name.Length;
if (needed > *len) {
- TRACE("buffer overflow - %u > %u\n", needed, *len);
+ TRACE("buffer overflow - %li > %lu\n", needed, *len);
return STATUS_BUFFER_OVERFLOW;
}
needed = offsetof(FILE_ID_EXTD_BOTH_DIR_INFORMATION, FileName[0]) + de->name.Length;
if (needed > *len) {
- TRACE("buffer overflow - %u > %u\n", needed, *len);
+ TRACE("buffer overflow - %li > %lu\n", needed, *len);
return STATUS_BUFFER_OVERFLOW;
}
needed = sizeof(FILE_NAMES_INFORMATION) - sizeof(WCHAR) + de->name.Length;
if (needed > *len) {
- TRACE("buffer overflow - %u > %u\n", needed, *len);
+ TRACE("buffer overflow - %li > %lu\n", needed, *len);
return STATUS_BUFFER_OVERFLOW;
}
}
if (flags != 0)
- TRACE(" unknown flags: %u\n", flags);
+ TRACE(" unknown flags: %lu\n", flags);
}
if (IrpSp->Flags & SL_RESTART_SCAN) {
initial = !ccb->query_string.Buffer;
if (IrpSp->Parameters.QueryDirectory.FileName && IrpSp->Parameters.QueryDirectory.FileName->Length > 1) {
- TRACE("QD filename: %.*S\n", IrpSp->Parameters.QueryDirectory.FileName->Length / sizeof(WCHAR), IrpSp->Parameters.QueryDirectory.FileName->Buffer);
+ TRACE("QD filename: %.*S\n", (int)(IrpSp->Parameters.QueryDirectory.FileName->Length / sizeof(WCHAR)), IrpSp->Parameters.QueryDirectory.FileName->Buffer);
if (IrpSp->Parameters.QueryDirectory.FileName->Length > sizeof(WCHAR) || IrpSp->Parameters.QueryDirectory.FileName->Buffer[0] != L'*') {
specific_file = true;
}
if (ccb->query_string.Buffer) {
- TRACE("query string = %.*S\n", ccb->query_string.Length / sizeof(WCHAR), ccb->query_string.Buffer);
+ TRACE("query string = %.*S\n", (int)(ccb->query_string.Length / sizeof(WCHAR)), ccb->query_string.Buffer);
}
newoffset = ccb->query_dir_offset;
if (!ccb->case_sensitive) {
Status = RtlUpcaseUnicodeString(&us, &ccb->query_string, true);
if (!NT_SUCCESS(Status)) {
- ERR("RtlUpcaseUnicodeString returned %08x\n", Status);
+ ERR("RtlUpcaseUnicodeString returned %08lx\n", Status);
goto end;
}
}
}
- TRACE("file(0) = %.*S\n", de.name.Length / sizeof(WCHAR), de.name.Buffer);
- TRACE("offset = %u\n", ccb->query_dir_offset - 1);
+ TRACE("file(0) = %.*S\n", (int)(de.name.Length / sizeof(WCHAR)), de.name.Buffer);
+ TRACE("offset = %I64u\n", ccb->query_dir_offset - 1);
Status = query_dir_item(fcb, ccb, buf, &length, Irp, &de, fcb->subvol);
curitem = (uint8_t*)buf + IrpSp->Parameters.QueryDirectory.Length - length;
count++;
- TRACE("file(%u) %u = %.*S\n", count, curitem - (uint8_t*)buf, de.name.Length / sizeof(WCHAR), de.name.Buffer);
- TRACE("offset = %u\n", ccb->query_dir_offset - 1);
+ TRACE("file(%lu) %Iu = %.*S\n", count, curitem - (uint8_t*)buf, (int)(de.name.Length / sizeof(WCHAR)), de.name.Buffer);
+ TRACE("offset = %I64u\n", ccb->query_dir_offset - 1);
status2 = query_dir_item(fcb, ccb, curitem, &length, Irp, &de, fcb->subvol);
ExReleaseResourceLite(&Vcb->tree_lock);
- TRACE("returning %08x\n", Status);
+ TRACE("returning %08lx\n", Status);
return Status;
}
Status = fileref_get_filename(fileref, &ccb->filename, NULL, &reqlen);
if (!NT_SUCCESS(Status)) {
- ERR("fileref_get_filename returned %08x\n", Status);
+ ERR("fileref_get_filename returned %08lx\n", Status);
goto end;
}
} else {
- ERR("fileref_get_filename returned %08x\n", Status);
+ ERR("fileref_get_filename returned %08lx\n", Status);
goto end;
}
}
break;
default:
- WARN("unknown minor %u\n", func);
+ WARN("unknown minor %lu\n", func);
Status = STATUS_NOT_IMPLEMENTED;
Irp->IoStatus.Status = Status;
break;
IoCompleteRequest(Irp, IO_DISK_INCREMENT);
exit:
- TRACE("returning %08x\n", Status);
+ TRACE("returning %08lx\n", Status);
if (top_level)
IoSetTopLevelIrp(NULL);