Hi,
On 7.12.2022 15.55, Uwe Seimet wrote:
Are you sure this is (still) Hatari issue?
Yes, I am sure because nothing else except Hatari would touch this file,
and . At
the beginning of the log these are the file permissions:
-rw-rw-rw- 1 us users 4364 Dez 7 14:50 EDISON.RSM
At the end of the log they are:
-r--r--r-- 1 us users 4364 Dez 7 14:51 EDISON.RSM
Ok, in that case I need more info, at least full "--trace gemdos" trace.
The commit causing this issue is 8fe983f2. Before this commit everything is
fine, as it always was.
Does reverting just the GemDOS_ConvertAttribute() part (attached) of the
commit, fix the issue?
- Eero
--- a/src/gemdos.c
+++ b/src/gemdos.c
@@ -273,7 +273,7 @@ static bool GemDOS_SetFileInformation(int Handle, DATETIME *DateTime)
/**
* Convert from FindFirstFile/FindNextFile attribute to GemDOS format
*/
-static uint8_t GemDOS_ConvertAttribute(mode_t mode)
+static uint8_t GemDOS_ConvertAttribute(mode_t mode, const char *path)
{
uint8_t Attrib = 0;
@@ -282,7 +282,7 @@ static uint8_t GemDOS_ConvertAttribute(mode_t mode)
Attrib |= GEMDOS_FILE_ATTRIB_SUBDIRECTORY;
/* Read-only attribute */
- if (!(mode & S_IWUSR))
+ if (!(mode & S_IWUSR) || !access(path, W_OK))
Attrib |= GEMDOS_FILE_ATTRIB_READONLY;
/* TODO, Other attributes:
@@ -326,7 +326,7 @@ static dta_ret_t PopulateDTA(char *path, struct dirent *file, DTA *pDTA, uint32_
return DTA_ERR; /* no DTA pointer set */
/* Check file attributes (check is done according to the Profibuch) */
- nFileAttr = GemDOS_ConvertAttribute(filestat.st_mode);
+ nFileAttr = GemDOS_ConvertAttribute(filestat.st_mode, tempstr);
nAttrMask = nAttrSFirst|GEMDOS_FILE_ATTRIB_WRITECLOSE|GEMDOS_FILE_ATTRIB_READONLY;
if (nFileAttr != 0 && !(nAttrMask & nFileAttr))
return DTA_SKIP;
@@ -2616,7 +2615,7 @@ static bool GemDOS_Fattrib(uint32_t Params)
if (nRwFlag == 0)
{
/* Read attributes */
- Regs[REG_D0] = GemDOS_ConvertAttribute(FileStat.st_mode);
+ Regs[REG_D0] = GemDOS_ConvertAttribute(FileStat.st_mode, sActualFileName);
return true;
}