--- dietlibc-0.30/include/mntent.h.alt-getmntent_r 2006-12-20 17:57:42 +0300 +++ dietlibc-0.30/include/mntent.h 2006-12-20 17:59:14 +0300 @@ -45,7 +45,7 @@ extern FILE *setmntent (const char *file check). */ extern struct mntent *getmntent (FILE* stream) __THROW; -#ifdef __USE_MISC +#if defined _GNU_SOURCE || defined _BSD_SOURCE /* Reentrant version of the above function. */ extern struct mntent *getmntent_r (FILE* stream, struct mntent* result, --- dietlibc-0.30/libugly/getmntent_nor.c.alt-getmntent_r 2006-12-20 17:57:43 +0300 +++ dietlibc-0.30/libugly/getmntent_nor.c 2006-12-20 17:59:54 +0300 @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include +#include + +struct mntent *getmntent(FILE *filep) { + static struct mntent m; + static char buf[1024]; + return getmntent_r(filep,&m,buf,sizeof(buf)); +} --- dietlibc-0.30/libugly/getmntent.c.alt-getmntent_r 2006-12-20 17:57:42 +0300 +++ dietlibc-0.30/libugly/getmntent.c 2006-12-20 17:59:47 +0300 @@ -1,24 +1,23 @@ +#define _GNU_SOURCE #include #include #include #include -struct mntent *getmntent(FILE *filep) { - static struct mntent m; - static char buf[1024]; +struct mntent *getmntent_r(FILE *filep, struct mntent *m, char *buf, int size) { do { char *tmp=buf; int num; - if (!fgets(buf,1024,filep)) return 0; + if (!fgets(buf,size,filep)) return 0; /* "/dev/ide/host0/bus0/target0/lun0/part2 / reiserfs defaults 1 1" */ for (num=0; num<6; ++num) { switch (num) { - case 0: m.mnt_fsname=tmp; break; - case 1: m.mnt_dir=tmp; break; - case 2: m.mnt_type=tmp; break; - case 3: m.mnt_opts=tmp; break; - case 4: m.mnt_freq=strtol(tmp,&tmp,0); if (*tmp!=' ' && *tmp!='\t') continue; break; - case 5: m.mnt_passno=strtol(tmp,&tmp,0); if (*tmp=='\n') return &m; break; + case 0: m->mnt_fsname=tmp; break; + case 1: m->mnt_dir=tmp; break; + case 2: m->mnt_type=tmp; break; + case 3: m->mnt_opts=tmp; break; + case 4: m->mnt_freq=strtol(tmp,&tmp,0); if (*tmp!=' ' && *tmp!='\t') continue; break; + case 5: m->mnt_passno=strtol(tmp,&tmp,0); if (*tmp=='\n') return m; break; } while (*tmp && *tmp!=' ' && *tmp!='\n' && *tmp!='\t') ++tmp; if (*tmp) {