OSDN Git Service

LinGui: use a different method of stripping video file name extensions
authorjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 6 Aug 2009 23:00:08 +0000 (23:00 +0000)
committerjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 6 Aug 2009 23:00:08 +0000 (23:00 +0000)
before the new destination filename is constructed the original files
extension is stripped.  this new method catches a larger variety of
extensions without the need to explicitly list them all.

git-svn-id: svn://localhost/HandBrake/trunk@2749 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/callbacks.c

index ab7cb31..0d2aa76 100644 (file)
@@ -599,21 +599,17 @@ set_destination(signal_user_data_t *ud)
 static gchar*
 get_file_label(const gchar *filename)
 {
-       static gchar *containers[] = 
-               {".vob", ".mpg", ".m2ts", ".mkv", ".mp4", ".m4v", ".avi", ".ogm", NULL};
-       gchar *base;
-       gint ii;
+       gchar *base, *pos, *end;
 
        base = g_path_get_basename(filename);
-       for (ii = 0; containers[ii] != NULL; ii++)
+       pos = strrchr(base, '.');
+       if (pos != NULL)
        {
-               if (g_str_has_suffix(base, containers[ii]))
-               {
-                       gchar *pos;
-                       pos = strrchr(base, '.');
+               // If the last '.' is within 4 chars of end of name, assume
+               // there is an extension we want to strip.
+               end = &base[strlen(base) - 1];
+               if (end - pos <= 4)
                        *pos = 0;
-                       break;
-               }
        }
        return base;
 }