From 5d5f9f52a0cd586fe9ff7ec96c3b5a04d155ae4d Mon Sep 17 00:00:00 2001
From: Nico Weber <thakis@chromium.org>
Date: Sun, 26 Feb 2023 13:57:48 -0500
Subject: Utilities: Make `file` print more information for animated images

---
 Userland/Utilities/file.cpp | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

(limited to 'Userland')

diff --git a/Userland/Utilities/file.cpp b/Userland/Utilities/file.cpp
index 7e189dcbf6..3901b004a7 100644
--- a/Userland/Utilities/file.cpp
+++ b/Userland/Utilities/file.cpp
@@ -37,7 +37,18 @@ static Optional<DeprecatedString> image_details(DeprecatedString const& descript
     if (!image_decoder)
         return {};
 
-    return DeprecatedString::formatted("{}, {} x {}", description, image_decoder->width(), image_decoder->height());
+    StringBuilder builder;
+    builder.appendff("{}, {} x {}", description, image_decoder->width(), image_decoder->height());
+    if (image_decoder->is_animated()) {
+        builder.appendff(", animated with {} frames that loop", image_decoder->frame_count());
+        int loop_count = image_decoder->loop_count();
+        if (loop_count == 0)
+            builder.appendff(" indefinitely");
+        else
+            builder.appendff(" {} {}", loop_count, loop_count == 1 ? "time" : "times");
+    }
+
+    return builder.to_deprecated_string();
 }
 
 static Optional<DeprecatedString> gzip_details(DeprecatedString description, DeprecatedString const& path)
-- 
cgit v1.2.3