summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorКоренберг Марк (дома) <socketpair@gmail.com>2012-08-30 00:47:09 +0600
committerКоренберг Марк (дома) <socketpair@gmail.com>2012-08-30 03:19:04 +0600
commita2b23ffe458f7353eacb92cbe3dd29aa21dc195b (patch)
tree97d7f4320bfc2cc408376dca29f7a1e973164033
parent8cd2f5728a106931a1dd5ba96fb5a3d08da36362 (diff)
downloadlibnl-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.c14
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;