/trunk/language.c |
---|
43,6 → 43,7 |
#endif |
} |
// Attention: Requires FF_GetMsg_Free(), otherwise memory is leaked |
TCHAR* FF_GetMsg_Cpy(int MsgId) { |
#ifdef WIN_ENV |
TCHAR* szMsg; |
49,7 → 50,7 |
int len; |
TCHAR* ret; |
len = LoadString(hDllInstance, MsgId, (LPTSTR)&szMsg, 0); |
ret = (TCHAR*)malloc((len+1) * sizeof(TCHAR)); // TODO: This leaks memory! Like _strdup() does... Not a good design! |
ret = (TCHAR*)malloc((len+1) * sizeof(TCHAR)); |
if (ret == NULL) return NULL; |
LoadString(hDllInstance, MsgId, ret, len+1); |
return ret; |
56,8 → 57,13 |
#else |
Str255 msg; |
TCHAR* ret; |
ret = (TCHAR*)malloc((len + 1) * sizeof(TCHAR)); |
GetIndString(msg, 1000, MsgId); |
myp2cstrcpy(ret, msg); |
return ret; |
#endif |
} |
void FF_GetMsg_Free(TCHAR* str) { |
free(str); |
} |
/trunk/language.h |
---|
255,3 → 255,4 |
void strcpy_advance_id(TCHAR** str, int msgid); |
void FF_GetMsg(TCHAR* ret, int MsgId); |
TCHAR* FF_GetMsg_Cpy(int MsgId); |
void FF_GetMsg_Free(TCHAR* str); |
/trunk/load_win.c |
---|
69,7 → 69,7 |
deobfusc(copy); |
res = readPARM(&gdata->parm, (Ptr)copy); |
if (!res) { |
*reason = FF_GetMsg_Cpy(MSG_INCOMPATIBLE_OBFUSCATION_ID); |
*reason = FF_GetMsg_Cpy(MSG_INCOMPATIBLE_OBFUSCATION_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
} |
free(copy); |
gdata->obfusc = true; |
107,7 → 107,7 |
if (hm = LoadLibraryEx(sfr->sfFile.szName, NULL, LOAD_LIBRARY_AS_DATAFILE)) { |
if (readPARMresource(hm, reason)) { |
if (gdata->parm.iProtected) { |
*reason = FF_GetMsg_Cpy(MSG_FILTER_PROTECTED_ID); |
*reason = FF_GetMsg_Cpy(MSG_FILTER_PROTECTED_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
//gdata->parmloaded = false; |
} |
else { |
142,7 → 142,7 |
if (readfile_8bf(sfr, reason)) { |
if (gdata->parm.iProtected) { |
// This is for purely protected filters before the time when obfuscation and protection was merged |
*reason = FF_GetMsg_Cpy(MSG_FILTER_PROTECTED_ID); |
*reason = FF_GetMsg_Cpy(MSG_FILTER_PROTECTED_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
} |
else { |
gdata->parmloaded = true; |
154,7 → 154,7 |
// We didn't had success. If we have a clear reason, return false and the reason. |
// If we don't have a clear reason, set a generic reason and return false. |
if (*reason == NULL) { |
*reason = FF_GetMsg_Cpy(MSG_LOADFILE_UNKNOWN_FORMAT_ID); |
*reason = FF_GetMsg_Cpy(MSG_LOADFILE_UNKNOWN_FORMAT_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
} |
return false; |
} |
/trunk/read.c |
---|
84,7 → 84,7 |
/* it's not an empty line; append it to current expr string */ |
if( q+lineptr > curexpr+MAXEXPR ){ |
// TODO: isn't the limit 1024?! (because we need to have the NUL too?) |
*reason = FF_GetMsg_Cpy(MSG_EXPRESSION1024_FOUND_ID); |
*reason = FF_GetMsg_Cpy(MSG_EXPRESSION1024_FOUND_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
break; |
} |
q = cat(q,linebuf); |
94,7 → 94,7 |
free(expr[exprcnt]); |
*q = 0; |
if(!(expr[exprcnt] = my_strdup(curexpr))){ |
*reason = FF_GetMsg_Cpy(MSG_EXPRESSION_OOM_ID); |
*reason = FF_GetMsg_Cpy(MSG_EXPRESSION_OOM_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
break; |
} |
351,7 → 351,7 |
} // else no point in proceeding |
FSClose(refnum); |
}else |
*reason = FF_GetMsg_Cpy(MSG_CANNOT_OPEN_FILE_ID); |
*reason = FF_GetMsg_Cpy(MSG_CANNOT_OPEN_FILE_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
if (res) gdata->obfusc = false; |
return res; |
816,7 → 816,7 |
FSClose(r); |
} |
else |
*reason = FF_GetMsg_Cpy(MSG_CANNOT_OPEN_FILE_ID); |
*reason = FF_GetMsg_Cpy(MSG_CANNOT_OPEN_FILE_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
return res; |
} |
/trunk/save.c |
---|
252,8 → 252,8 |
} |
FSClose(r); |
}else reasonstr = FF_GetMsg_Cpy(MSG_CANNOT_OPEN_FILE_ID); |
else reasonstr = FF_GetMsg_Cpy(MSG_CANNOT_CREATE_FILE_ID); |
}else reasonstr = FF_GetMsg_Cpy(MSG_CANNOT_OPEN_FILE_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
else reasonstr = FF_GetMsg_Cpy(MSG_CANNOT_CREATE_FILE_ID); // TODO: This leaks memory! Needs FF_GetMsg_Free()... |
if (!res) { |
alertuser_id(MSG_CANNOT_SAVE_SETTINGS_ID, reasonstr); |
/trunk/ui.c |
---|
360,11 → 360,19 |
case OPENITEM: |
{ |
TCHAR* tmp1; |
TCHAR* filters = (TCHAR*)malloc(4096); |
TCHAR* filters, *title; |
Boolean loadDlgRet; |
title = (TCHAR*)malloc(1024); |
if (title == NULL) return false; |
filters = (TCHAR*)malloc(4096); |
if (filters == NULL) return false; |
memset(filters, 0, 4096); |
tmp1 = filters; |
FF_GetMsg(title, MSG_LOAD_FILTER_SETTINGS_TITLE_ID); |
strcpy_advance_id(&tmp1, MSG_ALL_SUPPORTED_FILES_ID); |
strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.afs, *.8bf, *.pff, *.prm, *.bin, *.rsrc, *.txt, *.ffx)")); tmp1++; |
strcpy_advance(&tmp1, (TCHAR*)TEXT("*.afs;*.8bf;*.pff;*.prm;*.bin;*.rsrc;*.txt;*.ffx")); tmp1++; |
401,17 → 409,21 |
strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.*)")); tmp1++; |
strcpy_advance(&tmp1, (TCHAR*)TEXT("*.*")); tmp1++; |
if (!gdata->standalone && choosefiletypes( |
loadDlgRet = !gdata->standalone && choosefiletypes( |
#ifdef MAC_ENV |
(StringPtr)_strdup("\pChoose filter settings"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
&sfr, &reply, types, 2, |
filters |
#else |
FF_GetMsg_Cpy(MSG_LOAD_FILTER_SETTINGS_TITLE_ID), |
&sfr, &reply, types, 2, |
title, &sfr, &reply, types, 2, |
filters, gdata->hWndMainDlg |
#endif |
)) { |
); |
free(filters); |
free(title); |
if (loadDlgRet) { |
// Backup everything, otherwise we might lose parameter data if the loading fails |
bakState = saveInternalState(); |
426,17 → 438,24 |
restoreInternalState(bakState); |
} |
} |
free(filters); |
break; |
} |
case SAVEITEM: |
{ |
TCHAR* tmp1; |
TCHAR* filters = (TCHAR*)malloc(4096); |
TCHAR* filters, *title; |
Boolean saveDlgRet; |
title = (TCHAR*)malloc(1024); |
if (title == NULL) return false; |
filters = (TCHAR*)malloc(4096); |
if (filters == NULL) return false; |
memset(filters, 0, 4096); |
tmp1 = filters; |
FF_GetMsg(title, MSG_SAVE_FILTER_SETTINGS_TITLE_ID); |
strcpy_advance_id(&tmp1, MSG_ALL_SUPPORTED_FILES_ID); |
strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.afs, *.pff, *.txt)")); tmp1++; |
strcpy_advance(&tmp1, (TCHAR*)TEXT("*.afs;*.pff;*.txt")); tmp1++; |
457,7 → 476,7 |
strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.*)")); tmp1++; |
strcpy_advance(&tmp1, (TCHAR*)TEXT("*.*")); tmp1++; |
if (!gdata->standalone && putfile( |
saveDlgRet = !gdata->standalone && putfile( |
#ifdef MAC_ENV |
(StringPtr)_strdup("\pSave filter settings"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
(StringPtr)_strdup("\0"), |
465,13 → 484,18 |
"afs", |
filters, 1 |
#else |
FF_GetMsg_Cpy(MSG_SAVE_FILTER_SETTINGS_TITLE_ID), |
title, |
TEXT("\0"), |
TEXT_FILETYPE, SIG_SIMPLETEXT, &reply, &sfr, |
TEXT("afs"), |
filters, 1, gdata->hWndMainDlg |
#endif |
)) { |
); |
free(filters); |
free(title); |
if (saveDlgRet) { |
if (savefile_afs_pff_picotxt(&sfr)) { |
completesave(&reply); |
505,7 → 529,7 |
} |
} |
free(filters); |
break; |
} |
case MAKEITEM: |
/trunk/ui_build.c |
---|
253,35 → 253,33 |
GetDlgItemText(dp, TITLEITEM, fname, MAXFIELD); |
{ |
TCHAR filters[3000]; |
TCHAR* tmp1, * tmp2; |
size_t len; |
TCHAR* tmp1; |
TCHAR* filters, *title; |
Boolean makeDlgRet; |
memset(&filters[0], 0, sizeof(filters)); |
tmp1 = &filters[0]; |
title = (TCHAR*)malloc(1024); |
if (title == NULL) return false; |
FF_GetMsg(tmp1, MSG_MAKE_8BF_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.8bf)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.8bf")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
filters = (TCHAR*)malloc(4096); |
if (filters == NULL) return false; |
memset(filters, 0, 4096); |
tmp1 = filters; |
FF_GetMsg(tmp1, MSG_ALL_FILES_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.*)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.*")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(title, MSG_MAKE_FILTER_SETTINGS_TITLE_ID); |
strcpy_advance_id(&tmp1, MSG_MAKE_8BF_ID); |
strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.8bf)")); tmp1++; |
strcpy_advance(&tmp1, (TCHAR*)TEXT("*.8bf")); tmp1++; |
strcpy_advance_id(&tmp1, MSG_ALL_FILES_ID); |
strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.*)")); tmp1++; |
strcpy_advance(&tmp1, (TCHAR*)TEXT("*.*")); tmp1++; |
#ifdef MACMACHO |
strcat(fname, ".plugin"); |
#endif |
if (putfile( |
makeDlgRet = putfile( |
#ifdef MAC_ENV |
(StringPtr)_strdup("\pMake standalone filter"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
(StringPtr)myc2pstr(_strdup(fname)), |
288,7 → 286,7 |
PS_FILTER_FILETYPE, kPhotoshopSignature, &reply, &sfr, |
"8bf", &filters[0], 1 |
#else |
FF_GetMsg_Cpy(MSG_MAKE_FILTER_SETTINGS_TITLE_ID), |
title, |
fname, |
PS_FILTER_FILETYPE, kPhotoshopSignature, &reply, &sfr, |
TEXT("8bf"), |
295,7 → 293,12 |
&filters[0], 1 |
, (HWND)dp |
#endif |
)) { |
); |
free(filters); |
free(title); |
if (makeDlgRet) { |
make_standalone(&sfr); |
} |
else { |