mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-05-21 04:52:11 +02:00
Consistently use getmntent_r() and fall back to getmntent(). (#515492)
2008-02-09 Matthias Clasen <mclasen@redhat.com> * gunixmounts.c: Consistently use getmntent_r() and fall back to getmntent(). (#515492) svn path=/trunk/; revision=6490
This commit is contained in:
parent
8ad07dcf1c
commit
0766a1ec39
@ -1,3 +1,17 @@
|
|||||||
|
2008-02-09 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gunixmounts.c: Consistently use getmntent_r() and fall
|
||||||
|
back to getmntent(). (#515492)
|
||||||
|
|
||||||
|
2008-02-09 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gbufferedinputstream.c:
|
||||||
|
* ginputstream.c:
|
||||||
|
* goutputstream.c: Use G_STRFUNC instead of __FUNCTION__.
|
||||||
|
|
||||||
|
* tests/data-input-stream.c:
|
||||||
|
* tests/data-output-stream.c: Portability fixes.
|
||||||
|
|
||||||
2008-02-08 Alexander Larsson <alexl@redhat.com>
|
2008-02-08 Alexander Larsson <alexl@redhat.com>
|
||||||
|
|
||||||
* gio.symbols:
|
* gio.symbols:
|
||||||
|
@ -324,11 +324,17 @@ get_mtab_monitor_file (void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef HAVE_GETMNTENT_R
|
||||||
G_LOCK_DEFINE_STATIC(getmntent);
|
G_LOCK_DEFINE_STATIC(getmntent);
|
||||||
|
#endif
|
||||||
|
|
||||||
static GList *
|
static GList *
|
||||||
_g_get_unix_mounts ()
|
_g_get_unix_mounts ()
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_GETMNTENT_R
|
||||||
|
struct mntent ent;
|
||||||
|
char buf[1024];
|
||||||
|
#endif
|
||||||
struct mntent *mntent;
|
struct mntent *mntent;
|
||||||
FILE *file;
|
FILE *file;
|
||||||
char *read_file;
|
char *read_file;
|
||||||
@ -346,8 +352,12 @@ _g_get_unix_mounts ()
|
|||||||
|
|
||||||
mounts_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
mounts_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||||
|
|
||||||
|
#ifdef HAVE_GETMNTENT_R
|
||||||
|
while ((mntent = getmntent_r (file, &ent, buf, sizeof (buf))) != NULL)
|
||||||
|
#else
|
||||||
G_LOCK (getmntent);
|
G_LOCK (getmntent);
|
||||||
while ((mntent = getmntent (file)) != NULL)
|
while ((mntent = getmntent (file)) != NULL)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
/* ignore any mnt_fsname that is repeated and begins with a '/'
|
/* ignore any mnt_fsname that is repeated and begins with a '/'
|
||||||
*
|
*
|
||||||
@ -392,7 +402,9 @@ _g_get_unix_mounts ()
|
|||||||
|
|
||||||
endmntent (file);
|
endmntent (file);
|
||||||
|
|
||||||
|
#ifndef HAVE_GETMNTENT_R
|
||||||
G_UNLOCK (getmntent);
|
G_UNLOCK (getmntent);
|
||||||
|
#endif
|
||||||
|
|
||||||
return g_list_reverse (return_list);
|
return g_list_reverse (return_list);
|
||||||
}
|
}
|
||||||
@ -608,6 +620,10 @@ get_fstab_file (void)
|
|||||||
static GList *
|
static GList *
|
||||||
_g_get_unix_mount_points (void)
|
_g_get_unix_mount_points (void)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_GETMNTENT_R
|
||||||
|
struct mntent ent;
|
||||||
|
char buf[1024];
|
||||||
|
#endif
|
||||||
struct mntent *mntent;
|
struct mntent *mntent;
|
||||||
FILE *file;
|
FILE *file;
|
||||||
char *read_file;
|
char *read_file;
|
||||||
@ -622,8 +638,12 @@ _g_get_unix_mount_points (void)
|
|||||||
|
|
||||||
return_list = NULL;
|
return_list = NULL;
|
||||||
|
|
||||||
|
#ifdef HAVE_GETMNTENT_R
|
||||||
|
while ((mntent = getmntent_r (file, &ent, buf, sizeof (buf))) != NULL)
|
||||||
|
#else
|
||||||
G_LOCK (getmntent);
|
G_LOCK (getmntent);
|
||||||
while ((mntent = getmntent (file)) != NULL)
|
while ((mntent = getmntent (file)) != NULL)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if ((strcmp (mntent->mnt_dir, "ignore") == 0) ||
|
if ((strcmp (mntent->mnt_dir, "ignore") == 0) ||
|
||||||
(strcmp (mntent->mnt_dir, "swap") == 0))
|
(strcmp (mntent->mnt_dir, "swap") == 0))
|
||||||
@ -661,7 +681,10 @@ _g_get_unix_mount_points (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
endmntent (file);
|
endmntent (file);
|
||||||
|
|
||||||
|
#ifndef HAVE_GETMNTENT_R
|
||||||
G_UNLOCK (getmntent);
|
G_UNLOCK (getmntent);
|
||||||
|
#endif
|
||||||
|
|
||||||
return g_list_reverse (return_list);
|
return g_list_reverse (return_list);
|
||||||
}
|
}
|
||||||
@ -2017,19 +2040,28 @@ _resolve_dev_root (void)
|
|||||||
*/
|
*/
|
||||||
f = fopen ("/etc/mtab", "r");
|
f = fopen ("/etc/mtab", "r");
|
||||||
if (f != NULL) {
|
if (f != NULL) {
|
||||||
|
struct mntent *entp;
|
||||||
|
#ifdef HAVE_GETMNTENT_R
|
||||||
struct mntent ent;
|
struct mntent ent;
|
||||||
|
while ((entp = getmntent_r (f, &ent, buf, sizeof (buf))) != NULL) {
|
||||||
while (getmntent_r (f, &ent, buf, sizeof (buf)) != NULL) {
|
#else
|
||||||
|
G_LOCK (getmntent);
|
||||||
if (stat (ent.mnt_fsname, &statbuf) == 0 &&
|
while ((entp = getmntent (f)) != NULL) {
|
||||||
|
#endif
|
||||||
|
if (stat (entp->mnt_fsname, &statbuf) == 0 &&
|
||||||
statbuf.st_dev == root_dev) {
|
statbuf.st_dev == root_dev) {
|
||||||
strncpy (real_dev_root, ent.mnt_fsname, sizeof (real_dev_root) - 1);
|
strncpy (real_dev_root, entp->mnt_fsname, sizeof (real_dev_root) - 1);
|
||||||
real_dev_root[sizeof (real_dev_root) - 1] = '\0';
|
real_dev_root[sizeof (real_dev_root) - 1] = '\0';
|
||||||
fclose (f);
|
fclose (f);
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose (f);
|
|
||||||
|
endmntent (f);
|
||||||
|
|
||||||
|
#ifndef HAVE_GETMNTENT_R
|
||||||
|
G_UNLOCK (getmntent);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* no, that didn't work.. next we could scan /dev ... but I digress.. */
|
/* no, that didn't work.. next we could scan /dev ... but I digress.. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user