mirror of
https://github.com/reactos/reactos.git
synced 2024-11-01 12:26:32 +00:00
417 lines
9.9 KiB
C
417 lines
9.9 KiB
C
/* @(#)libport.h 1.45 17/05/02 Copyright 1995-2017 J. Schilling */
|
|
/*
|
|
* Prototypes for POSIX standard functions that may be missing on the
|
|
* local platform and thus are implemented inside libschily.
|
|
*
|
|
* Copyright (c) 1995-2017 J. Schilling
|
|
*/
|
|
/*
|
|
* The contents of this file are subject to the terms of the
|
|
* Common Development and Distribution License, Version 1.0 only
|
|
* (the "License"). You may not use this file except in compliance
|
|
* with the License.
|
|
*
|
|
* See the file CDDL.Schily.txt in this distribution for details.
|
|
* A copy of the CDDL is also available via the Internet at
|
|
* http://www.opensource.org/licenses/cddl1.txt
|
|
*
|
|
* When distributing Covered Code, include this CDDL HEADER in each
|
|
* file and include the License file CDDL.Schily.txt from this distribution.
|
|
*/
|
|
|
|
|
|
#ifndef _SCHILY_LIBPORT_H
|
|
#define _SCHILY_LIBPORT_H
|
|
|
|
#ifndef _SCHILY_MCONFIG_H
|
|
#include <schily/mconfig.h>
|
|
#endif
|
|
#ifndef _SCHILY_TYPES_H
|
|
#include <schily/types.h>
|
|
#endif
|
|
|
|
#ifndef _SCHILY_UNISTD_H
|
|
#include <schily/unistd.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if defined(_INCL_SYS_TYPES_H) || defined(_INCL_TYPES_H) || defined(size_t)
|
|
# ifndef FOUND_SIZE_T
|
|
# define FOUND_SIZE_T
|
|
# endif
|
|
#endif
|
|
#if defined(_MSC_VER) && !defined(_SIZE_T_DEFINED)
|
|
# undef FOUND_SIZE_T
|
|
#endif
|
|
|
|
#ifdef OPENSERVER
|
|
/*
|
|
* Don't use the usleep() from libc on SCO's OPENSERVER.
|
|
* It will kill our processes with SIGALRM.
|
|
*/
|
|
/*
|
|
* Don't #undef HAVE_USLEEP in this file, SCO has a
|
|
* usleep() prototype in unistd.h
|
|
*/
|
|
/* #undef HAVE_USLEEP */
|
|
#endif
|
|
|
|
#ifdef FOUND_SIZE_T
|
|
/*
|
|
* We currently cannot define this here because there IRIX has a definition
|
|
* than violates the standard.
|
|
*/
|
|
#ifndef HAVE_SNPRINTF
|
|
/*PRINTFLIKE3*/
|
|
extern int snprintf __PR((char *, size_t, const char *, ...))
|
|
__printflike__(3, 4);
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef EOF /* stdio.h has been included */
|
|
#ifdef FOUND_SIZE_T
|
|
#ifndef HAVE_GETDELIM
|
|
extern ssize_t getdelim __PR((char **, size_t *, int, FILE *));
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef HAVE_GETHOSTID
|
|
extern long gethostid __PR((void));
|
|
#endif
|
|
#ifndef HAVE_GETPAGESIZE
|
|
extern int getpagesize __PR((void));
|
|
#endif
|
|
#ifndef HAVE_USLEEP
|
|
extern int usleep __PR((int usec));
|
|
#endif
|
|
|
|
#ifndef HAVE_STRCASECMP
|
|
extern int strcasecmp __PR((const char *, const char *));
|
|
#endif
|
|
#ifdef FOUND_SIZE_T
|
|
#ifndef HAVE_STRNCASECMP
|
|
extern int strncasecmp __PR((const char *, const char *,
|
|
size_t));
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef HAVE_STRCAT
|
|
extern char *strcat __PR((char *s1, const char *s2));
|
|
#endif
|
|
#ifndef HAVE_STRCHR
|
|
extern char *strchr __PR((const char *s1, int c));
|
|
#endif
|
|
#ifndef HAVE_STRCMP
|
|
extern int strcmp __PR((const char *s1, const char *s2));
|
|
#endif
|
|
#ifndef HAVE_STRCPY
|
|
extern char *strcpy __PR((char *s1, const char *s2));
|
|
#endif
|
|
#if !defined(HAVE_STRDUP) || defined(__SVR4)
|
|
extern char *strdup __PR((const char *s));
|
|
#endif
|
|
#ifdef FOUND_SIZE_T
|
|
#ifndef HAVE_STRNDUP
|
|
extern char *strndup __PR((const char *s, size_t len));
|
|
#endif
|
|
#ifndef HAVE_STRLEN
|
|
extern size_t strlen __PR((const char *s));
|
|
#endif
|
|
#ifndef HAVE_STRNLEN
|
|
extern size_t strnlen __PR((const char *s, size_t len));
|
|
#endif
|
|
#ifndef HAVE_STRLCAT
|
|
extern size_t strlcat __PR((char *s1, const char *s2,
|
|
size_t len));
|
|
#endif
|
|
#ifndef HAVE_STRLCPY
|
|
extern size_t strlcpy __PR((char *s1, const char *s2,
|
|
size_t len));
|
|
#endif
|
|
#ifndef HAVE_STRNCAT
|
|
extern char *strncat __PR((char *s1, const char *s2,
|
|
size_t len));
|
|
#endif
|
|
#ifndef HAVE_STRNCMP
|
|
extern int strncmp __PR((const char *s1, const char *s2,
|
|
size_t len));
|
|
#endif
|
|
#ifndef HAVE_STRNCPY
|
|
extern char *strncpy __PR((char *s1, const char *s2,
|
|
size_t len));
|
|
#endif
|
|
#endif /* FOUND_SIZE_T */
|
|
#ifndef HAVE_STRRCHR
|
|
extern char *strrchr __PR((const char *s1, int c));
|
|
#endif
|
|
|
|
#ifndef HAVE_STRSTR
|
|
extern char *strstr __PR((const char *s1, const char *s2));
|
|
#endif
|
|
|
|
#ifdef _SCHILY_WCHAR_H
|
|
#ifndef HAVE_WCSCAT
|
|
extern wchar_t *wcscat __PR((wchar_t *s1, const wchar_t *s2));
|
|
#endif
|
|
#ifndef HAVE_WCSCHR
|
|
extern wchar_t *wcschr __PR((const wchar_t *s1, wchar_t c));
|
|
#endif
|
|
#ifndef HAVE_WCSCMP
|
|
extern int wcscmp __PR((const wchar_t *s1,
|
|
const wchar_t *s2));
|
|
#endif
|
|
#ifndef HAVE_WCSCPY
|
|
extern wchar_t *wcscpy __PR((wchar_t *s1, const wchar_t *s2));
|
|
#endif
|
|
#ifndef HAVE_WCSDUP
|
|
extern wchar_t *wcsdup __PR((const wchar_t *s));
|
|
#endif
|
|
#ifdef FOUND_SIZE_T
|
|
#ifndef HAVE_WCSNDUP
|
|
extern wchar_t *wcsndup __PR((const wchar_t *s, size_t len));
|
|
#endif
|
|
#ifndef HAVE_WCSLEN
|
|
extern size_t wcslen __PR((const wchar_t *s));
|
|
#endif
|
|
#ifndef HAVE_WCSNLEN
|
|
extern size_t wcsnlen __PR((const wchar_t *s, size_t len));
|
|
#endif
|
|
#ifndef HAVE_WCSLCAT
|
|
extern size_t wcslcat __PR((wchar_t *s1, const wchar_t *s2,
|
|
size_t len));
|
|
#endif
|
|
#ifndef HAVE_WCSLCPY
|
|
extern size_t wcslcpy __PR((wchar_t *s1, const wchar_t *s2,
|
|
size_t len));
|
|
#endif
|
|
#ifndef HAVE_WCSNCAT
|
|
extern wchar_t *wcsncat __PR((wchar_t *s1, const wchar_t *s2,
|
|
size_t len));
|
|
#endif
|
|
#ifndef HAVE_WCSNCMP
|
|
extern int wcsncmp __PR((const wchar_t *s1,
|
|
const wchar_t *s2,
|
|
size_t len));
|
|
#endif
|
|
#ifndef HAVE_WCSNCPY
|
|
extern wchar_t *wcsncpy __PR((wchar_t *s1, const wchar_t *s2,
|
|
size_t len));
|
|
#endif
|
|
#endif /* FOUND_SIZE_T */
|
|
#ifndef HAVE_WCSRCHR
|
|
extern wchar_t *wcsrchr __PR((const wchar_t *s1, wchar_t c));
|
|
#endif
|
|
|
|
#ifndef HAVE_WCSSTR
|
|
extern wchar_t *wcsstr __PR((const wchar_t *s1,
|
|
const wchar_t *s2));
|
|
#endif
|
|
#endif /* _SCHILY_WCHAR_H */
|
|
|
|
#ifndef HAVE_RENAME
|
|
extern int rename __PR((const char *__old,
|
|
const char *__new));
|
|
#endif
|
|
|
|
/*
|
|
* XXX Note: libgen.h / -lgen on Solaris contain eaccess()
|
|
*/
|
|
#ifndef HAVE_EACCESS
|
|
extern int eaccess __PR((const char *name, int mode));
|
|
#endif
|
|
|
|
/*
|
|
* See also libgen.h
|
|
*/
|
|
#ifndef HAVE_BASENAME
|
|
extern char *basename __PR((char *name));
|
|
#endif
|
|
#ifndef HAVE_DIRNAME
|
|
extern char *dirname __PR((char *name));
|
|
#endif
|
|
|
|
#ifndef HAVE_TIMEGM
|
|
#if defined(_SCHILY_TIME_H)
|
|
extern time_t timegm __PR((struct tm *));
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef HAVE_GETUID
|
|
extern uid_t getuid __PR((void));
|
|
#endif
|
|
#ifndef HAVE_GETEUID
|
|
extern uid_t geteuid __PR((void));
|
|
#endif
|
|
#ifndef HAVE_SETUID
|
|
extern int setuid __PR((uid_t uid));
|
|
#endif
|
|
#ifndef HAVE_SETEUID
|
|
extern int seteuid __PR((uid_t uid));
|
|
#endif
|
|
|
|
#ifndef HAVE_GETGID
|
|
extern gid_t getgid __PR((void));
|
|
#endif
|
|
#ifndef HAVE_GETEGID
|
|
extern gid_t getegid __PR((void));
|
|
#endif
|
|
#ifndef HAVE_SETGID
|
|
extern int setgid __PR((gid_t gid));
|
|
#endif
|
|
#ifndef HAVE_SETEGID
|
|
extern int setegid __PR((gid_t gid));
|
|
#endif
|
|
|
|
#ifndef HAVE_GETPWNAM
|
|
extern struct passwd *getpwnam __PR((const char *name));
|
|
#endif
|
|
#ifndef HAVE_GETPWENT
|
|
extern struct passwd *getpwent __PR((void));
|
|
#endif
|
|
#ifndef HAVE_GETPWUID
|
|
extern struct passwd *getpwuid __PR((uid_t uid));
|
|
#endif
|
|
#ifndef HAVE_SETPWENT
|
|
extern void setpwent __PR((void));
|
|
#endif
|
|
#ifndef HAVE_ENDPWENT
|
|
extern void endpwent __PR((void));
|
|
#endif
|
|
|
|
|
|
#ifndef HAVE_GETGRNAM
|
|
extern struct group *getgrnam __PR((const char *name));
|
|
#endif
|
|
#ifndef HAVE_GETGRENT
|
|
extern struct group *getgrent __PR((void));
|
|
#endif
|
|
#ifndef HAVE_GETGRGID
|
|
extern struct group *getgrgid __PR((gid_t gid));
|
|
#endif
|
|
#ifndef HAVE_SETGRENT
|
|
extern void setgrent __PR((void));
|
|
#endif
|
|
#ifndef HAVE_ENDGRENT
|
|
extern void endgrent __PR((void));
|
|
#endif
|
|
|
|
#ifndef HAVE_FCHDIR
|
|
extern int fchdir __PR((int fd));
|
|
#endif
|
|
#ifndef HAVE_OPENAT
|
|
extern int openat __PR((int fd, const char *name, int oflag, ...));
|
|
#endif
|
|
|
|
|
|
#ifndef HAVE_GETTIMEOFDAY
|
|
#ifdef _SCHILY_TIME_H
|
|
extern int gettimeofday __PR((struct timeval *__tp, void *__tzp));
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef HAVE_FACCESSAT
|
|
extern int faccessat __PR((int fd, const char *name,
|
|
int amode, int flag));
|
|
#endif
|
|
#ifndef HAVE_FCHMODAT
|
|
extern int fchmodat __PR((int fd, const char *name,
|
|
mode_t mode, int flag));
|
|
#endif
|
|
#ifndef HAVE_LCHMOD
|
|
extern int lchmod __PR((const char *name, mode_t mode));
|
|
#endif
|
|
|
|
#ifndef HAVE_FCHOWNAT
|
|
extern int fchownat __PR((int fd, const char *name,
|
|
uid_t owner, gid_t group, int flag));
|
|
#endif
|
|
|
|
#ifndef HAVE_FDOPENDIR
|
|
#ifdef _SCHILY_DIRENT_H
|
|
extern DIR *fdopendir __PR((int fd));
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _SCHILY_STAT_H
|
|
#ifndef HAVE_FSTATAT
|
|
extern int fstatat __PR((int fd, const char *name,
|
|
struct stat *sbuf, int flag));
|
|
#endif
|
|
#endif /* _SCHILY_STAT_H */
|
|
#ifdef _SCHILY_TIME_H
|
|
#ifndef HAVE_FUTIMENS
|
|
extern int futimens __PR((int fd,
|
|
const struct timespec __times[2]));
|
|
#endif
|
|
#ifndef HAVE_FUTIMESAT
|
|
extern int futimesat __PR((int fd, const char *name,
|
|
const struct timeval __times[2]));
|
|
#endif
|
|
#ifndef HAVE_LUTIMENS
|
|
extern int lutimens __PR((const char *name,
|
|
const struct timespec __times[2]));
|
|
#endif
|
|
#endif /* _SCHILY_TIME_H */
|
|
#ifndef HAVE_LINKAT
|
|
extern int linkat __PR((int fd1, const char *name1,
|
|
int fd2, const char *name2, int flag));
|
|
#endif
|
|
#ifndef HAVE_MKDIRAT
|
|
extern int mkdirat __PR((int fd, const char *name, mode_t mode));
|
|
#endif
|
|
#ifndef HAVE_MKFIFO
|
|
extern int mkfifo __PR((const char *name, mode_t mode));
|
|
#endif
|
|
#ifndef HAVE_MKFIFOAT
|
|
extern int mkfifoat __PR((int fd, const char *name, mode_t mode));
|
|
#endif
|
|
#ifndef HAVE_MKNODAT
|
|
extern int mknodat __PR((int fd, const char *name,
|
|
mode_t mode, dev_t dev));
|
|
#endif
|
|
#ifndef HAVE_READLINKAT
|
|
extern ssize_t readlinkat __PR((int fd, const char *name,
|
|
char *lbuf, size_t lbufsize));
|
|
#endif
|
|
#ifndef HAVE_RENAMEAT
|
|
extern int renameat __PR((int oldfd, const char *__old,
|
|
int newfd, const char *__new));
|
|
#endif
|
|
#ifndef HAVE_SYMLINKAT
|
|
extern int symlinkat __PR((const char *content,
|
|
int fd, const char *name));
|
|
#endif
|
|
#ifndef HAVE_UNLINKAT
|
|
extern int unlinkat __PR((int fd, const char *name, int flag));
|
|
#endif
|
|
#ifdef _SCHILY_TIME_H
|
|
#ifndef HAVE_UTIMENS
|
|
extern int utimens __PR((const char *name,
|
|
const struct timespec __times[2]));
|
|
#endif
|
|
#ifndef HAVE_UTIMENSAT
|
|
extern int utimensat __PR((int fd, const char *name,
|
|
const struct timespec __times[2],
|
|
int flag));
|
|
#endif
|
|
#endif /* _SCHILY_TIME_H */
|
|
|
|
#ifdef __SUNOS4
|
|
/*
|
|
* Define prototypes for POSIX standard functions that are missing on SunOS-4.x
|
|
* to make compilation smooth.
|
|
*/
|
|
#include <schily/sunos4_proto.h>
|
|
|
|
#endif /* __SUNOS4 */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _SCHILY_LIBPORT_H */
|