Browse Source

--- Merging r20336 into '.':
U rtl/unix/ipc.pp
--- Merging r20354 into '.':
G rtl/unix/ipc.pp

# revisions: 20336,20354
------------------------------------------------------------------------
r20336 | pierre | 2012-02-13 17:43:16 +0100 (Mon, 13 Feb 2012) | 1 line
Changed paths:
M /trunk/rtl/unix/ipc.pp

NetBSD code added
------------------------------------------------------------------------
------------------------------------------------------------------------
r20354 | pierre | 2012-02-15 14:18:30 +0100 (Wed, 15 Feb 2012) | 1 line
Changed paths:
M /trunk/rtl/unix/ipc.pp

* Remove local redefinition of types and clarify TIPC_Perm record
------------------------------------------------------------------------

git-svn-id: branches/fixes_2_6@20372 -

marco 13 years ago
parent
commit
06849e490e
1 changed files with 20 additions and 11 deletions
  1. 20 11
      rtl/unix/ipc.pp

+ 20 - 11
rtl/unix/ipc.pp

@@ -38,12 +38,11 @@ Type
 
    {$IFDEF FreeBSD}
    TKey   = clong;
-   {$ELSE}
+{$ELSE}
    TKey   = cint;
-   {$ENDIF}
+{$ENDIF}
    key_t  = TKey;
 
-
 Const
   { IPC flags for get calls }
 
@@ -78,10 +77,10 @@ Const
 
 type
   PIPC_Perm = ^TIPC_Perm;
-{$ifdef darwin}
+{$ifdef darwin }
 {$packrecords 4}
-{$endif}
-{$if defined(FreeBSD) or defined(Darwin) or defined(OpenBSD)}
+{ This is also the strcut for FreeBSD up to version 7
+  renamed ipc_perm_old in /usr/include/sys/ipc.h in version 8 and after }
   TIPC_Perm = record
         cuid  : cushort;  { creator user id }
         cgid  : cushort;  { creator group id }
@@ -91,10 +90,19 @@ type
         seq   : cushort;  { sequence # (to generate unique msg/sem/shm id) }
         key   : key_t;    { user specified msg/sem/shm key }
   End;
-{$ifdef darwin}
 {$packrecords c}
-{$endif}
-{$else} // linux
+{$else }
+{$if defined(NetBSD) or defined(OpenBSD) or defined(FreeBSD) }
+  TIPC_Perm = record
+        cuid  : uid_t;  { creator user id }
+        cgid  : gid_t;  { creator group id }
+        uid   : uid_t;  { user id }
+        gid   : gid_t;  { group id }
+        mode  : mode_t;  { r/w permission }
+        seq   : cushort;  { sequence # (to generate unique msg/sem/shm id) }
+        key   : key_t;    { user specified msg/sem/shm key }
+  End;
+{$else } // linux
 
 {$ifdef cpu32}
   {$ifndef linux_ipc64}
@@ -133,7 +141,8 @@ type
         seq   : cushort;
   End;
 {$endif not(linux_ipc32) and not(FPC_USE_LIBC)}
-{$endif}
+{$endif not netbsd}
+{$endif not others}
 
 
 { Function to generate a IPC key. }
@@ -146,7 +155,7 @@ Function ftok (Path : pchar;  ID : cint) : TKey; {$ifdef FPC_USE_LIBC} cdecl; ex
 Type
   PShmid_DS = ^TShmid_ds;
 
-{$if defined(FreeBSD) or defined(OpenBSD)}
+{$if defined(FreeBSD) or defined(OpenBSD) or defined (NetBSD) }
   TShmid_ds = record
     shm_perm  : TIPC_Perm;
     shm_segsz : cint;