Re: [hatari-devel] Error when saving files

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


Hi,

Yes, please. I need to understand *why* it breaks things to fix it properly.

	- Eero

On 7.12.2022 23.55, Uwe Seimet wrote:
Hi,

The patch fixes the issue. Do you still need the full trace based on the
non-patched sources?

Best regards

Uwe

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/