summaryrefslogtreecommitdiff
path: root/rtl/freebsd
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-06-08 10:44:56 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-06-08 10:44:56 +0000
commit4807cd604f97887beb0f09c4c2d2b3ab6bb1c5ab (patch)
tree26ef3cc0fad81daa0c54f022cf53a2bb6587f06b /rtl/freebsd
parentba3f52a5b44d70a62a973f6da4f3a728c0a69799 (diff)
downloadfpc-4807cd604f97887beb0f09c4c2d2b3ab6bb1c5ab.tar.gz
* pathname functions
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@17692 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/freebsd')
-rw-r--r--rtl/freebsd/freebsd.pas37
1 files changed, 36 insertions, 1 deletions
diff --git a/rtl/freebsd/freebsd.pas b/rtl/freebsd/freebsd.pas
index d477bf1764..4e72209531 100644
--- a/rtl/freebsd/freebsd.pas
+++ b/rtl/freebsd/freebsd.pas
@@ -202,9 +202,14 @@ Const
MAP_NOSYNC = $0800; { page to but do not sync underlying file}
MAP_NOCORE = $20000;{ dont include these pages in a coredump}
+
+function kernproc_getgenvalue(pid:pid_t;kernproc_variable:cint;var s:ansistring):cint;
+function kernproc_getargs(pid:pid_t;var fn:ansistring):cint;
+function kernproc_getpath(pid:pid_t;var fn:ansistring):cint;
+
implementation
-Uses
+Uses Sysctl,
{$ifndef FPC_USE_LIBC} SysCall; {$else} InitC; {$endif}
{$IFNDEF FPC_USE_LIBC}
@@ -304,4 +309,34 @@ begin
end;
{$ENDIF}
+function kernproc_getgenvalue(pid:pid_t;kernproc_variable:cint;var s:ansistring):cint;
+
+var mib: array[0..3] of cint;
+ argv_len : size_t;
+ ret:cint;
+Begin
+ mib[0]:=CTL_KERN;
+ mib[1]:=kern_proc;
+ Mib[2]:=kernproc_variable;
+ Mib[3]:=pid;
+ setlength(s,arg_max);
+ argv_len:=ARG_MAX;
+ ret:=fpsysctl(@mib, high(mib)+1, @s[1], @argv_len, NIL, 0);
+ if ret<>-1 then
+ setlength(s,argv_len)
+ else
+ setlength(s,0);
+ kernproc_getgenvalue:=ret;
+end;
+
+function kernproc_getargs(pid:pid_t;var fn:ansistring):cint;
+begin
+ kernproc_getargs:=kernproc_getgenvalue(pid,KERN_PROC_ARGS,fn);
+end;
+
+function kernproc_getpath(pid:pid_t;var fn:ansistring):cint;
+begin
+ kernproc_getpath:=kernproc_getgenvalue(pid,KERN_PROC_PATHNAME,fn);
+end;
+
end.