浏览代码

Add code to test Linux version, try statx syscall only if version is >= to 4.11

git-svn-id: trunk@47850 -
pierre 4 年之前
父节点
当前提交
8b34e11da3
共有 1 个文件被更改,包括 42 次插入1 次删除
  1. 42 1
      tests/test/units/linux/tstatx.pp

+ 42 - 1
tests/test/units/linux/tstatx.pp

@@ -3,11 +3,52 @@ uses
   ctypes,baseunix,linux;
   
 var
+  un : utsname;
   mystatx : statx;
   res : cint;
   f : text;
-  
+  st,major,minor : string;
+  i,p,e : longint;
+  err : word;
+  major_release, minor_release : longint;
 begin
+  fpuname(un);
+  st:=un.release;
+  for i:=1 to UTSNAME_LENGTH do
+    if st[i]='.' then
+      begin
+        p:=i;
+        major:=system.copy(st,1,p-1);
+        system.val(major,major_release,err);
+        if err<>0 then
+          begin 
+            writeln('Unable to parse first part of linux version ',st,'(',major,') correctly');
+            halt(2);
+          end;
+        break;
+      end;
+  
+  for i:=p+1 to UTSNAME_LENGTH do
+    if st[i]='.' then
+      begin
+        e:=i;
+        minor:=system.copy(st,p+1,e-p-1);
+        system.val(minor,minor_release,err);
+        if err<>0 then
+          begin 
+            writeln('Unable to second part of parse linux version ',st,'i(',minor,') correctly');
+            halt(2);
+          end;
+        break;
+      end;
+  if (major_release<4) or (minor_release<11) then
+    begin
+      writeln('This version of Linux: ',st,' does not have fstatx syscall');
+      halt(0);
+    end
+  else
+    writeln('This linux version ',st,' should support statx syscall');
+     
   assign(f,'test.txt');
   rewrite(f);
   write(f,'ccccc');