# HG changeset patch # User nadvornik # Date 1217098880 0 # Node ID 8c5ba3e94e54301949218fcf4a3b0ad5d5585433 # Parent 988eff509920b46b117d0455c0d768f18ea5f756 warn about changed file extensions diff -r 988eff509920 -r 8c5ba3e94e54 src/filedata.c --- a/src/filedata.c Sat Jul 26 18:33:49 2008 +0000 +++ b/src/filedata.c Sat Jul 26 19:01:20 2008 +0000 @@ -1607,15 +1607,24 @@ ret |= CHANGE_WARN_NO_WRITE_PERM; DEBUG_1("Change checked: no write permission: %s", fd->path); } - - if (fd->change->dest && (strcmp(fd->path, fd->change->dest) == 0)) - { - ret |= CHANGE_WARN_SAME; - DEBUG_1("Change checked: source and destination is the same: %s", fd->path); - } - + if (fd->change->dest) { + const gchar *dest_ext = extension_from_path(fd->change->dest); + if (!dest_ext) dest_ext = ""; + + if (strcasecmp(fd->extension, dest_ext) != 0) + { + ret |= CHANGE_WARN_CHANGED_EXT; + DEBUG_1("Change checked: source and destination have different extensions: %s -> %s", fd->path, fd->change->dest); + } + + if (strcmp(fd->path, fd->change->dest) == 0) + { + ret |= CHANGE_WARN_SAME; + DEBUG_1("Change checked: source and destination is the same: %s -> %s", fd->path, fd->change->dest); + } + if (!isdir(dest_dir)) { ret |= CHANGE_NO_DEST_DIR; @@ -1728,13 +1737,19 @@ if (result->len > 0) g_string_append(result, ", "); g_string_append(result, _("destination already exists and will be overwritten")); } - + if (error & CHANGE_WARN_SAME) { if (result->len > 0) g_string_append(result, ", "); g_string_append(result, _("source and destination is the same")); } + if (error & CHANGE_WARN_CHANGED_EXT) + { + if (result->len > 0) g_string_append(result, ", "); + g_string_append(result, _("source and destination have different extension")); + } + return g_string_free(result, FALSE); } diff -r 988eff509920 -r 8c5ba3e94e54 src/typedefs.h --- a/src/typedefs.h Sat Jul 26 18:33:49 2008 +0000 +++ b/src/typedefs.h Sat Jul 26 19:01:20 2008 +0000 @@ -154,14 +154,15 @@ CHANGE_WARN_DEST_EXISTS = 1 << 0, CHANGE_WARN_NO_WRITE_PERM = 1 << 1, CHANGE_WARN_SAME = 1 << 2, - CHANGE_ERROR_MASK = (~0) << 3, /* the values below are fatal errors */ - CHANGE_NO_READ_PERM = 1 << 3, - CHANGE_NO_WRITE_PERM_DIR = 1 << 4, - CHANGE_NO_DEST_DIR = 1 << 5, - CHANGE_NO_WRITE_PERM_DEST_DIR = 1 << 6, - CHANGE_NO_WRITE_PERM_DEST = 1 << 7, - CHANGE_DEST_EXISTS = 1 << 8, - CHANGE_NO_SRC = 1 << 9, + CHANGE_WARN_CHANGED_EXT = 1 << 3, + CHANGE_ERROR_MASK = (~0) << 4, /* the values below are fatal errors */ + CHANGE_NO_READ_PERM = 1 << 4, + CHANGE_NO_WRITE_PERM_DIR = 1 << 5, + CHANGE_NO_DEST_DIR = 1 << 6, + CHANGE_NO_WRITE_PERM_DEST_DIR = 1 << 7, + CHANGE_NO_WRITE_PERM_DEST = 1 << 8, + CHANGE_DEST_EXISTS = 1 << 9, + CHANGE_NO_SRC = 1 << 10, CHANGE_GENERIC_ERROR = 1 << 16 } ChangeError;