aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2017-03-15 11:26:38 +0100
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2017-03-15 12:10:34 +0100
commita2eeedb0a7af1d8ebe8593cb9a9bb994d2854e63 (patch)
tree5f35234f3608c22bf2d545e57afde732ad58b86d /include
parent4dab9bed1033f797ef9b482c77342fe3fe26d0be (diff)
Fix libmtd behaviour if MTD is not present on the system
The documentation of libmtd_open says, if it returns NULL and errno is zero, MTD is not present. However, the current version always returns a libmtd_t object. The function internally checks, if it can access the MTD sysfs files and, if not, sets a flag to use the procfs fallback. This patch adds an additional check to libmtd_open, to test if the MTD procfs file can be read and fails with errno cleared if it does not exist. Furhtermore, mtd_get_info is documented to fail with errno set to ENODEV if MTD is not present. First of all, this was broken in the original version. It was implemented to specification for the sysfs code path, but if MTD is not present, that won't be executed, because of the flag set by libmtd_open. This makes the check not only redundant, but masks an actual error (the sysfs paths suddenly not being readable anymore). The legacy path that was used if the sysfs files are not avaible fails with ENOENT if it cannot read the procfs file. With the above changes in addition, we don't have a libmtd_t object if neither sysfs nor procfs is readable, so this error status no longer makes sense. This patch removes the documentation on the ENODEV errno, and makes sure that mtd_get_info always returns with apropriate errno on failure. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include')
-rw-r--r--include/libmtd.h3
1 files changed, 1 insertions, 2 deletions
diff --git a/include/libmtd.h b/include/libmtd.h
index f9f3164..db85fb4 100644
--- a/include/libmtd.h
+++ b/include/libmtd.h
@@ -120,8 +120,7 @@ int mtd_dev_present(libmtd_t desc, int mtd_num);
* @info: the MTD device information is returned here
*
* This function fills the passed @info object with general MTD information and
- * returns %0 in case of success and %-1 in case of failure. If MTD subsystem is
- * not present in the system, errno is set to @ENODEV.
+ * returns %0 in case of success and %-1 in case of failure.
*/
int mtd_get_info(libmtd_t desc, struct mtd_info *info);