simplify some logic in scanf and remove redundant invalid-format check
[musl] / include / unistd.h
index 5ad0704..b9dc06d 100644 (file)
@@ -5,23 +5,17 @@
 extern "C" {
 #endif
 
+#include <features.h>
+
 #define STDIN_FILENO  0
 #define STDOUT_FILENO 1
 #define STDERR_FILENO 2
 
-#undef SEEK_SET
-#undef SEEK_CUR
-#undef SEEK_END
 #define SEEK_SET 0
 #define SEEK_CUR 1
 #define SEEK_END 2
 
-#undef NULL
-#ifdef __cplusplus
-#define NULL 0
-#else
-#define NULL ((void*)0)
-#endif
+#define NULL 0L
 
 #define __NEED_size_t
 #define __NEED_ssize_t
@@ -29,18 +23,19 @@ extern "C" {
 #define __NEED_gid_t
 #define __NEED_off_t
 #define __NEED_pid_t
-#define __NEED_useconds_t
 #define __NEED_intptr_t
+#define __NEED_useconds_t
 
 #include <bits/alltypes.h>
 
 int pipe(int [2]);
+int pipe2(int [2], int);
 int close(int);
 int dup(int);
 int dup2(int, int);
+int dup3(int, int, int);
 off_t lseek(int, off_t, int);
 int fsync(int);
-void sync(void);
 int fdatasync(int);
 
 ssize_t read(int, void *, size_t);
@@ -48,12 +43,6 @@ ssize_t write(int, const void *, size_t);
 ssize_t pread(int, void *, size_t, off_t);
 ssize_t pwrite(int, const void *, size_t, off_t);
 
-#define F_ULOCK 0
-#define F_LOCK  1
-#define F_TLOCK 2
-#define F_TEST  3
-int lockf(int, int, off_t);
-
 int chown(const char *, uid_t, gid_t);
 int fchown(int, uid_t, gid_t);
 int lchown(const char *, uid_t, gid_t);
@@ -63,8 +52,8 @@ int link(const char *, const char *);
 int linkat(int, const char *, int, const char *, int);
 int symlink(const char *, const char *);
 int symlinkat(const char *, int, const char *);
-int readlink(const char *, char *, size_t);
-int readlinkat(int, const char *, char *, size_t);
+ssize_t readlink(const char *__restrict, char *__restrict, size_t);
+ssize_t readlinkat(int, const char *__restrict, char *__restrict, size_t);
 int unlink(const char *);
 int unlinkat(int, const char *, int);
 int rmdir(const char *);
@@ -75,37 +64,33 @@ int ftruncate(int, off_t);
 #define R_OK 4
 #define W_OK 2
 #define X_OK 1
+
 int access(const char *, int);
 int faccessat(int, const char *, int, int);
 
 int chdir(const char *);
 int fchdir(int);
 char *getcwd(char *, size_t);
-int chroot(const char *); /* dropped */
 
 unsigned alarm(unsigned);
-useconds_t ualarm(useconds_t, useconds_t);
 unsigned sleep(unsigned);
-int usleep(useconds_t);
 int pause(void);
-int nice(int);
 
 pid_t fork(void);
-pid_t vfork(void);
 int execve(const char *, char *const [], char *const []);
 int execv(const char *, char *const []);
-int execle(const char *, ...);
-int execl(const char *, ...);
+int execle(const char *, const char *, ...);
+int execl(const char *, const char *, ...);
 int execvp(const char *, char *const []);
-int execlp(const char *, ...);
-void _exit(int);
+int execlp(const char *, const char *, ...);
+int fexecve(int, char *const [], char *const []);
+_Noreturn void _exit(int);
 
 pid_t getpid(void);
 pid_t getppid(void);
 pid_t getpgrp(void);
 pid_t getpgid(pid_t);
 int setpgid(pid_t, pid_t);
-int setpgrp(void);
 pid_t setsid(void);
 pid_t getsid(pid_t);
 char *ttyname(int);
@@ -128,28 +113,87 @@ int setegid(gid_t);
 
 char *getlogin(void);
 int getlogin_r(char *, size_t);
-long gethostid(void);
 int gethostname(char *, size_t);
-int sethostname(const char *, size_t);
-int getpagesize(void);
 char *ctermid(char *);
 
-int vhangup(void); /* dropped */
-
 int getopt(int, char * const [], const char *);
 extern char *optarg;
 extern int optind, opterr, optopt;
 
-char *crypt(const char *, const char *);
-void encrypt(char *, int);
-
-void swab(const void *, void *, ssize_t);
-
 long pathconf(const char *, int);
 long fpathconf(int, int);
 long sysconf(int);
 size_t confstr(int, char *, size_t);
 
+#define F_ULOCK 0
+#define F_LOCK  1
+#define F_TLOCK 2
+#define F_TEST  3
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int lockf(int, int, off_t);
+long gethostid(void);
+int nice(int);
+void sync(void);
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+pid_t setpgrp(void);
+char *crypt(const char *, const char *);
+void encrypt(char *, int);
+void swab(const void *__restrict, void *__restrict, ssize_t);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+int usleep(unsigned);
+unsigned ualarm(unsigned, unsigned);
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define L_SET 0
+#define L_INCR 1
+#define L_XTND 2
+int brk(void *);
+void *sbrk(intptr_t);
+pid_t vfork(void);
+int vhangup(void);
+int chroot(const char *);
+int getpagesize(void);
+int getdtablesize(void);
+int sethostname(const char *, size_t);
+int getdomainname(char *, size_t);
+int setdomainname(const char *, size_t);
+int setgroups(size_t, const gid_t *);
+char *getpass(const char *);
+int daemon(int, int);
+void setusershell(void);
+void endusershell(void);
+char *getusershell(void);
+int acct(const char *);
+long syscall(long, ...);
+#endif
+
+#ifdef _GNU_SOURCE
+extern char **environ;
+int setresuid(uid_t, uid_t, uid_t);
+int setresgid(gid_t, gid_t, gid_t);
+int getresuid(uid_t *, uid_t *, uid_t *);
+int getresgid(gid_t *, gid_t *, gid_t *);
+char *get_current_dir_name(void);
+void syncfs(int);
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define lseek64 lseek
+#define pread64 pread
+#define pwrite64 pwrite
+#define truncate64 truncate
+#define ftruncate64 ftruncate
+#define lockf64 lockf
+#define off64_t off_t
+#endif
+
 #define _XOPEN_VERSION          700
 #define _XOPEN_UNIX             1
 #define _XOPEN_ENH_I18N         1
@@ -164,6 +208,7 @@ size_t confstr(int, char *, size_t);
 #define _POSIX_MEMLOCK          _POSIX_VERSION
 #define _POSIX_MEMLOCK_RANGE    _POSIX_VERSION
 #define _POSIX_MEMORY_PROTECTION _POSIX_VERSION
+#define _POSIX_FSYNC            _POSIX_VERSION
 #define _POSIX_NO_TRUNC         1
 #define _POSIX_RAW_SOCKETS      _POSIX_VERSION
 #define _POSIX_REALTIME_SIGNALS _POSIX_VERSION
@@ -175,6 +220,9 @@ size_t confstr(int, char *, size_t);
 #define _POSIX_THREADS          _POSIX_VERSION
 #define _POSIX_THREAD_PROCESS_SHARED _POSIX_VERSION
 #define _POSIX_THREAD_SAFE_FUNCTIONS _POSIX_VERSION
+#define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION
+#define _POSIX_THREAD_ATTR_STACKSIZE _POSIX_VERSION
+#define _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_VERSION
 #define _POSIX_TIMERS           _POSIX_VERSION
 #define _POSIX_TIMEOUTS         _POSIX_VERSION
 #define _POSIX_MONOTONIC_CLOCK  _POSIX_VERSION