105 |
#if (defined(SOLARIS) || defined (__hpux) || defined(__BEOS__)) |
#if (defined(SOLARIS) || defined (__hpux) || defined(__BEOS__)) |
106 |
#include <sys/statvfs.h> /* solaris statvfs */ |
#include <sys/statvfs.h> /* solaris statvfs */ |
107 |
#include <sys/mntent.h> |
#include <sys/mntent.h> |
108 |
#define HAVE_MNTENT_H |
/* TODO: Fix mntent-handling for solaris */ |
109 |
|
#undef HAVE_MNTENT_H |
110 |
#define MNTENT_PATH "/etc/mnttab" |
#define MNTENT_PATH "/etc/mnttab" |
111 |
#define STATFS_FN(path, buf) (statvfs(path,buf)) |
#define STATFS_FN(path, buf) (statvfs(path,buf)) |
112 |
#define STATFS_T statvfs |
#define STATFS_T statvfs |
133 |
|
|
134 |
extern RDPDR_DEVICE g_rdpdr_device[]; |
extern RDPDR_DEVICE g_rdpdr_device[]; |
135 |
|
|
136 |
struct fileinfo |
FILEINFO g_fileinfo[MAX_OPEN_FILES]; |
|
{ |
|
|
uint32 device_id, flags_and_attributes; |
|
|
char path[256]; |
|
|
DIR *pdir; |
|
|
struct dirent *pdirent; |
|
|
char pattern[64]; |
|
|
BOOL delete_on_close; |
|
|
} |
|
|
g_fileinfo[MAX_OPEN_FILES]; |
|
137 |
|
|
138 |
typedef struct |
typedef struct |
139 |
{ |
{ |
639 |
if (fchmod(handle, mode)) |
if (fchmod(handle, mode)) |
640 |
return STATUS_ACCESS_DENIED; |
return STATUS_ACCESS_DENIED; |
641 |
|
|
|
/* prevents start of writing if not enough space left on device */ |
|
|
if (STATFS_FN(g_rdpdr_device[pfinfo->device_id].local_path, &stat_fs) == 0) |
|
|
if (stat_fs.f_bsize * stat_fs.f_bfree < length) |
|
|
return STATUS_DISK_FULL; |
|
|
|
|
642 |
break; |
break; |
643 |
|
|
644 |
case 10: /* FileRenameInformation */ |
case 10: /* FileRenameInformation */ |
692 |
in_uint8s(in, 28); /* unknown */ |
in_uint8s(in, 28); /* unknown */ |
693 |
in_uint32_le(in, length); /* file size */ |
in_uint32_le(in, length); /* file size */ |
694 |
|
|
695 |
printf("FileEndOfFileInformation length = %d\n", length); |
/* prevents start of writing if not enough space left on device */ |
696 |
// ???????????? |
if (STATFS_FN(g_rdpdr_device[pfinfo->device_id].local_path, &stat_fs) == 0) |
697 |
|
if (stat_fs.f_bsize * stat_fs.f_bfree < length) |
698 |
|
return STATUS_DISK_FULL; |
699 |
|
|
700 |
unimpl("IRP Set File Information class: FileEndOfFileInformation\n"); |
//printf("FileEndOfFileInformation length = %d\n", length); |
701 |
|
// ???????????? |
702 |
|
//unimpl("IRP Set File Information class: FileEndOfFileInformation\n"); |
703 |
break; |
break; |
704 |
default: |
default: |
705 |
|
|