Explorar o código

* FPC_USE_LIBC and uuidgen(2) support under IFDEF FREEBSD5.

git-svn-id: trunk@72 -
marco %!s(int64=20) %!d(string=hai) anos
pai
achega
1efce6412b
Modificáronse 1 ficheiros con 24 adicións e 0 borrados
  1. 24 0
      rtl/bsd/suuid.inc

+ 24 - 0
rtl/bsd/suuid.inc

@@ -15,6 +15,29 @@
 
 
  **********************************************************************}
  **********************************************************************}
 
 
+{$IFDEF FREEBSD5}
+{$IFDEF FPC_USE_LIBC}
+
+function cuuidgen(p:PGUID;x:cint):cint; external clib name 'uuidgen';
+
+{$ELSE}
+
+function cuuidgen(p:pguid;x:cint):cint;
+
+begin
+  result:=do_syscall(syscall_nr_uuidgen,tsysparam(p),tsysparam(x));
+end;
+{$ENDIF}
+
+Function SysCreateGUID(out GUID : TGUID) : Integer;
+
+begin
+ result:=0;
+ if cuuidgen(@guid,1)=-1 then
+    GetRandomBytes(GUID,SizeOf(Guid));  
+end;
+
+{$ELSE}
 
 
 Const 
 Const 
   RandomDevice  = '/dev/urandom';
   RandomDevice  = '/dev/urandom';
@@ -54,3 +77,4 @@ begin
     GetRandomBytes(GUID,SizeOf(Guid));  
     GetRandomBytes(GUID,SizeOf(Guid));  
   Result:=0;    
   Result:=0;    
 end;
 end;
+{$ENDIF}