Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37790883
en ru br
Репозитории ALT
5.1: 0.30-alt3
4.1: 0.30-alt3
4.0: 0.30-alt3
3.0: 0.28-alt1
www.altlinux.org/Changes

Группа :: Разработка/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) {
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin