chiark / gitweb /
util: use alloca0() intead of alloca() + memzero()
[elogind.git] / src / readahead / readahead-analyze.c
index 75f85b46e068543e335bbd16412e09170396a95b..76db3cb7e4b8dc0be437e291d9bf8e3d0c0797cb 100644 (file)
 
 #include "readahead-common.h"
 
 
 #include "readahead-common.h"
 
-int main_analyze(const char *pack_path)
-{
+int main_analyze(const char *pack_path) {
         char line[LINE_MAX];
         char line[LINE_MAX];
-        char path[PATH_MAX];
-        FILE *pack;
+        _cleanup_fclose_ FILE *pack = NULL;
         int a;
         int missing = 0;
         int a;
         int missing = 0;
-        off_t size;
-        off_t tsize = 0;
-        uint64_t inode;
-        uint32_t b;
-        uint32_t c;
-        struct stat st;
+        size_t tsize = 0;
 
         if (!pack_path)
                 pack_path = "/.readahead";
 
         if (!pack_path)
                 pack_path = "/.readahead";
@@ -72,10 +65,13 @@ int main_analyze(const char *pack_path)
                 goto fail;
         }
 
                 goto fail;
         }
 
-        fprintf(stdout, "   pct  sections     size: path\n");
-        fprintf(stdout, "   ===  ========     ====: ====\n");
+        fputs("   pct  sections     size: path\n"
+              "   ===  ========     ====: ====\n", stdout);
 
 
-        while(true) {
+        for (;;) {
+                char path[PATH_MAX];
+                struct stat st;
+                uint64_t inode;
                 int pages = 0;
                 int sections = 0;
 
                 int pages = 0;
                 int sections = 0;
 
@@ -89,7 +85,9 @@ int main_analyze(const char *pack_path)
                         goto fail;
                 }
 
                         goto fail;
                 }
 
-                while (true) {
+                for (;;) {
+                        uint32_t b, c;
+
                         if (fread(&b, sizeof(b), 1, pack) != 1  ||
                             fread(&c, sizeof(c), 1, pack) != 1) {
                                 log_error("Pack file corrupt.");
                         if (fread(&b, sizeof(b), 1, pack) != 1  ||
                             fread(&c, sizeof(c), 1, pack) != 1) {
                                 log_error("Pack file corrupt.");
@@ -99,7 +97,7 @@ int main_analyze(const char *pack_path)
                                 break;
 
                         /* Uncomment this to get all the chunks separately
                                 break;
 
                         /* Uncomment this to get all the chunks separately
-                        fprintf(stdout, " %d: %d %d\n", sections, b, c);
+                           printf(" %d: %d %d\n", sections, b, c);
                          */
 
                         pages += (c - b);
                          */
 
                         pages += (c - b);
@@ -107,6 +105,8 @@ int main_analyze(const char *pack_path)
                 }
 
                 if (stat(path, &st) == 0) {
                 }
 
                 if (stat(path, &st) == 0) {
+                        off_t size;
+
                         if (sections == 0)
                                 size = st.st_size;
                         else
                         if (sections == 0)
                                 size = st.st_size;
                         else
@@ -114,13 +114,13 @@ int main_analyze(const char *pack_path)
 
                         tsize += size;
 
 
                         tsize += size;
 
-                        fprintf(stdout, "  %4d%% (%2d) %12ld: %s\n",
-                                sections ? (int)(size / st.st_size * 100.0) : 100,
-                                sections ? sections : 1,
-                                (unsigned long)size,
-                                path);
+                        printf("  %4jd%% (%2d) %12jd: %s\n",
+                               (intmax_t) (sections && st.st_size ? size * 100 / st.st_size : 100),
+                               sections ? sections : 1,
+                               (intmax_t) size,
+                               path);
                 } else {
                 } else {
-                        fprintf(stdout, "  %4dp (%2d) %12s: %s (MISSING)\n",
+                        printf("  %4dp (%2d) %12s: %s (MISSING)\n",
                                 sections ? pages : -1,
                                 sections ? sections : 1,
                                 "???",
                                 sections ? pages : -1,
                                 sections ? sections : 1,
                                 "???",
@@ -130,17 +130,17 @@ int main_analyze(const char *pack_path)
 
         }
 
 
         }
 
-        fclose(pack);
-
-        fprintf(stdout, "\nHOST:    %s", line);
-        fprintf(stdout, "TYPE:    %c\n", a);
-        fprintf(stdout, "MISSING: %d\n", missing);
-        fprintf(stdout, "TOTAL:   %ld\n", tsize);
+        printf("\nHOST:    %s"
+               "TYPE:    %c\n"
+               "MISSING: %d\n"
+               "TOTAL:   %zu\n",
+               line,
+               a,
+               missing,
+               tsize);
 
         return EXIT_SUCCESS;
 
 
         return EXIT_SUCCESS;
 
-
 fail:
 fail:
-        fclose(pack);
         return EXIT_FAILURE;
 }
         return EXIT_FAILURE;
 }