SF [ 2047004 ] Moviefilenames without extension don't automatically get fm2

This commit is contained in:
zeromus 2008-08-12 03:28:51 +00:00
parent 8498dac6c2
commit 215d329804
8 changed files with 35 additions and 35 deletions

View File

@ -2,6 +2,7 @@
10-aug-2008 - punkrockguy318 - SDL: cleaned up the SConsruct
10-aug-2008 - punkrockguy318 - SDL: fixed issue where fceu would lock up when file dialogs were opened during fullscreen
11-aug-2008 - zeromus - SF [ 2047004 ] Moviefilenames without extension don't automatically get fm2
10-aug-2008 - zeromus - upgrade to cah4e3's latest mapper 163&164 code to fix a crash in a game
10-aug-2008 - zeromus - remove cnrom chr rom size limit for homebrew roms
10-aug-2008 - punkrockguy318 - SDL: fixed bug where fceux would close when file dialogs were closed

View File

@ -149,8 +149,8 @@ void FCEUD_SoundVolumeAdjust(int);
int FCEUI_SelectState(int, int);
//"fname" overrides the default save state filename code if non-NULL.
void FCEUI_SaveState(char *fname);
void FCEUI_LoadState(char *fname);
void FCEUI_SaveState(const char *fname);
void FCEUI_LoadState(const char *fname);
void FCEUD_SaveStateAs(void);
void FCEUD_LoadStateFrom(void);

View File

@ -59,9 +59,9 @@ static char* GetReplayPath(HWND hwndDlg)
return fn;
}
static char* GetRecordPath(HWND hwndDlg)
static std::string GetRecordPath(HWND hwndDlg)
{
char* fn=0;
std::string fn;
char szChoice[MAX_PATH];
char szDrive[MAX_PATH]={0};
char szDirectory[MAX_PATH]={0};
@ -71,10 +71,17 @@ static char* GetRecordPath(HWND hwndDlg)
GetDlgItemText(hwndDlg, IDC_EDIT_FILENAME, szChoice, sizeof(szChoice));
_splitpath(szChoice, szDrive, szDirectory, szFilename, szExt);
//make sure that there is an extension of fm2
if(stricmp(szExt,".fm2")) {
strcpy(szExt,".fm2");
_makepath(szChoice,szDrive,szDirectory,szFilename,szExt);
}
if(szDrive[0]=='\0' && szDirectory[0]=='\0')
fn=strdup(FCEU_MakePath(FCEUMKF_MOVIE, szChoice).c_str()); // need to make a full path
fn=FCEU_MakePath(FCEUMKF_MOVIE, szChoice); // need to make a full path
else
fn=strdup(szChoice); // given a full path
fn= szChoice; // given a full path
return fn;
}
@ -654,14 +661,13 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP
static void UpdateRecordDialog(HWND hwndDlg)
{
int enable=0;
char* fn=0;
fn=GetRecordPath(hwndDlg);
std::string fn=GetRecordPath(hwndDlg);
if(fn)
if(fn!="")
{
if(access(fn, F_OK) ||
!access(fn, W_OK))
if(access(fn.c_str(), F_OK) ||
!access(fn.c_str(), W_OK))
{
LONG lCount = SendDlgItemMessage(hwndDlg, IDC_COMBO_RECORDFROM, CB_GETCOUNT, 0, 0);
LONG lIndex = SendDlgItemMessage(hwndDlg, IDC_COMBO_RECORDFROM, CB_GETCURSEL, 0, 0);
@ -671,31 +677,30 @@ static void UpdateRecordDialog(HWND hwndDlg)
}
}
free(fn);
}
EnableWindow(GetDlgItem(hwndDlg,IDOK),enable ? TRUE : FALSE);
}
static void UpdateRecordDialogPath(HWND hwndDlg, const char* fname)
static void UpdateRecordDialogPath(HWND hwndDlg, const std::string &fname)
{
char* baseMovieDir = strdup(FCEU_GetPath(FCEUMKF_MOVIE).c_str());
char* fn=0;
// display a shortened filename if the file exists in the base movie directory
if(!strncmp(fname, baseMovieDir, strlen(baseMovieDir)))
if(!strncmp(fname.c_str(), baseMovieDir, strlen(baseMovieDir)))
{
char szDrive[MAX_PATH]={0};
char szDirectory[MAX_PATH]={0};
char szFilename[MAX_PATH]={0};
char szExt[MAX_PATH]={0};
_splitpath(fname, szDrive, szDirectory, szFilename, szExt);
_splitpath(fname.c_str(), szDrive, szDirectory, szFilename, szExt);
fn=(char*)malloc(strlen(szFilename)+strlen(szExt)+1);
_makepath(fn, "", "", szFilename, szExt);
}
else
fn=strdup(fname);
fn=strdup(fname.c_str());
if(fn)
{
@ -713,8 +718,7 @@ static BOOL CALLBACK RecordDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LP
case WM_INITDIALOG:
p = (struct CreateMovieParameters*)lParam;
UpdateRecordDialogPath(hwndDlg, p->szFilename);
free(p->szFilename);
p->szFilename = 0;
p->szFilename = "";
SendMessage(GetDlgItem(hwndDlg,IDC_EDIT_AUTHOR), CCM_SETUNICODEFORMAT, TRUE, 0);
@ -855,7 +859,7 @@ void FCEUD_MovieRecordTo()
{
// attempt to load the savestate
// FIXME: pop open a messagebox if this fails
FCEUI_LoadState(p.szSavestateFilename);
FCEUI_LoadState(p.szSavestateFilename.c_str());
{
extern int loadStateFailed;
@ -866,17 +870,12 @@ void FCEUD_MovieRecordTo()
FCEUD_PrintError(str);
}
}
free(p.szSavestateFilename);
}
EMOVIE_FLAG flags = MOVIE_FLAG_NONE;
if(p.recordFrom == 0) flags = MOVIE_FLAG_FROM_POWERON;
FCEUI_SaveMovie(p.szFilename, flags, p.author);
FCEUI_SaveMovie(p.szFilename.c_str(), flags, p.author);
}
if(p.szFilename)
free(p.szFilename);
}

View File

@ -8,9 +8,9 @@
struct CreateMovieParameters
{
char* szFilename; // on Dialog creation, this is the default filename to display. On return, this is the filename that the user chose.
std::string szFilename; // on Dialog creation, this is the default filename to display. On return, this is the filename that the user chose.
int recordFrom; // 0 = "Power-On", 1 = "Reset", 2 = "Now", 3+ = savestate file in szSavestateFilename
char* szSavestateFilename;
std::string szSavestateFilename;
std::wstring author;
};

View File

@ -517,7 +517,7 @@ std::string FCEU_MakePath(int type, const char* filebase)
return ret;
}
std::string FCEU_MakeFName(int type, int id1, char *cd1)
std::string FCEU_MakeFName(int type, int id1, const char *cd1)
{
char ret[FILENAME_MAX] = "";
struct stat tmpstat;

View File

@ -81,7 +81,7 @@ int FCEU_fisarchive(FCEUFILE*);
void GetFileBase(const char *f);
std::string FCEU_GetPath(int type);
std::string FCEU_MakePath(int type, const char* filebase);
std::string FCEU_MakeFName(int type, int id1, char *cd1);
std::string FCEU_MakeFName(int type, int id1, const char *cd1);
void FCEU_SplitArchiveFilename(std::string src, std::string& archive, std::string& file, std::string& fileToOpen);
#define FCEUMKF_STATE 1

View File

@ -410,7 +410,7 @@ bool FCEUSS_SaveMS(std::ostream* outstream, int compressionLevel)
}
void FCEUSS_Save(char *fname)
void FCEUSS_Save(const char *fname)
{
std::fstream* st = 0;
char *fn;
@ -608,7 +608,7 @@ bool FCEUSS_LoadFP(std::istream* is, ENUM_SSLOADPARAMS params)
}
bool FCEUSS_Load(char *fname)
bool FCEUSS_Load(const char *fname)
{
std::fstream* st;
@ -758,7 +758,7 @@ int FCEUI_SelectState(int w, int show)
return oldstate;
}
void FCEUI_SaveState(char *fname)
void FCEUI_SaveState(const char *fname)
{
if(!FCEU_IsValidUI(FCEUI_SAVESTATE)) return;
@ -768,7 +768,7 @@ void FCEUI_SaveState(char *fname)
int loadStateFailed = 0; // hack, this function should return a value instead
void FCEUI_LoadState(char *fname)
void FCEUI_LoadState(const char *fname)
{
if(!FCEU_IsValidUI(FCEUI_LOADSTATE)) return;

View File

@ -26,8 +26,8 @@ enum ENUM_SSLOADPARAMS
SSLOADPARAM_BACKUP,
};
void FCEUSS_Save(char *);
bool FCEUSS_Load(char *);
void FCEUSS_Save(const char *);
bool FCEUSS_Load(const char *);
//zlib values: 0 (none) through 9 (max) or -1 (default)
bool FCEUSS_SaveMS(std::ostream* outstream, int compressionLevel);