Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minimig: Fixes for shared file system (MiSTerFileSystem) #310

Merged
merged 6 commits into from Dec 13, 2020

Conversation

dwhinham
Copy link
Contributor

@dwhinham dwhinham commented Dec 12, 2020

This PR (combined with the accompanying PR to Minimig-AGA_MiSTer) merges some fixes from a314, and a couple of extra fixes that that take care of some of the worst bugs:

  • Deleting files/directories from Workbench no longer requires the window to be refreshed.
  • Files that are "Left out" onto the Workbench screen no longer reappear inside the parent window.
  • Incorrect return code for ACTION_FINDINPUT.
  • Some applications would fail to load some files due to negative seek offsets being corrupted by unsigned conversion.
    • A simple test case is AmigaGuide: place an AmigaGuide document on the shared volume and attempt to open it. Before this patch, this would fail silently.
  • Renaming a file/folder to its existing name would fail when it should not - renaming a file or directory to its own name is legal under AmigaOS.
    • This fixes the error encountered when creating a new drawer under SHARE: and accepting the default name of "Unnamed1", for example.
  • Using the Assign command to create an assign to a location within the shared file system didn't work correctly - it would always point to the root. This has been fixed.

Requires changes to Minimig-AGA_MiSTer (see other PR).

Renaming a file or directory to its own name is legal under AmigaOS, so
ensure that this case is a no-op and returns success.

This fixes the error encountered when creating a new drawer under SHARE:
and accepting the default name of "Unnamed1", for example.
Adapt upstream fix from a314.

This fixes some odd behaviour in Workbench such as:

 - Icons that were "Left Out" would reappear in their parent windows
   when refreshed.
 - Deleted files would not disappear from the window unless it was
   refreshed.

Original message from a314 commit:

This call is used in at least 2.1 to terminate directory traversal
when deleting a directory using Workbench. This sometimes caused
unhandled exceptions in a314d and much worse unintended files being
deleted!
Some applications would fail to load some files due to negative seek
offsets being corrupted by unsigned conversion.

A simple test case is AmigaGuide: place an AmigaGuide document on the
shared volume and attempt to open it. Before this patch, this would fail
silently.
Adapt upstream fix from a314.

Original message:

This action is performed when doing a drag-n-drop copy from the PiDisk
to an other device in Workbench 3.1.4
Adapt upstream fix from a314.

Original message:

Using ACTION_FINDINPUT to check if a file exists wrongfully returned
ERROR_DIR_NOT_FOUND instead of ERROR_OBJECT_NOT_FOUND if the file was
searched for in a non-existent subdirectory.
Only nullify the key in find_path() if the name contains our device
(SHARE:) or volume (MiSTer:) name.

This fixes the ability to create assigns to locations on the shared
filesystem. If find_path() is called with an assign-relative path, we
want to preserve the key so that a relative path is constructed from the
directory associated with that key.
@sorgelig sorgelig merged commit 221d1c9 into MiSTer-devel:master Dec 13, 2020
theypsilon pushed a commit to MiSTer-DB9/Main_MiSTer that referenced this pull request Feb 26, 2021
Minimig: Fixes for shared file system (MiSTerFileSystem)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants