From 11551a1816d934a49099f827899d79c3a61ec70b Mon Sep 17 00:00:00 2001 From: Pavel <68122101+red-prig@users.noreply.github.com> Date: Tue, 24 Jan 2023 11:41:19 +0300 Subject: [PATCH] parse root fix --- kernel/ps4_kernel_file.pas | 20 ++++++++++++++++++-- sys/sys_dir.pas | 8 ++++---- sys/sys_path.pas | 1 + 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/kernel/ps4_kernel_file.pas b/kernel/ps4_kernel_file.pas index 38e40906..78ca2ae8 100644 --- a/kernel/ps4_kernel_file.pas +++ b/kernel/ps4_kernel_file.pas @@ -122,7 +122,15 @@ begin Case Result of PT_ROOT: begin - Result:=_sys_root_open(rp,flags,mode); + if (rp='') then + begin + //root dir + Result:=_sys_root_dir_open(rp,flags,mode); + end else + begin + //root file + Exit(-ENOENT); + end; end; PT_FILE: begin @@ -613,7 +621,15 @@ begin Case Result of PT_ROOT: begin - Result:=_sys_root_stat(rp,stat); + if (rp='') then + begin + //root dir + Result:=_sys_root_dir_stat(rp,stat); + end else + begin + //root file + Exit(ENOENT); + end; end; PT_FILE: begin diff --git a/sys/sys_dir.pas b/sys/sys_dir.pas index 263f0bc1..69da8f8a 100644 --- a/sys/sys_dir.pas +++ b/sys/sys_dir.pas @@ -42,8 +42,8 @@ type function _sys_dir_open(const path:RawByteString;flags,mode:Integer):Integer; function _sys_dir_stat(Const path:RawByteString;stat:PSceKernelStat):Integer; -function _sys_root_open(const path:RawByteString;flags,mode:Integer):Integer; -function _sys_root_stat(Const path:RawByteString;stat:PSceKernelStat):Integer; +function _sys_root_dir_open(const path:RawByteString;flags,mode:Integer):Integer; +function _sys_root_dir_stat(Const path:RawByteString;stat:PSceKernelStat):Integer; implementation @@ -254,7 +254,7 @@ end; // -function _sys_root_open(const path:RawByteString;flags,mode:Integer):Integer; +function _sys_root_dir_open(const path:RawByteString;flags,mode:Integer):Integer; var f:TDirFile; @@ -279,7 +279,7 @@ begin end; end; -function _sys_root_stat(Const path:RawByteString;stat:PSceKernelStat):Integer; +function _sys_root_dir_stat(Const path:RawByteString;stat:PSceKernelStat):Integer; begin stat^:=Default(SceKernelStat); diff --git a/sys/sys_path.pas b/sys/sys_path.pas index f696ca68..05e5e4a1 100644 --- a/sys/sys_path.pas +++ b/sys/sys_path.pas @@ -683,6 +683,7 @@ begin begin if (fp^=#0) then //root??? begin + r:=pp; Result:=PT_ROOT; end else begin