summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2015-06-08 21:32:30 +0200
committerDominik Brodowski <linux@dominikbrodowski.net>2015-06-08 21:35:06 +0200
commita769a4a3c0af016abe376d2eb4890d336d66a197 (patch)
tree44e2508226122b4927263196322a8b8a8c669a6a
parent684e9aa9a004c4c3731cd1bbd86589b892f52d4e (diff)
downloadpcmciautils-master.tar.gz
pccardctl: fix prod_id parsing and formattingHEADmaster
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.c12
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,