Skip to content

Commit

Permalink
Pass full database filename to FindIncredimailVersion
Browse files Browse the repository at this point in the history
Also use a case-insensitive compare to check its name, since this is Win32 land.
  • Loading branch information
smowton committed Apr 11, 2019
1 parent e3398eb commit 0a75d54
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 17 deletions.
2 changes: 1 addition & 1 deletion Source/increadimail_convert.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ extern "C" {
//
//***************************************************************************

enum INCREDIMAIL_VERSIONS FindIncredimailVersion(char *file_or_directory);
enum INCREDIMAIL_VERSIONS FindIncredimailVersion(const char *file_or_directory);
//***************************************************************************
// INPUTS:
//
Expand Down
12 changes: 6 additions & 6 deletions Source/incredimail_convert.c
Original file line number Diff line number Diff line change
Expand Up @@ -498,14 +498,14 @@ static int testimdb(const char* filename) {

}

static int endswith(const char *s, const char *suffix) {
static int endswith_case_insensitive(const char *s, const char *suffix) {
size_t suffix_len = strlen(suffix);
size_t s_len = strlen(s);

return s_len >= suffix_len && !strcmp(s + (s_len - suffix_len), suffix);
return s_len >= suffix_len && !stricmp(s + (s_len - suffix_len), suffix);
}

enum INCREDIMAIL_VERSIONS FindIncredimailVersion(char *file_or_directory) {
enum INCREDIMAIL_VERSIONS FindIncredimailVersion(const char *file_or_directory) {
char temp_path[MAX_CHAR];
enum INCREDIMAIL_VERSIONS ret = INCREDIMAIL_VERSION_UNKNOWN;
WIN32_FIND_DATA FindFileData;
Expand All @@ -519,11 +519,11 @@ enum INCREDIMAIL_VERSIONS FindIncredimailVersion(char *file_or_directory) {
const char *im2_mbox_suffix = "\\containers.db";
const char *im2_maildir_suffix = "\\messageStore.db";

if (endswith(file_or_directory, xe_suffix))
if (endswith_case_insensitive(file_or_directory, xe_suffix))
return INCREDIMAIL_XE;
else if (endswith(file_or_directory, im2_mbox_suffix) && testimdb(file_or_directory))
else if (endswith_case_insensitive(file_or_directory, im2_mbox_suffix) && testimdb(file_or_directory))
return INCREDIMAIL_2;
else if (endswith(file_or_directory, im2_maildir_suffix) && testimdb(file_or_directory))
else if (endswith_case_insensitive(file_or_directory, im2_maildir_suffix) && testimdb(file_or_directory))
return INCREDIMAIL_2_MAILDIR;

// Otherwise try searching a directory:
Expand Down
13 changes: 3 additions & 10 deletions Source/winmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -267,9 +267,7 @@ HANDLE hFind;
openfile.lpstrFilter = filter;

if( GetOpenFileName( &openfile ) == TRUE ) {
// get the directory (reuse varible im_header_filename)
strncpy_s( im_header_filename, MAX_CHAR , im_database_filename, strlen( im_database_filename ) - strlen( openfile.lpstrFileTitle ) );
enum INCREDIMAIL_VERSIONS version = FindIncredimailVersion(im_header_filename);
enum INCREDIMAIL_VERSIONS version = FindIncredimailVersion(im_database_filename);
if(version == INCREDIMAIL_XE) {
strncpy_s( im_header_filename, MAX_CHAR ,im_database_filename, strlen( im_database_filename ) - 3 );
strcat_s( im_header_filename, MAX_CHAR, "imh" );
Expand Down Expand Up @@ -464,11 +462,8 @@ enum INCREDIMAIL_VERSIONS incredimail_version;

SendDlgItemMessage( global_hwnd, IDC_PROGRESS1, PBM_SETPOS, 0, 0 ); // reset the progress bar to 0%

pdest = strrchr( im_database_filename, '\\' );
strncpy_s( temp_path, MAX_CHAR, im_database_filename, strlen( im_database_filename ) - strlen( pdest ) );

// get incredimail version
incredimail_version = FindIncredimailVersion( temp_path );
incredimail_version = FindIncredimailVersion( im_database_filename );
if( incredimail_version == INCREDIMAIL_XE ) {
// get the header filename
strncpy_s( im_header_filename, MAX_CHAR, im_database_filename, strlen( im_database_filename ) - 3 );
Expand Down Expand Up @@ -788,9 +783,7 @@ enum INCREDIMAIL_VERSIONS incredimail_version;
SetDlgItemText( global_hwnd, IDC_OVERALL_PERCENT, debug_str );

// get incredimail version
pdest = strrchr( im_database_filename, '\\' );
strncpy_s( temp_path, sizeof(temp_path), im_database_filename, strlen( im_database_filename ) - strlen( pdest ) );
incredimail_version = FindIncredimailVersion( temp_path );
incredimail_version = FindIncredimailVersion( im_database_filename );
if (incredimail_version == INCREDIMAIL_VERSION_UNKNOWN) {
char msg[CHAR_MAX];
sprintf_s(msg, CHAR_MAX, "Directory %s doesn't match a known Incredimail version", temp_path);
Expand Down

0 comments on commit 0a75d54

Please sign in to comment.