/* @(#)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 #endif #ifndef _SCHILY_TYPES_H #include #endif #ifndef _SCHILY_UNISTD_H #include #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 #endif /* __SUNOS4 */ #ifdef __cplusplus } #endif #endif /* _SCHILY_LIBPORT_H */