diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-04-06 20:28:45 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-04-06 20:28:45 +0000 |
commit | 6278781655261a5011376b2fa2600996e32ca889 (patch) | |
tree | 11783e71b36c8c546c4dc02dff355b0f2478978b | |
parent | a704ccaa5232184844cd67315951b39f85a6ba04 (diff) |
Fix include/errno.h to not use kernel header, and instead use bits/errno.h.
This required we use _LIBC instead of __LIBC__ to be consistent with glibc.
This had some sideffects in sys/syscalls.h. While fixing things, I made
everything use __set_errno() for (eventual) thread support.
-Erik
61 files changed, 176 insertions, 109 deletions
@@ -34,7 +34,7 @@ endif ARFLAGS=r -CCFLAGS=$(WARNINGS) $(OPTIMIZATION) -fno-builtin -nostdinc $(CPUFLAGS) -I$(TOPDIR)include -I$(GCCINCDIR) -I. -D__LIBC__ +CCFLAGS=$(WARNINGS) $(OPTIMIZATION) -fno-builtin -nostdinc $(CPUFLAGS) -I$(TOPDIR)include -I$(GCCINCDIR) -I. -D_LIBC CFLAGS=$(ARCH_CFLAGS) $(CCFLAGS) $(DEFS) $(ARCH_CFLAGS2) diff --git a/include/errno.h b/include/errno.h index f96590c2e..da7f7a0e4 100644 --- a/include/errno.h +++ b/include/errno.h @@ -1,8 +1,8 @@ -#ifndef __ERRNO_H -#define __ERRNO_H +#ifndef _ERRNO_H +#define _ERRNO_H #include <features.h> -#include <linux/errno.h> +#include <bits/errno.h> extern int sys_nerr; extern const char *const sys_errlist[]; @@ -10,8 +10,11 @@ extern const char *const sys_errlist[]; #define _sys_nerr sys_nerr #define _sys_errlist sys_errlist +#ifndef errno extern int errno; +#endif extern void perror __P ((__const char* __s)); extern char* strerror __P ((int __errno)); + #endif diff --git a/include/features.h b/include/features.h index 93c41d7a1..475d62a85 100644 --- a/include/features.h +++ b/include/features.h @@ -15,7 +15,7 @@ * their developers intended. This is IMHO, pardonable, since these defines * are not really intended to check for the presence of a particular library, * but rather are used to define an _interface_. */ -#if !defined __LIBC__ || defined __FORCE_GLIBC__ +#if !defined _LIBC || defined __FORCE_GLIBC__ # define __GNU_LIBRARY__ 6 # define __GLIBC__ 2 # define __GLIBC_MINOR__ 1 diff --git a/include/grp.h b/include/grp.h index 96b2b4b65..4ecef44f0 100644 --- a/include/grp.h +++ b/include/grp.h @@ -27,7 +27,7 @@ extern int setgroups __P ((size_t n, __const gid_t * groups)); extern int initgroups __P ((__const char * user, gid_t gid)); -#ifdef __LIBC__ +#ifdef _LIBC extern struct group * __getgrent __P ((int grp_fd)); #endif diff --git a/include/pwd.h b/include/pwd.h index 6cadcf38a..64d8bc6ef 100644 --- a/include/pwd.h +++ b/include/pwd.h @@ -47,7 +47,7 @@ extern int fgetpwent_r __P ((FILE *__restrict __stream, char *__restrict __buffer, size_t __buflen, struct passwd **__restrict __result)); -#ifdef __LIBC__ +#ifdef _LIBC /* This is used internally to uClibc */ extern int __getpwent_r(struct passwd * passwd, char * line_buff, size_t buflen, int pwd_fd); diff --git a/include/utmp.h b/include/utmp.h index 102af2f6c..c98caa5ce 100644 --- a/include/utmp.h +++ b/include/utmp.h @@ -45,7 +45,7 @@ extern struct utmp * getutline __P ((struct utmp *)); extern struct utmp * pututline __P ((struct utmp *)); extern void endutent __P ((void)); -#ifdef __LIBC__ +#ifdef _LIBC struct utmp * __getutent __P ((int)); #endif diff --git a/libc/inet/hostid.c b/libc/inet/hostid.c index 84a441acf..0873aa4fc 100644 --- a/libc/inet/hostid.c +++ b/libc/inet/hostid.c @@ -17,7 +17,7 @@ int sethostid(long int new_id) int fd; int ret; - if (geteuid() || getuid()) return errno=EPERM; + if (geteuid() || getuid()) return __set_errno(EPERM); if ((fd=open(HOSTID,O_CREAT|O_WRONLY,0644))<0) return -1; ret = write(fd,(void *)&new_id,sizeof(new_id)) == sizeof(new_id) ? 0 : -1; diff --git a/libc/inet/rpc/bindresvport.c b/libc/inet/rpc/bindresvport.c index ad8678416..e71dff7f4 100644 --- a/libc/inet/rpc/bindresvport.c +++ b/libc/inet/rpc/bindresvport.c @@ -62,14 +62,14 @@ struct sockaddr_in *sin; bzero(sin, sizeof(*sin)); sin->sin_family = AF_INET; } else if (sin->sin_family != AF_INET) { - errno = EPFNOSUPPORT; + __set_errno(EPFNOSUPPORT); return (-1); } if (port == 0) { port = (getpid() % NPORTS) + STARTPORT; } res = -1; - errno = EADDRINUSE; + __set_errno(EADDRINUSE); for (i = 0; i < NPORTS && res < 0 && errno == EADDRINUSE; i++) { sin->sin_port = htons(port++); if (port > ENDPORT) { diff --git a/libc/misc/dirent/closedir.c b/libc/misc/dirent/closedir.c index f2ead00f2..a2ac83b17 100644 --- a/libc/misc/dirent/closedir.c +++ b/libc/misc/dirent/closedir.c @@ -9,13 +9,13 @@ int closedir(DIR * dir) int fd; if (!dir) { - errno = EBADF; + __set_errno(EBADF); return -1; } /* We need to check dd_fd. */ if (dir->dd_fd == -1) { - errno = EBADF; + __set_errno(EBADF); return -1; } fd = dir->dd_fd; diff --git a/libc/misc/dirent/dirfd.c b/libc/misc/dirent/dirfd.c index d401dccd2..d6c1e6647 100644 --- a/libc/misc/dirent/dirfd.c +++ b/libc/misc/dirent/dirfd.c @@ -4,7 +4,7 @@ int dirfd(DIR * dir) { if (!dir || dir->dd_fd == -1) { - errno = EBADF; + __set_errno(EBADF); return -1; } diff --git a/libc/misc/dirent/opendir.c b/libc/misc/dirent/opendir.c index 329515447..0ac1637b3 100644 --- a/libc/misc/dirent/opendir.c +++ b/libc/misc/dirent/opendir.c @@ -21,7 +21,7 @@ DIR *opendir(const char *name) if (stat(name, &statbuf)) return NULL; if (!S_ISDIR(statbuf.st_mode)) { - errno = ENOTDIR; + __set_errno(ENOTDIR); return NULL; } if ((fd = open(name, O_RDONLY)) < 0) @@ -33,7 +33,7 @@ DIR *opendir(const char *name) return NULL; if (!(ptr = malloc(sizeof(*ptr)))) { close(fd); - errno = ENOMEM; + __set_errno(ENOMEM); return NULL; } @@ -44,7 +44,7 @@ DIR *opendir(const char *name) if (!(buf = malloc(ptr->dd_max))) { close(fd); free(ptr); - errno = ENOMEM; + __set_errno(ENOMEM); return NULL; } ptr->dd_fd = fd; diff --git a/libc/misc/dirent/readdir.c b/libc/misc/dirent/readdir.c index a755ed24d..0bb03f4c2 100644 --- a/libc/misc/dirent/readdir.c +++ b/libc/misc/dirent/readdir.c @@ -14,7 +14,7 @@ struct dirent *readdir(DIR * dir) struct dirent *de; if (!dir) { - errno = EBADF; + __set_errno(EBADF); return NULL; } @@ -37,7 +37,7 @@ struct dirent *readdir(DIR * dir) dir->dd_getdents = no_getdents; abort(); } - errno = result; + __set_errno(result); } return NULL; @@ -63,7 +63,7 @@ struct dirent *readdir(DIR * dir) if (strlen((char *) &de->d_type) > 10) de->d_name[10] = 0; strcpy(dir->dd_buf->d_name, (char *) &de->d_name); - errno = 0; + __set_errno(0); return dir->dd_buf; } diff --git a/libc/misc/dirent/rewinddir.c b/libc/misc/dirent/rewinddir.c index 9d147fca2..2fff9101c 100644 --- a/libc/misc/dirent/rewinddir.c +++ b/libc/misc/dirent/rewinddir.c @@ -7,7 +7,7 @@ void rewinddir(DIR * dir) { if (!dir) { - errno = EBADF; + __set_errno(EBADF); return; } lseek(dir->dd_fd, 0, SEEK_SET); diff --git a/libc/misc/dirent/seekdir.c b/libc/misc/dirent/seekdir.c index 7e4f24f72..3ff9f5da9 100644 --- a/libc/misc/dirent/seekdir.c +++ b/libc/misc/dirent/seekdir.c @@ -6,7 +6,7 @@ void seekdir(DIR * dir, off_t offset) { if (!dir) { - errno = EBADF; + __set_errno(EBADF); return; } dir->dd_nextoff = lseek(dir->dd_fd, offset, SEEK_SET); diff --git a/libc/misc/dirent/telldir.c b/libc/misc/dirent/telldir.c index 33e163aba..872cddbf1 100644 --- a/libc/misc/dirent/telldir.c +++ b/libc/misc/dirent/telldir.c @@ -8,7 +8,7 @@ off_t telldir(DIR * dir) off_t offset; if (!dir) { - errno = EBADF; + __set_errno(EBADF); return -1; } @@ -27,7 +27,7 @@ off_t telldir(DIR * dir) break; default: - errno = EBADF; + __set_errno(EBADF); offset = -1; } diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c index 23ca473ee..26c028015 100644 --- a/libc/misc/internals/__uClibc_main.c +++ b/libc/misc/internals/__uClibc_main.c @@ -64,7 +64,7 @@ void __uClibc_main(int argc, char **argv, char **envp) * have resulted in errno being set nonzero, so set it to 0 before * we call main. */ - errno = 0; + __set_errno(0); /* * Finally, invoke application's main and then exit. diff --git a/libc/misc/lock/flock.c b/libc/misc/lock/flock.c index 3c1264655..80d15dfd4 100644 --- a/libc/misc/lock/flock.c +++ b/libc/misc/lock/flock.c @@ -42,7 +42,7 @@ int flock( int fd, int operation) lbuf.l_type = F_UNLCK; break; default: - errno = EINVAL; + __set_errno(EINVAL); return -1; } diff --git a/libc/misc/regex/regex.c b/libc/misc/regex/regex.c index 64e754ee0..19e3e0cbb 100644 --- a/libc/misc/regex/regex.c +++ b/libc/misc/regex/regex.c @@ -19,6 +19,9 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* To exclude some unwanted junk.... */ +#undef _LIBC + /* AIX requires this to be the first thing in the file. */ #if defined _AIX && !defined REGEX_MALLOC #pragma alloca diff --git a/libc/misc/syslog/syslog.c b/libc/misc/syslog/syslog.c index 53a00f86d..b3c53ff7d 100644 --- a/libc/misc/syslog/syslog.c +++ b/libc/misc/syslog/syslog.c @@ -224,7 +224,7 @@ vsyslog( int pri, const char *fmt, va_list ap ) */ end = tbuf + sizeof(tbuf) - 1; - errno = saved_errno; + __set_errno(saved_errno); p += vsnprintf(p, end - p, fmt, ap); if (p >= end || p < head_end) { /* Returned -1 in case of error... */ static char truncate_msg[12] = "[truncated] "; diff --git a/libc/misc/time/adjtime.c b/libc/misc/time/adjtime.c index 12c1a2a40..2a9190e9b 100644 --- a/libc/misc/time/adjtime.c +++ b/libc/misc/time/adjtime.c @@ -24,7 +24,7 @@ adjtime(const struct timeval * itv, struct timeval * otv) tmp.tv_usec = itv->tv_usec % 1000000L; if (tmp.tv_sec > MAX_SEC || tmp.tv_sec < MIN_SEC) { - errno = EINVAL; + __set_errno(EINVAL); return -1; } tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L; diff --git a/libc/pwd_grp/fgetgrent.c b/libc/pwd_grp/fgetgrent.c index 09701a38b..50aa01722 100644 --- a/libc/pwd_grp/fgetgrent.c +++ b/libc/pwd_grp/fgetgrent.c @@ -25,7 +25,7 @@ struct group *fgetgrent(FILE * file) { if (file == NULL) { - errno = EINTR; + __set_errno(EINTR); return NULL; } diff --git a/libc/pwd_grp/fgetpwent.c b/libc/pwd_grp/fgetpwent.c index 74c59427c..aab1ec744 100644 --- a/libc/pwd_grp/fgetpwent.c +++ b/libc/pwd_grp/fgetpwent.c @@ -32,7 +32,7 @@ int fgetpwent_r (FILE *file, struct passwd *password, char *buff, size_t buflen, struct passwd **crap) { if (file == NULL) { - errno = EINTR; + __set_errno(EINTR); return -1; } return(__getpwent_r(password, buff, buflen, fileno(file))); diff --git a/libc/pwd_grp/getgrnam.c b/libc/pwd_grp/getgrnam.c index 999404284..6f2634cee 100644 --- a/libc/pwd_grp/getgrnam.c +++ b/libc/pwd_grp/getgrnam.c @@ -30,7 +30,7 @@ struct group *getgrnam(const char *name) struct group *group; if (name == NULL) { - errno = EINVAL; + __set_errno(EINVAL); return NULL; } diff --git a/libc/pwd_grp/getpw.c b/libc/pwd_grp/getpw.c index f0663c917..83f6fe973 100644 --- a/libc/pwd_grp/getpw.c +++ b/libc/pwd_grp/getpw.c @@ -28,7 +28,7 @@ int getpw(uid_t uid, char *buf) struct passwd *passwd; if (buf == NULL) { - errno = EINVAL; + __set_errno(EINVAL); return -1; } if ((passwd = getpwuid(uid)) == NULL) @@ -38,7 +38,7 @@ int getpw(uid_t uid, char *buf) (buf, "%s:%s:%u:%u:%s:%s:%s", passwd->pw_name, passwd->pw_passwd, passwd->pw_gid, passwd->pw_uid, passwd->pw_gecos, passwd->pw_dir, passwd->pw_shell) < 0) { - errno = ENOBUFS; + __set_errno(ENOBUFS); return -1; } diff --git a/libc/pwd_grp/getpwnam.c b/libc/pwd_grp/getpwnam.c index 399e24ddc..5cb4f64f8 100644 --- a/libc/pwd_grp/getpwnam.c +++ b/libc/pwd_grp/getpwnam.c @@ -38,7 +38,7 @@ int getpwnam_r (const char *name, struct passwd *password, int passwd_fd; if (name == NULL) { - errno = EINVAL; + __set_errno(EINVAL); return -1; } diff --git a/libc/pwd_grp/putpwent.c b/libc/pwd_grp/putpwent.c index da8e13d67..014cefa86 100644 --- a/libc/pwd_grp/putpwent.c +++ b/libc/pwd_grp/putpwent.c @@ -25,7 +25,7 @@ int putpwent(const struct passwd *passwd, FILE * f) { if (passwd == NULL || f == NULL) { - errno = EINVAL; + __set_errno(EINVAL); return -1; } if (fprintf diff --git a/libc/signal/sigaddset.c b/libc/signal/sigaddset.c index ec1c96e9b..269f7d367 100644 --- a/libc/signal/sigaddset.c +++ b/libc/signal/sigaddset.c @@ -25,7 +25,7 @@ int sigaddset ( sigset_t *set, int signo) { if (set == NULL || signo <= 0 || signo >= NSIG) { - errno = EINVAL; + __set_errno(EINVAL); return -1; } diff --git a/libc/signal/sigdelset.c b/libc/signal/sigdelset.c index daa545624..958f1d44a 100644 --- a/libc/signal/sigdelset.c +++ b/libc/signal/sigdelset.c @@ -23,7 +23,7 @@ int sigdelset ( sigset_t *set, int signo) { if (set == NULL || signo <= 0 || signo >= NSIG) { - errno = EINVAL; + __set_errno(EINVAL); return -1; } diff --git a/libc/signal/sigemptyset.c b/libc/signal/sigemptyset.c index c38cb0e5a..19d8dabdf 100644 --- a/libc/signal/sigemptyset.c +++ b/libc/signal/sigemptyset.c @@ -25,7 +25,7 @@ int sigemptyset ( sigset_t *set) { if (set == NULL) { - errno = EINVAL; + __set_errno(EINVAL); return -1; } diff --git a/libc/signal/sigfillset.c b/libc/signal/sigfillset.c index 1d67f1dc5..c3ebcce4b 100644 --- a/libc/signal/sigfillset.c +++ b/libc/signal/sigfillset.c @@ -27,7 +27,7 @@ sigfillset (set) { if (set == NULL) { - errno = EINVAL; + __set_errno(EINVAL); return -1; } diff --git a/libc/signal/sigismem.c b/libc/signal/sigismem.c index 3e9b67c6c..64b14f37e 100644 --- a/libc/signal/sigismem.c +++ b/libc/signal/sigismem.c @@ -25,7 +25,7 @@ int sigismember ( const sigset_t *set, int signo) { if (set == NULL || signo <= 0 || signo >= NSIG) { - errno=EINVAL; + __set_errno(EINVAL); return -1; } diff --git a/libc/stdio/getdelim.c b/libc/stdio/getdelim.c index 6f9ebb4fb..9181f9aa0 100644 --- a/libc/stdio/getdelim.c +++ b/libc/stdio/getdelim.c @@ -43,14 +43,14 @@ ssize_t getdelim(char **linebuf, size_t *linebufsz, int delimiter, FILE *file) if ((file == NULL || linebuf==NULL || *linebuf == NULL || *linebufsz == 0) && !(*linebuf == NULL && *linebufsz ==0 )) { - errno=EINVAL; + __set_errno(EINVAL); return -1; } if (*linebuf == NULL && *linebufsz == 0){ *linebuf = malloc(GROWBY); if (!*linebuf) { - errno=ENOMEM; + __set_errno(ENOMEM); return -1; } *linebufsz += GROWBY; @@ -64,7 +64,7 @@ ssize_t getdelim(char **linebuf, size_t *linebufsz, int delimiter, FILE *file) while (idx > *linebufsz-2) { *linebuf = realloc(*linebuf, *linebufsz += GROWBY); if (!*linebuf) { - errno=ENOMEM; + __set_errno(ENOMEM); return -1; } } diff --git a/libc/stdio/popen.c b/libc/stdio/popen.c index bc91bb73b..0a91f0e22 100644 --- a/libc/stdio/popen.c +++ b/libc/stdio/popen.c @@ -21,7 +21,7 @@ FILE *popen (const char *command, const char *mode) reading = (mode[0] == 'r'); if ((!reading && (mode[0] != 'w')) || mode[1]) { - errno = EINVAL; /* Invalid mode arg. */ + __set_errno(EINVAL); /* Invalid mode arg |