+static int ventoy_check_mode_by_name(char *filename, const char *suffix)
+{
+ int i;
+ int len1;
+ int len2;
+
+ len1 = (int)grub_strlen(filename);
+ len2 = (int)grub_strlen(suffix);
+
+ if (len1 <= len2)
+ {
+ return 0;
+ }
+
+ for (i = len1 - 1; i >= 0; i--)
+ {
+ if (filename[i] == '.')
+ {
+ break;
+ }
+ }
+
+ if (i < len2 + 1)
+ {
+ return 0;
+ }
+
+ if (filename[i - len2 - 1] != '_')
+ {
+ return 0;
+ }
+
+ if (grub_strncasecmp(filename + (i - len2), suffix, len2) == 0)
+ {
+ return 1;
+ }
+
+ return 0;
+}
+