chiark / gitweb /
readahead-analyze: avoid division-by-0
[elogind.git] / src / readahead / readahead-analyze.c
index 11b2b2dc11819e385a9f323433c4ffb5015d82ec..e24b2a32985d041439afc709ffa16e1c3166f828 100644 (file)
 
 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,20 +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:
-        fclose(pack);
         return EXIT_FAILURE;
 }