diff options
Diffstat (limited to 'ULibc.pas')
| -rw-r--r-- | ULibc.pas | 448 |
1 files changed, 0 insertions, 448 deletions
@@ -25,7 +25,6 @@ interface const GLIBC_LIB = 'libc.so.6'; DL_LIB = 'libdl.so.2'; - PTHREAD_LIB = 'libpthread.so.0'; type cUShort = Word; @@ -53,7 +52,6 @@ type clock_t = Cardinal; {$ENDIF} - sig_atomic_t = Longint; error_t = Integer; __mode_t = DWORD; __dev_t = QWORD; @@ -71,10 +69,6 @@ type __blkcnt64_t = Int64; - Pidtype_t = ^idtype_t; - idtype_t = (P_ALL,P_PID,P_PGID); - - Psiginfo_t = Pointer; Prusage = Pointer; PDIR = Pointer; PFILE = Pointer; @@ -278,170 +272,6 @@ type end; PPGroup = ^PGroup; - Psigval = ^sigval; - sigval = record - case longint of - 0 : ( sival_int : longint ); - 1 : ( sival_ptr : pointer ); - end; - sigval_t = sigval; - Psigval_t = ^sigval_t; - -const - _SIGSET_NWORDS = 1024 div (8 * (sizeof(dword))); - -type - __sighandler_t = procedure(SigNum: Integer); cdecl; - P__sigset_t = ^__sigset_t; - __sigset_t = record - __val : array[0..(_SIGSET_NWORDS)-1] of dword; - end; - sigset_t = __sigset_t; - Psigset_t = ^sigset_t; - P_sigaction = ^_sigaction; - _sigaction = record // Renamed, avoid conflict with sigaction function - case integer of - 1: (sa_handler : __sighandler_t; - sa_mask : __sigset_t; - sa_flags : longint; - sa_restorer : procedure ;cdecl; - ); - // Kylix compatibility - 2: (__sigaction_handler: __sighandler_t); - end; - TSigAction = _sigaction; - PSigAction = ^TSigAction; - TRestoreHandler = procedure; cdecl; - __sigaction = _sigaction; - TSigActionHandler = procedure(Signal: Integer); cdecl; - -const - EPERM = 1; - ENOENT = 2; - ESRCH = 3; - EINTR = 4; - EIO = 5; - ENXIO = 6; - E2BIG = 7; - ENOEXEC = 8; - EBADF = 9; - ECHILD = 10; - EAGAIN = 11; - ENOMEM = 12; - EACCES = 13; - EFAULT = 14; - ENOTBLK = 15; - EBUSY = 16; - EEXIST = 17; - EXDEV = 18; - ENODEV = 19; - ENOTDIR = 20; - EISDIR = 21; - EINVAL = 22; - ENFILE = 23; - EMFILE = 24; - ENOTTY = 25; - ETXTBSY = 26; - EFBIG = 27; - ENOSPC = 28; - ESPIPE = 29; - EROFS = 30; - EMLINK = 31; - EPIPE = 32; - EDOM = 33; - ERANGE = 34; - EDEADLK = 35; - ENAMETOOLONG = 36; - ENOLCK = 37; - ENOSYS = 38; - ENOTEMPTY = 39; - ELOOP = 40; - EWOULDBLOCK = EAGAIN; - ENOMSG = 42; - EIDRM = 43; - ECHRNG = 44; - EL2NSYNC = 45; - EL3HLT = 46; - EL3RST = 47; - ELNRNG = 48; - EUNATCH = 49; - ENOCSI = 50; - EL2HLT = 51; - EBADE = 52; - EBADR = 53; - EXFULL = 54; - ENOANO = 55; - EBADRQC = 56; - EBADSLT = 57; - EDEADLOCK = EDEADLK; - EBFONT = 59; - ENOSTR = 60; - ENODATA = 61; - ETIME = 62; - ENOSR = 63; - ENONET = 64; - ENOPKG = 65; - EREMOTE = 66; - ENOLINK = 67; - EADV = 68; - ESRMNT = 69; - ECOMM = 70; - EPROTO = 71; - EMULTIHOP = 72; - EDOTDOT = 73; - EBADMSG = 74; - EOVERFLOW = 75; - ENOTUNIQ = 76; - EBADFD = 77; - EREMCHG = 78; - ELIBACC = 79; - ELIBBAD = 80; - ELIBSCN = 81; - ELIBMAX = 82; - ELIBEXEC = 83; - EILSEQ = 84; - ERESTART = 85; - ESTRPIPE = 86; - EUSERS = 87; - ENOTSOCK = 88; - EDESTADDRREQ = 89; - EMSGSIZE = 90; - EPROTOTYPE = 91; - ENOPROTOOPT = 92; - EPROTONOSUPPORT = 93; - ESOCKTNOSUPPORT = 94; - EOPNOTSUPP = 95; - EPFNOSUPPORT = 96; - EAFNOSUPPORT = 97; - EADDRINUSE = 98; - EADDRNOTAVAIL = 99; - ENETDOWN = 100; - ENETUNREACH = 101; - ENETRESET = 102; - ECONNABORTED = 103; - ECONNRESET = 104; - ENOBUFS = 105; - EISCONN = 106; - ENOTCONN = 107; - ESHUTDOWN = 108; - ETOOMANYREFS = 109; - ETIMEDOUT = 110; - ECONNREFUSED = 111; - EHOSTDOWN = 112; - EHOSTUNREACH = 113; - EALREADY = 114; - EINPROGRESS = 115; - ESTALE = 116; - EUCLEAN = 117; - ENOTNAM = 118; - ENAVAIL = 119; - EISNAM = 120; - EREMOTEIO = 121; - EDQUOT = 122; - ENOMEDIUM = 123; - EMEDIUMTYPE = 124; - ENOTSUP = EOPNOTSUPP; - ECANCELED = 125; const __S_IFMT = $F000; @@ -502,23 +332,6 @@ const S_IRWXO = S_IRWXG shr 3; const - ACCESSPERMS = (S_IRWXU or S_IRWXG) or S_IRWXO; - ALLPERMS = ((((S_ISUID or S_ISGID) or S_ISVTX) or S_IRWXU) or S_IRWXG) or S_IRWXO; - DEFFILEMODE = ((((S_IRUSR or S_IWUSR) or S_IRGRP) or S_IWGRP) or S_IROTH) or S_IWOTH; - S_BLKSIZE = 512; - -const - DT_UNKNOWN = 0; - DT_FIFO = 1; - DT_CHR = 2; - DT_DIR = 4; - DT_BLK = 6; - DT_REG = 8; - DT_LNK = 10; - DT_SOCK = 12; - DT_WHT = 14; - -const RTLD_LAZY = $00001; RTLD_NOW = $00002; RTLD_BINDING_MASK = $3; @@ -528,96 +341,8 @@ const RTLD_NODELETE = $01000; const - _PATH_DEFPATH = '/usr/bin:/bin'; - _PATH_STDPATH = '/usr/bin:/bin:/usr/sbin:/sbin'; - _PATH_BSHELL = '/bin/sh'; - _PATH_CONSOLE = '/dev/console'; - _PATH_CSHELL = '/bin/csh'; - _PATH_DEVDB = '/var/run/dev.db'; - _PATH_DEVNULL = '/dev/null'; - _PATH_DRUM = '/dev/drum'; - _PATH_KLOG = '/proc/kmsg'; - _PATH_KMEM = '/dev/kmem'; - _PATH_LASTLOG = '/var/log/lastlog'; - _PATH_MAILDIR = '/var/mail'; - _PATH_MAN = '/usr/share/man'; - _PATH_MEM = '/dev/mem'; _PATH_MNTTAB = '/etc/fstab'; _PATH_MOUNTED = '/etc/mtab'; - _PATH_NOLOGIN = '/etc/nologin'; - _PATH_PRESERVE = '/var/lib'; - _PATH_RWHODIR = '/var/spool/rwho'; - _PATH_SENDMAIL = '/usr/sbin/sendmail'; - _PATH_SHADOW = '/etc/shadow'; - _PATH_SHELLS = '/etc/shells'; - _PATH_TTY = '/dev/tty'; - _PATH_UNIX = '/boot/vmlinux'; - _PATH_UTMP = '/var/run/utmp'; - _PATH_VI = '/usr/bin/vi'; - _PATH_WTMP = '/var/log/wtmp'; - _PATH_DEV = '/dev/'; - _PATH_TMP = '/tmp/'; - _PATH_VARDB = '/var/db/'; - _PATH_VARRUN = '/var/run/'; - _PATH_VARTMP = '/var/tmp/'; - -const - WCOREFLAG = $80; - -const - SIG_ERR = (-1); - SIG_DFL = (0); - SIG_IGN = (1); - SIG_HOLD = (2); - -const - SIGHUP = 1; - SIGINT = 2; - SIGQUIT = 3; - SIGILL = 4; - SIGTRAP = 5; - SIGABRT = 6; - SIGIOT = 6; - SIGBUS = 7; - SIGFPE = 8; - SIGKILL = 9; - SIGUSR1 = 10; - SIGSEGV = 11; - SIGUSR2 = 12; - SIGPIPE = 13; - SIGALRM = 14; - SIGTERM = 15; - SIGSTKFLT = 16; - SIGCHLD = 17; - SIGCLD = SIGCHLD; - SIGCONT = 18; - SIGSTOP = 19; - SIGTSTP = 20; - SIGTTIN = 21; - SIGTTOU = 22; - SIGURG = 23; - SIGXCPU = 24; - SIGXFSZ = 25; - SIGVTALRM = 26; - SIGPROF = 27; - SIGWINCH = 28; - SIGIO = 29; - SIGPOLL = SIGIO; - SIGPWR = 30; - SIGSYS = 31; - SIGUNUSED = 31; - _NSIG = 64; - -const - WNOHANG = 1; - WUNTRACED = 2; - __WALL = $40000000; - __WCLONE = $80000000; - -const - STDIN_FILENO = 0; - STDOUT_FILENO = 1; - STDERR_FILENO = 2; const R_OK = 4; @@ -647,16 +372,6 @@ const O_NOFOLLOW = $20000; O_CLOEXEC = $80000; -const - _STAT_VER_LINUX_OLD = 1; - _STAT_VER_KERNEL = 1; - _STAT_VER_SVR4 = 2; - _STAT_VER_LINUX = 3; - _STAT_VER = _STAT_VER_LINUX; - - _MKNOD_VER_LINUX = 1; - _MKNOD_VER_SVR4 = 2; - _MKNOD_VER = _MKNOD_VER_LINUX; function stat64(const afile: PChar; buf: Pstat64): longint; cdecl; external GLIBC_LIB name 'stat64'; function lstat64(const path: PChar; buf: Pstat64): longint; cdecl; external GLIBC_LIB name 'lstat64'; @@ -693,25 +408,13 @@ function dlsym(handle: Pointer; const symbol: PChar): Pointer; cdecl; external D function dlerror: PChar; cdecl; external GLIBC_LIB name 'dlerror'; function real_libc_malloc(size: size_t): Pointer; cdecl; external GLIBC_LIB name 'malloc'; -{$IFNDEF CPUPOWERPC} function malloc(size: size_t): Pointer; cdecl; external GLIBC_LIB name 'malloc'; -{$ELSE} -function malloc(size: size_t): Pointer; -{$ENDIF} function calloc(nmemb: size_t; size: size_t): Pointer; cdecl; external GLIBC_LIB name 'calloc'; function realloc(ptr: Pointer; size: size_t): Pointer; cdecl; external GLIBC_LIB name 'realloc'; procedure real_libc_free(ptr: Pointer); cdecl; external GLIBC_LIB name 'free'; -{$IFNDEF CPUPOWERPC} procedure free(ptr: Pointer); cdecl; external GLIBC_LIB name 'free'; procedure libc_free(ptr: Pointer); cdecl; external GLIBC_LIB name 'free'; -{$ELSE} -procedure free(ptr: Pointer); -procedure libc_free(ptr: Pointer); -{$ENDIF} -procedure cfree(ptr: Pointer); cdecl; external GLIBC_LIB name 'cfree'; -function memalign(boundary: size_t; size: size_t): Pointer; cdecl; external GLIBC_LIB name 'memalign'; -function valloc(size: size_t): Pointer; cdecl; external GLIBC_LIB name 'valloc'; function memcpy(dest: Pointer; src: Pointer; n: size_t): Pointer; cdecl; external GLIBC_LIB name 'memcpy'; function memmove(dest: Pointer; src: Pointer; n: size_t): Pointer; cdecl; external GLIBC_LIB name 'memmove'; @@ -727,13 +430,8 @@ function strcmp(const s1: PChar; const s2: PChar): Longint; cdecl; external GLIB function strncmp(const s1: PChar; const s2: PChar; n: size_t): Longint; cdecl; external GLIBC_LIB name 'strncmp'; function strcasecmp(const s1: PChar; const s2: PChar): Longint; cdecl; external GLIBC_LIB name 'strcasecmp'; function strncasecmp(const s1: PChar; const s2: PChar; n: size_t): Longint; cdecl; external GLIBC_LIB name 'strncasecmp'; -{$IFNDEF CPUPOWERPC} function strdup(const s: PChar): PChar; cdecl; external GLIBC_LIB name 'strdup'; function strndup(const s: PChar; n: size_t): PChar; cdecl; external GLIBC_LIB name 'strndup'; -{$ELSE} -function strdup(const s: PChar): PChar; -function strndup(const s: PChar; n: size_t): PChar; -{$ENDIF} function strchr(const s: PChar; c: Longint): PChar; cdecl; external GLIBC_LIB name 'strchr'; function strrchr(const s: PChar; c: Longint): PChar; cdecl; external GLIBC_LIB name 'strrchr'; function strstr(const haystack: PChar; const needle: PChar): PChar; cdecl; external GLIBC_LIB name 'strstr'; @@ -745,7 +443,6 @@ function strlen(const s: PChar): size_t; cdecl; external GLIBC_LIB name 'strlen' function strnlen(const s: PChar; maxlen: size_t): size_t; cdecl; external GLIBC_LIB name 'strnlen'; function strerror(errnum: Longint): PChar; cdecl; external GLIBC_LIB name 'strerror'; function strerror_r(errnum: Longint; buf: PChar; buflen: size_t): PChar; cdecl; external GLIBC_LIB name 'strerror_r'; -function strsignal(sig: Longint): PChar; cdecl; external GLIBC_LIB name 'strsignal'; function __chdir(const path: PChar): Longint; cdecl; external GLIBC_LIB name 'chdir'; function chdir(const path: PChar): Longint; cdecl; external GLIBC_LIB name 'chdir'; @@ -754,8 +451,6 @@ function libc_chdir(const path: PChar): Longint; cdecl; external GLIBC_LIB name function errno : error_t; function __errno_location: PInteger; cdecl; external GLIBC_LIB name '__errno_location'; -function fork: __pid_t; cdecl; external GLIBC_LIB name 'fork'; -function vfork: __pid_t; cdecl; external GLIBC_LIB name 'vfork'; function link(const oldpath: PChar; const newpath: PChar): Longint; cdecl; external GLIBC_LIB name 'link'; function symlink(const oldpath: PChar; const newpath: PChar): Longint; cdecl; external GLIBC_LIB name 'symlink'; function readlink(const path: PChar; buf: PChar; bufsiz: size_t): Longint; cdecl; external GLIBC_LIB name 'readlink'; @@ -767,11 +462,6 @@ function remove(const pathname: PChar): Longint; cdecl; external GLIBC_LIB name function libc_remove(const pathname: PChar): Longint; cdecl; external GLIBC_LIB name 'remove'; function __rename(const oldpath: PChar; const newpath: PChar): Longint; cdecl; external GLIBC_LIB name 'rename'; function libc_rename(const oldpath: PChar; const newpath: PChar): Longint; cdecl; external GLIBC_LIB name 'rename'; -function wait(status: PLongint): __pid_t; cdecl; external GLIBC_LIB name 'wait'; -function waitpid(pid: __pid_t; status: Plongint; options: Longint): __pid_t; cdecl; external GLIBC_LIB name 'waitpid'; -function waitid(idtype: idtype_t; id: __id_t; infop: Psiginfo_t; options: Longint): Longint; cdecl; external GLIBC_LIB name 'waitid'; -function wait3(status: Plongint; options: Longint; rusage: Prusage): __pid_t; cdecl; external GLIBC_LIB name 'wait3'; -function wait4(pid: __pid_t; status: Plongint; options: Longint; rusage: Prusage): __pid_t; cdecl; external GLIBC_LIB name 'wait4'; function opendir(const name: PChar): PDIR; cdecl; external GLIBC_LIB name 'opendir'; function closedir(dir: PDIR): Longint; cdecl; external GLIBC_LIB name 'closedir'; @@ -785,16 +475,6 @@ function getcwd(buf: PChar; size: size_t): PChar; cdecl; external GLIBC_LIB name function get_current_dir_name: PChar; cdecl; external GLIBC_LIB name 'get_current_dir_name'; function getwd(buf: PChar): PChar; cdecl; external GLIBC_LIB name 'getwd'; -function dup(oldfd: Longint): Longint; cdecl; external GLIBC_LIB name 'dup'; -function dup2(oldfd: Longint; newfd: Longint): Longint; cdecl; external GLIBC_LIB name 'dup2'; - -function execve(const filename: PChar; const argv: PPchar; const envp: PPchar): Longint; cdecl; external GLIBC_LIB name 'execve'; -function execv(const path: PChar; const argv: PPchar): Longint; cdecl; external GLIBC_LIB name 'execv'; -function execle(const path: PChar; const arg: PChar): Longint; cdecl; varargs; external GLIBC_LIB name 'execle'; -function execl(const path: PChar; const arg: PChar): Longint; cdecl; varargs; external GLIBC_LIB name 'execl'; -function execvp(const afile: PChar; const argv: PPchar): Longint; cdecl; external GLIBC_LIB name 'execvp'; -function execlp(const afile: PChar; const arg: PChar): Longint; cdecl; varargs; external GLIBC_LIB name 'execlp'; - function getpid: __pid_t; cdecl; external GLIBC_LIB name 'getpid'; function getppid: __pid_t; cdecl; external GLIBC_LIB name 'getppid'; function getpgrp: __pid_t; cdecl; external GLIBC_LIB name 'getpgrp'; @@ -825,41 +505,6 @@ function localtime(timep: Ptime_t): Ptm; cdecl; external GLIBC_LIB name 'localti function ctime(timep: Ptime_t): PChar; cdecl; external GLIBC_LIB name 'ctime'; function usleep(usec: DWord): Longint; cdecl; external GLIBC_LIB name 'usleep'; -function mktemp(template: PChar): PChar; cdecl; external GLIBC_LIB name 'mktemp'; -function mkstemp(template: PChar): Longint; cdecl; external GLIBC_LIB name 'mkstemp'; -function mkstemp64(template: PChar): Longint; cdecl; external GLIBC_LIB name 'mkstemp64'; -function mkdtemp(template: PChar): PChar; cdecl; external GLIBC_LIB name 'mkdtemp'; - -function fprintf(stream: PFILE; const format: PChar): Longint; cdecl; varargs; external GLIBC_LIB name 'fprintf'; -function printf(const format: PChar): Longint; cdecl; varargs; external GLIBC_LIB name 'printf'; -function sprintf(s: PChar; const format: PChar): Longint; varargs; cdecl; external GLIBC_LIB name 'sprintf'; -function snprintf(s: PChar; size: size_t; const format: PChar): Longint; varargs; cdecl; external GLIBC_LIB name 'snprintf'; - -function WEXITSTATUS(Status: longint): longint; -function WTERMSIG(Status: longint): longint; -function WSTOPSIG(Status: longint): longint; -function WIFEXITED(Status: longint): Boolean; -function WIFSIGNALED(Status: longint): Boolean; -function WIFSTOPPED(Status: longint): Boolean; -function WCOREDUMP(Status: longint): Boolean; -function W_EXITCODE(ReturnCode, Signal: longint): longint; -function W_STOPCODE(Signal: longint): longint; - -procedure _exit(status: longint); cdecl; external GLIBC_LIB name '_exit'; - -function gethostname(name: PChar; len: size_t): Longint; cdecl; external GLIBC_LIB name 'gethostname'; - -function sigqueue(pid: __pid_t; sig: Longint; val: sigval): Longint; cdecl; external GLIBC_LIB name 'sigqueue'; -function sigaction(sig: Longint; Action: PSigAction; OldAction: PSigAction): Integer; cdecl; external GLIBC_LIB name 'sigaction'; -function __system(const command: PChar): Longint; cdecl; external GLIBC_LIB name 'system'; -function system(const command: PChar): Longint; cdecl; external GLIBC_LIB name 'system'; -function libc_system(const command: PChar): Longint; cdecl; external GLIBC_LIB name 'system'; - -procedure perror(const s: PChar); cdecl; external GLIBC_LIB name 'perror'; -function popen(const command: PChar; const _type: PChar): PFILE; cdecl; external GLIBC_LIB name 'popen'; -function pclose(stream: PFILE): Longint; cdecl; external GLIBC_LIB name 'pclose'; -function pipe(pipedes: Plongint): Longint; cdecl; external GLIBC_LIB name 'pipe'; - function fopen(const path: PChar; const mode: PChar): PFILE; cdecl; external GLIBC_LIB name 'fopen'; function fopen64(const path: PChar; const mode: PChar): PFILE; cdecl; external GLIBC_LIB name 'fopen64'; function fdopen(fd: Longint; mode: PChar): PFILE; cdecl; external GLIBC_LIB name 'fdopen'; @@ -883,11 +528,8 @@ function fsetpos64(stream: PFILE; pos: Pfpos64_t): Longint; cdecl; external GLIB function feof(stream: PFILE): Longint; cdecl; external GLIBC_LIB name 'feof'; function ferror(stream: PFILE): Longint; cdecl; external GLIBC_LIB name 'ferror'; -function fcntl(fd: Longint; cmd: Longint): Longint; cdecl; varargs; external GLIBC_LIB name 'fcntl'; function open(const pathname: PChar; flags: Longint; mode: Longint): Longint; cdecl; varargs; external GLIBC_LIB name 'open'; function open64(const pathname: PChar; flags: Longint; mode: Longint): Longint; cdecl; varargs; external GLIBC_LIB name 'open64'; -function creat(const pathname: PChar; mode: __mode_t): Longint; cdecl; external GLIBC_LIB name 'creat'; -function creat64(const pathname: PChar; mode: __mode_t): Longint; cdecl; external GLIBC_LIB name 'creat64'; function lseek(fd: longint; offset: __off_t; whence: longint):__off_t; cdecl; external GLIBC_LIB name 'lseek'; function lseek64(fd: longint; offset: __off64_t; whence: longint):__off64_t; cdecl; external GLIBC_LIB name 'lseek64'; @@ -908,17 +550,9 @@ function euidaccess(pathname: PChar; mode: Longint): Longint; cdecl; external GL function setenv(name: PChar; value: PChar; overwrite: Longint): Longint; cdecl; external GLIBC_LIB name 'setenv'; -type pthread_t = {$ifdef cpu64}QWord{$else}DWord{$endif}; - -function pthread_self: pthread_t; cdecl; external PTHREAD_LIB name 'pthread_self'; - implementation -{$IFDEF CPUPOWERPC} -uses SysUtils; -{$ENDIF} - function errno : error_t; begin Result := __errno_location()^; @@ -964,88 +598,6 @@ begin Result := __S_ISTYPE(mode, __S_IFSOCK); end; -Function WEXITSTATUS(Status: longint): longint; -begin - Result:=(Status and $FF00) shr 8; -end; - - -Function WTERMSIG(Status: longint): longint; -begin - Result:=(Status and $7F); -end; - - -Function WSTOPSIG(Status: longint): longint; -begin - Result:=WEXITSTATUS(Status); -end; - - -Function WIFEXITED(Status: longint): Boolean; -begin - Result:=(WTERMSIG(Status)=0); -end; - - -Function WIFSIGNALED(Status: longint): Boolean; -begin - Result:=(not WIFSTOPPED(Status)) and (not WIFEXITED(Status)); -end; - - -Function WIFSTOPPED(Status: longint): Boolean; -begin - Result:=((Status and $FF)=$7F); -end; - - -Function WCOREDUMP(Status: longint): Boolean; -begin - Result:=((Status and WCOREFLAG)<>0); -end; - - -Function W_EXITCODE(ReturnCode, Signal: longint): longint; -begin - Result:=(ReturnCode shl 8) or Signal; -end; - - -Function W_STOPCODE(Signal: longint): longint; -begin - Result:=(Signal shl 8) or $7F; -end; - - -{$IFDEF CPUPOWERPC} -function malloc(size: size_t): Pointer; -begin - Result := GetMem(size); -end; - -procedure libc_free(ptr: Pointer); -begin - FreeMem(ptr); -end; - -procedure free(ptr: Pointer); -begin - libc_free(ptr); -end; - -function strdup(const s: PChar): PChar; -begin - Result := GetMem(strlen(s) + 1); - SysUtils.StrLCopy(Result, s, strlen(s) + 1); -end; - -function strndup(const s: PChar; n: size_t): PChar; -begin - Result := GetMem(n + 1); - SysUtils.StrLCopy(Result, s, n); -end; -{$ENDIF} end. |
