diff options
author | Коренберг Марк (дома) <socketpair@gmail.com> | 2012-08-30 00:47:09 +0600 |
---|---|---|
committer | Коренберг Марк (дома) <socketpair@gmail.com> | 2012-08-30 03:19:04 +0600 |
commit | a2b23ffe458f7353eacb92cbe3dd29aa21dc195b (patch) | |
tree | 97d7f4320bfc2cc408376dca29f7a1e973164033 | |
parent | 8cd2f5728a106931a1dd5ba96fb5a3d08da36362 (diff) | |
download | libnl-a2b23ffe458f7353eacb92cbe3dd29aa21dc195b.tar.gz |
Fix warning "not checking return value of fscanf" in lib/utils.c: get_psched_settings
Also, change internal variables type from uint32_t to unsigned int.
Correct scanf format string should contain "SCNx32" instead of just "x",
but I decide not to fix that and just changed variable type.
-rw-r--r-- | lib/utils.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/utils.c b/lib/utils.c index 74f5639..b5e32c3 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -28,6 +28,7 @@ #include <netlink/netlink.h> #include <netlink/utils.h> #include <linux/socket.h> +#include <stdlib.h> /* exit() */ /** * Global variable indicating the desired level of debugging output. @@ -421,10 +422,15 @@ static void __init get_psched_settings(void) strncpy(name, "/proc/net/psched", sizeof(name) - 1); if ((fd = fopen(name, "r"))) { - uint32_t ns_per_usec, ns_per_tick, nom, denom; - - fscanf(fd, "%08x %08x %08x %08x", - &ns_per_usec, &ns_per_tick, &nom, &denom); + unsigned int ns_per_usec, ns_per_tick, nom, denom; + + if (fscanf(fd, "%08x %08x %08x %08x", + &ns_per_usec, &ns_per_tick, &nom, &denom) != 4) { + fprintf(stderr, "Fatal error: can not read psched settings from \"%s\". " \ + "Try to set TICKS_PER_USEC, PROC_NET_PSCHED or PROC_ROOT " \ + "environment variables\n", name); + exit(1); + } ticks_per_usec = (double) ns_per_usec / (double) ns_per_tick; |