libcdio-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libcdio-devel] [PATCH] Linux: Use getmntent/setmntent for reading mount


From: Miguel Borges de Freitas
Subject: [Libcdio-devel] [PATCH] Linux: Use getmntent/setmntent for reading mounts
Date: Wed, 2 Feb 2022 23:11:40 +0000

Also posted the patch to savannah.gnu.org but I am unsure if it is
actively monitored. Hence I am posting to the mailing list as well -
apologies if, somehow, you received this twice.
--------

In Kodi we use libcdio to eject/unmount disks. According to this bug
report (https://github.com/xbmc/xbmc/issues/20935) kodi/libcdio fails
to unmount the disk whenever the disk label contains spaces. In the
/proc/mounts file spaces are octal escaped, like the example below:

/dev/sr0 /run/media/arch/Lawrence\040of\040Arabia udf
ro,nosuid,nodev,relatime,uid=1000,gid=1000,iocharset=utf8 0 0

The root cause of the problem is in the way libcdio gets the mountpath
- using regular file I/O. According to the linux documentation
(https://man7.org/linux/man-pages/man3/getmntent.3.html) when parsing
fstab/mtab/mounts getmtent and setmtent (and the mtent struct) should
be used instead:

```
Since fields in the mtab and fstab files are separated by
whitespace, octal escapes are used to represent the characters
space (\040), tab (\011), newline (\012), and backslash (\\) in those
files when they occur in one of the four strings in a
mntent structure.  The routines addmntent() and getmntent() will
convert from string representation to escaped representation and
back.  When converting from escaped representation, the sequence
\134 is also converted to a backslash.
```

Patch file attached, runtime tested.

Regards,

Miguel Borges de Freitas

Attachment: 0001-Linux-Use-getmntent-setmntent-for-reading-mounts.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]