NCP22/25 Change-Bit-Logging
All checks were successful
Source release / source-package (push) Successful in 37s
All checks were successful
Source release / source-package (push) Successful in 37s
This commit is contained in:
@@ -1278,16 +1278,26 @@ static time_t nw_2_un_time_parts(uint16 xdate, uint16 xtime)
|
||||
return(mktime(&s_tm));
|
||||
}
|
||||
|
||||
#define DM_ATTRIBUTES 0x0002UL
|
||||
#define DM_CREATE_DATE 0x0004UL
|
||||
#define DM_CREATE_TIME 0x0008UL
|
||||
#define DM_CREATOR_ID 0x0010UL
|
||||
#define DM_ARCHIVE_DATE 0x0020UL
|
||||
#define DM_ARCHIVE_TIME 0x0040UL
|
||||
#define DM_ARCHIVER_ID 0x0080UL
|
||||
#define DM_MODIFY_DATE 0x0100UL
|
||||
#define DM_MODIFY_TIME 0x0200UL
|
||||
#define DM_MODIFIER_ID 0x0400UL
|
||||
#define DM_LAST_ACCESS_DATE 0x0800UL
|
||||
#define DM_INHERITED_RIGHTS_MASK 0x1000UL
|
||||
#define DM_MAXIMUM_SPACE 0x2000UL
|
||||
#define DM_NCP22_25_TIME_BITS \
|
||||
(DM_MODIFY_DATE | DM_MODIFY_TIME | DM_LAST_ACCESS_DATE)
|
||||
#define DM_NCP22_25_ARCHIVE_BITS \
|
||||
(DM_ARCHIVE_DATE | DM_ARCHIVE_TIME | DM_ARCHIVER_ID)
|
||||
#define DM_NCP22_25_SUPPORTED_BITS \
|
||||
(DM_ATTRIBUTES | DM_NCP22_25_ARCHIVE_BITS | DM_NCP22_25_TIME_BITS | \
|
||||
DM_INHERITED_RIGHTS_MASK)
|
||||
|
||||
static int set_ncp22_25_times(int volume, char *unixname, struct stat *stb,
|
||||
NW_SET_DIR_INFO *f, uint32 change_mask,
|
||||
@@ -1382,6 +1392,29 @@ static int set_ncp22_25_archive_info(char *unixname,
|
||||
!!(change_mask & DM_ARCHIVER_ID), aid));
|
||||
}
|
||||
|
||||
static void log_ncp22_25_change_bits(uint32 change_mask)
|
||||
{
|
||||
uint32 unsupported = change_mask & ~DM_NCP22_25_SUPPORTED_BITS;
|
||||
|
||||
XDPRINTF((5,0,
|
||||
"NCP22/25 change bits: change=0x%08lx supported=0x%08lx unsupported=0x%08lx",
|
||||
(unsigned long)change_mask,
|
||||
(unsigned long)(change_mask & DM_NCP22_25_SUPPORTED_BITS),
|
||||
(unsigned long)unsupported));
|
||||
|
||||
if (unsupported) {
|
||||
XDPRINTF((5,0,
|
||||
"NCP22/25 unsupported change bits ignored: create=%d creator=%d modifier=%d maxspace=%d other=0x%08lx",
|
||||
!!(change_mask & (DM_CREATE_DATE | DM_CREATE_TIME)),
|
||||
!!(change_mask & DM_CREATOR_ID),
|
||||
!!(change_mask & DM_MODIFIER_ID),
|
||||
!!(change_mask & DM_MAXIMUM_SPACE),
|
||||
(unsigned long)(unsupported & ~(DM_CREATE_DATE | DM_CREATE_TIME |
|
||||
DM_CREATOR_ID | DM_MODIFIER_ID |
|
||||
DM_MAXIMUM_SPACE))));
|
||||
}
|
||||
}
|
||||
|
||||
static int get_file_attrib(NW_FILE_INFO *f, char *unixname, struct stat *stb,
|
||||
NW_PATH *nwpath)
|
||||
{
|
||||
@@ -3042,7 +3075,8 @@ int nw_set_a_directory_entry(int dirhandle,
|
||||
char unixname[300];
|
||||
uint32 change_mask=GET_32(f->change_bits);
|
||||
xstrcpy(unixname,build_unix_name(&nwpath, 0));
|
||||
if (change_mask & 0x2) {
|
||||
log_ncp22_25_change_bits(change_mask);
|
||||
if (change_mask & DM_ATTRIBUTES) {
|
||||
completition=set_nw_attrib_dword(nwpath.volume, unixname, &stbuff,
|
||||
GET_32(f->u.f.attributes));
|
||||
if (!completition)
|
||||
@@ -3061,14 +3095,14 @@ int nw_set_a_directory_entry(int dirhandle,
|
||||
S_ISDIR(stbuff.st_mode));
|
||||
}
|
||||
if (S_ISDIR(stbuff.st_mode)) {
|
||||
if (change_mask & 0x1000) {
|
||||
if (change_mask & DM_INHERITED_RIGHTS_MASK) {
|
||||
int result=tru_set_inherited_mask(nwpath.volume, unixname,
|
||||
&stbuff, GET_16(f->u.d.inherited_rights_mask));
|
||||
if (result)
|
||||
completition=result;
|
||||
}
|
||||
} else {
|
||||
if (change_mask & 0x1000) {
|
||||
if (change_mask & DM_INHERITED_RIGHTS_MASK) {
|
||||
int result=tru_set_inherited_mask(nwpath.volume, unixname,
|
||||
&stbuff, GET_16(f->u.f.inherited_rights_mask));
|
||||
if (result)
|
||||
|
||||
Reference in New Issue
Block a user