瀏覽代碼

* Fix getdirentries problem for openbsd

git-svn-id: trunk@19418 -
pierre 14 年之前
父節點
當前提交
a6280de177
共有 2 個文件被更改,包括 7 次插入2 次删除
  1. 5 1
      rtl/bsd/ossysc.inc
  2. 2 1
      rtl/openbsd/sysnr.inc

+ 5 - 1
rtl/bsd/ossysc.inc

@@ -223,9 +223,13 @@ with blockmode have this higher?}
 function readbuffer:longint;
 
 var retval :longint;
-
+    basep : clong;
 begin
+{$ifdef USE_GETDIRENTRIES_SYSCALL}
+ Retval:=do_syscall(syscall_nr_getdirentries,TSysParam(dirp^.dd_fd),TSysParam(@dirp^.dd_buf^),DIRBLKSIZ {sizeof(getdentsbuffer)},TSysParam(@basep));
+{$else not USE_GETDIRENTRIES_SYSCALL}
  Retval:=do_syscall(syscall_nr_getdents,TSysParam(dirp^.dd_fd),TSysParam(@dirp^.dd_buf^),DIRBLKSIZ {sizeof(getdentsbuffer)});
+{$endif not USE_GETDIRENTRIES_SYSCALL}
    dirp^.dd_rewind:=TSysParam(dirp^.dd_buf);
    if retval=0 then
     begin

+ 2 - 1
rtl/openbsd/sysnr.inc

@@ -251,5 +251,6 @@ Const
 
 { Aliases }
         syscall_nr_waitpid      = syscall_nr_wait4;  // 7, added: ease of notation purposes
-        syscall_nr_getdents = syscall_nr_getdirentries;
+{        syscall_nr_getdents = syscall_nr_getdirentries; }
+{$define USE_GETDIRENTRIES_SYSCALL}