Commit db8c11e7 authored by Robert Sprowson's avatar Robert Sprowson
Browse files

Fix reporting of unstamped file info

When a file ended in ',xxx' (unfinished DEADDEAD) or ',lxa' (load/execution addresses) LanManFS was correctly identifying these internally but at the last moment OR'd the result unconditionally with 0xFFF00000 when calculating the date stamp/access attributes.
Now, an unstamped file will propagate the load & exec addresses properly.
Tested with WinXP SP3 and a variety of hand constructed examples, plus copying a large file with the filer showed the incomplete file icon until done.

Version 2.37. Tagged as 'LanManFS-2_37'
parent afdc1291
/* (2.36)
/* (2.37)
*
* This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1.
*
*/
#define Module_MajorVersion_CMHG 2.36
#define Module_MajorVersion_CMHG 2.37
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 14 Apr 2012
#define Module_Date_CMHG 21 Sep 2012
#define Module_MajorVersion "2.36"
#define Module_Version 236
#define Module_MajorVersion "2.37"
#define Module_Version 237
#define Module_MinorVersion ""
#define Module_Date "14 Apr 2012"
#define Module_Date "21 Sep 2012"
#define Module_ApplicationDate "14-Apr-12"
#define Module_ApplicationDate "21-Sep-12"
#define Module_ComponentName "LanManFS"
#define Module_ComponentPath "castle/RiscOS/Sources/Networking/Omni/Protocols/LanManFS"
#define Module_FullVersion "2.36"
#define Module_HelpVersion "2.36 (14 Apr 2012)"
#define Module_LibraryVersionInfo "2:36"
#define Module_FullVersion "2.37"
#define Module_HelpVersion "2.37 (21 Sep 2012)"
#define Module_LibraryVersionInfo "2:37"
......@@ -49,7 +49,7 @@
*/
static const int deaddead = (int)0xDEADDEAD;
/* Macro returns non-zero if the specifiec load addressis indicative of
/* Macro returns non-zero if the specific load addressis indicative of
* a filetyped object. Rather than checking for the top 12 bits being
* set, it's much quicker to arithmetic shift it right 20 bits and test
* for -1. (Norcroft generates: MVN rn, #0: TEQ rn, ra, ASR #20)
......@@ -1112,8 +1112,19 @@ err_t Xlt_ExpandSearchEntryX2 ( BYTE *entry, char *path_base,
if ( ra_out != NULL )
{
/* Always populate the access attributes of ra_out */
Xlt_CnvDOStoRO ( &da, ra_out, CNV_DATETIME+CNV_ATTRIBS );
ra_out->loadaddr ^= ((ra_name.loadaddr ^ ra_out->loadaddr) & (0xFFF00));
if (IS_FILETYPED(ra_name.loadaddr))
{
/* Mix the filetype in with the date and time from Xlt_CnvDOStoRO */
ra_out->loadaddr = (ra_out->loadaddr & 0xFFF000FF) | (ra_name.loadaddr & 0x000FFF00);
}
else
{
/* Unstamped, so force back to those discovered by Xlt_SplitLeafnameX2 */
ra_out->loadaddr = ra_name.loadaddr;
ra_out->execaddr = ra_name.execaddr;
}
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment