diff options
author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-06-08 10:44:56 +0000 |
---|---|---|
committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-06-08 10:44:56 +0000 |
commit | 4807cd604f97887beb0f09c4c2d2b3ab6bb1c5ab (patch) | |
tree | 26ef3cc0fad81daa0c54f022cf53a2bb6587f06b /rtl | |
parent | ba3f52a5b44d70a62a973f6da4f3a728c0a69799 (diff) | |
download | fpc-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')
-rw-r--r-- | rtl/freebsd/freebsd.pas | 37 |
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. |