diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2013-04-14 20:29:17 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2013-04-14 20:29:17 +0200 |
commit | 268d944e44bea60d5c498cb24a8629f012aac055 (patch) | |
tree | 0d6f793f922eda10cc0943b3c8db56c4f9bbeef6 /src/readahead | |
parent | MurmurHash3: actually inline functions (diff) | |
download | systemd-268d944e44bea60d5c498cb24a8629f012aac055.tar.xz systemd-268d944e44bea60d5c498cb24a8629f012aac055.zip |
readahead-analyze: avoid division-by-0
Also remove a few casts and use _cleanup_fclose_ to simplify logic.
Diffstat (limited to 'src/readahead')
-rw-r--r-- | src/readahead/readahead-analyze.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/readahead/readahead-analyze.c b/src/readahead/readahead-analyze.c index 9a929c0937..e24b2a3298 100644 --- a/src/readahead/readahead-analyze.c +++ b/src/readahead/readahead-analyze.c @@ -34,10 +34,10 @@ int main_analyze(const char *pack_path) { char line[LINE_MAX]; - FILE *pack; + FILE _cleanup_fclose_ *pack = NULL; int a; int missing = 0; - off_t tsize = 0; + size_t tsize = 0; if (!pack_path) pack_path = "/.readahead"; @@ -105,7 +105,7 @@ int main_analyze(const char *pack_path) { } if (stat(path, &st) == 0) { - off_t size; + size_t size; if (sections == 0) size = st.st_size; @@ -114,10 +114,10 @@ int main_analyze(const char *pack_path) { tsize += size; - printf(" %4d%% (%2d) %12ld: %s\n", - sections ? (int) (size * 100 / st.st_size) : 100, + printf(" %4zd%% (%2d) %12zd: %s\n", + sections && st.st_size ? size * 100 / st.st_size : 100, sections ? sections : 1, - (unsigned long)size, + size, path); } else { printf(" %4dp (%2d) %12s: %s (MISSING)\n", @@ -130,21 +130,17 @@ int main_analyze(const char *pack_path) { } - fclose(pack); - printf("\nHOST: %s" "TYPE: %c\n" "MISSING: %d\n" - "TOTAL: %llu\n", + "TOTAL: %zu\n", line, a, missing, - (unsigned long long) tsize); + tsize); return EXIT_SUCCESS; fail: - if(pack) - fclose(pack); return EXIT_FAILURE; } |