From: Eric Andersen Date: Tue, 18 Jun 2002 06:39:18 +0000 (-0000) Subject: Fix locking. Kill X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=18a62cd735142472903533b749e44f18e11719d5;p=uclinux-h8%2Fuclibc-ng.git Fix locking. Kill --- diff --git a/libc/misc/mntent/mntent.c b/libc/misc/mntent/mntent.c index 82a7e70d1..b1d27de2c 100644 --- a/libc/misc/mntent/mntent.c +++ b/libc/misc/mntent/mntent.c @@ -3,13 +3,22 @@ #include #include - -/* Reentrant version of the above function. */ +#ifdef __UCLIBC_HAS_THREADS__ +#include +static pthread_mutex_t mylock = PTHREAD_MUTEX_INITIALIZER; +# define LOCK pthread_mutex_lock(&mylock) +# define UNLOCK pthread_mutex_unlock(&mylock); +#else +# define LOCK +# define UNLOCK +#endif + +/* Reentrant version of getmntent. */ struct mntent *getmntent_r (FILE *filep, struct mntent *mnt, char *buff, int bufsize) { - char *cp, *sep = " \t\n"; - static char *ptrptr = 0; + char *cp, *ptrptr; + const char *sep = " \t\n"; if (!filep || !mnt || !buff) return NULL; @@ -55,9 +64,13 @@ struct mntent *getmntent_r (FILE *filep, struct mntent *getmntent(FILE * filep) { + struct mntent *tmp; static char buff[BUFSIZ]; static struct mntent mnt; - return(getmntent_r(filep, &mnt, buff, sizeof buff)); + LOCK; + tmp = getmntent_r(filep, &mnt, buff, sizeof buff); + UNLOCK; + return(tmp); } int addmntent(FILE * filep, const struct mntent *mnt)