Re: [hatari-devel] Error when saving files

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


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;
 	}
 


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/