diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2015-06-08 21:32:30 +0200 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2015-06-08 21:35:06 +0200 |
commit | a769a4a3c0af016abe376d2eb4890d336d66a197 (patch) | |
tree | 44e2508226122b4927263196322a8b8a8c669a6a | |
parent | 684e9aa9a004c4c3731cd1bbd86589b892f52d4e (diff) | |
download | pcmciautils-master.tar.gz |
Commit f31a75997f33 broke prod_id crc32 parsing and formatting, as
it depends on the output string being _exactly_ as what the kernel
provides internally -- i.e., without a linebreak at the end.
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
-rw-r--r-- | src/pccardctl.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/pccardctl.c b/src/pccardctl.c index c3df55d..d5d67fb 100644 --- a/src/pccardctl.c +++ b/src/pccardctl.c @@ -154,11 +154,21 @@ static int pccardctl_get_string(unsigned long socket_no, const char *in_file, char **output) { char file[SYSFS_PATH_MAX]; + int ret; snprintf(file, SYSFS_PATH_MAX, "/sys/bus/pcmcia/devices/%lu.0/%s", socket_no, in_file); - return sysfs_read_whole_file(file, output); + ret = sysfs_read_whole_file(file, output); + + if (ret) + return ret; + + /* remove trailing '\n', as it messes up formatting and crc32 */ + if ((strlen(*output) > 2) && ((*output)[strlen(*output) - 1] == '\n')) + (*output)[strlen(*output) - 1] = '\0'; + + return 0; } static int pccardctl_get_one_f(unsigned long socket_no, unsigned int dev, |