Репозитории ALT
5.1: | 0.30-alt3 |
4.1: | 0.30-alt3 |
4.0: | 0.30-alt3 |
3.0: | 0.28-alt1 |
Группа :: Разработка/C
Пакет: dietlibc
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: dietlibc-0.30-alt-getmntent_r.patch
Скачать
Скачать
--- 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 <stdio.h>
+#include <mntent.h>
+
+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 <stdio.h>
#include <stdlib.h>
#include <mntent.h>
#include <string.h>
-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) {