276 lines
5.4 KiB
C++
276 lines
5.4 KiB
C++
#include "TRACK.H"
|
|
|
|
extern char CurrentDir[];
|
|
|
|
u32 ReadLine(FILE *F,char *LineFeed)
|
|
{
|
|
u32 LineL;
|
|
u32 NotFinish;
|
|
char PreviousType;
|
|
PreviousType = 100;
|
|
LineL = 0;
|
|
do {
|
|
NotFinish = fread(&LineFeed[LineL],1,1,F);
|
|
if ((LineFeed[LineL] < 32) && (LineFeed[LineL] != '\n')) LineFeed[LineL] = 32;
|
|
if ((PreviousType == 32) && (LineFeed[LineL] == 32))
|
|
LineL --;
|
|
PreviousType = LineFeed[LineL];
|
|
}
|
|
while ((LineFeed[LineL++] != '\n') && (NotFinish));
|
|
LineFeed[LineL] = 0;
|
|
if (LineL && (LineFeed[LineL-1] == '\n'))
|
|
LineFeed[LineL-1] = 0;
|
|
return NotFinish;
|
|
}
|
|
|
|
u32 GetFileNameExtend(char *TRACKqs)
|
|
{
|
|
u32 FFF;
|
|
FFF = 0;
|
|
while(*TRACKqs)
|
|
{
|
|
if (*TRACKqs != '"')
|
|
{
|
|
FFF <<= 8;
|
|
if ((*TRACKqs >= 'a') && (*TRACKqs <= 'z'))
|
|
FFF |= *TRACKqs + 'A' - 'a';
|
|
else
|
|
FFF |= *TRACKqs;
|
|
}
|
|
TRACKqs++;
|
|
}
|
|
return FFF;
|
|
};
|
|
|
|
|
|
void SetFileNameExtend(char *TRACKqs,u32 Extend)
|
|
{
|
|
u32 FFF = GetFileNameExtend(TRACKqs);
|
|
if (FFF != Extend)
|
|
{
|
|
char *End;
|
|
End = TRACKqs;
|
|
while (*End) {End++;};
|
|
if (End - 4 > TRACKqs)
|
|
{
|
|
End-=4;
|
|
*(End++) = (Extend>>24) & 0xff;
|
|
*(End++) = (Extend>>16) & 0xff;
|
|
*(End++) = (Extend>>8) & 0xff;
|
|
*(End++) = (Extend) & 0xff;
|
|
*(End++) = 0;
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
void AddFileNameExtend(char *TRACKqs,u32 Extend)
|
|
{
|
|
u32 FFF = GetFileNameExtend(TRACKqs);
|
|
if (FFF != Extend)
|
|
{
|
|
char *End;
|
|
End = TRACKqs;
|
|
while (*End) {End++;};
|
|
*(End++) = (Extend>>24) & 0xff;
|
|
*(End++) = (Extend>>16) & 0xff;
|
|
*(End++) = (Extend>>8) & 0xff;
|
|
*(End++) = (Extend) & 0xff;
|
|
*(End++) = 0;
|
|
}
|
|
};
|
|
|
|
|
|
|
|
unsigned long CDLG_USR_GetFileName (char *Name, char *Filter,HWND MUM,unsigned long ChangeDir,char *SubDir, u32 saveMode)
|
|
{
|
|
static char FileDir[1024] = "";
|
|
OPENFILENAME ofn;
|
|
char Convert[1024];
|
|
char Current_ID[1024];
|
|
char Title[256];
|
|
char Result1[1024];
|
|
char *ucSrc,*ucDst;
|
|
int result;
|
|
|
|
Result1[0] = 0;
|
|
ucDst = Convert;
|
|
ucSrc = Filter ;
|
|
while (*(ucSrc))
|
|
{
|
|
*ucDst = *ucSrc;
|
|
if (*ucDst == '|') *ucDst = 0;
|
|
ucDst ++;
|
|
ucSrc ++;
|
|
}
|
|
Name[0] = 0;
|
|
*ucDst = 0;
|
|
*(ucDst+1)=0;
|
|
ofn.lStructSize = sizeof(ofn);
|
|
ofn.hwndOwner = MUM;
|
|
ofn.hInstance = NULL;
|
|
ofn.lpstrFilter = Convert;
|
|
ofn.lpstrCustomFilter = NULL;
|
|
ofn.nFilterIndex = 0;
|
|
ofn.lpstrFile = Name;
|
|
ofn.nMaxFile = 256;
|
|
ofn.lpstrFileTitle = Title;
|
|
ofn.nMaxFileTitle = 256;
|
|
|
|
if (!*FileDir)
|
|
strcpy(FileDir, CurrentDir);
|
|
ofn.lpstrInitialDir = FileDir;
|
|
if (SubDir)
|
|
{
|
|
while(SubDir[strlen(SubDir)-1]=='\\')
|
|
SubDir[strlen(SubDir)-1] = 0;
|
|
if (strlen(SubDir)>2 && (SubDir[1]==':') && (SubDir[2]=='\\'))
|
|
sprintf(Current_ID,"%s\\",SubDir);
|
|
else
|
|
//sprintf(Current_ID,"%s\\%s\\",FileDir,SubDir);
|
|
sprintf(Current_ID,"%s\\%s\\",CurrentDir,SubDir);
|
|
}
|
|
else
|
|
sprintf(Current_ID,"%s\\",FileDir);
|
|
ofn.lpstrInitialDir = Current_ID;
|
|
ofn.lpstrTitle = "Open File";
|
|
//if (ChangeDir)
|
|
// ofn.Flags = 0;
|
|
//else
|
|
ofn.Flags = OFN_NOCHANGEDIR ;
|
|
ofn.lpstrDefExt = NULL;
|
|
|
|
// Force no Unpack when File is browsing -> Prevent unpack on bad directory
|
|
extern HANDLE PackFileMutex;
|
|
if (WAIT_OBJECT_0 != WaitForSingleObject(PackFileMutex, INFINITE))
|
|
return 0;
|
|
|
|
if (saveMode)
|
|
result = GetSaveFileName(&ofn);
|
|
else
|
|
result = GetOpenFileName(&ofn);
|
|
ReleaseMutex(PackFileMutex);
|
|
|
|
if (result)
|
|
{
|
|
strcpy(Result1, Name);
|
|
char *titlePtr = strstr(Result1, Title);
|
|
if (titlePtr)
|
|
{
|
|
*titlePtr = 0;
|
|
strcpy(FileDir, Result1);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
#include "shlobj.h"
|
|
|
|
unsigned long CDLG_USR_GetDirName (char *Name, HWND MUM, char *SubDir)
|
|
{
|
|
BROWSEINFO bnfo;
|
|
char Current_ID[1024];
|
|
|
|
if (SubDir)
|
|
{
|
|
while(SubDir[strlen(SubDir)-1]=='\\')
|
|
SubDir[strlen(SubDir)-1] = 0;
|
|
if (strlen(SubDir)>2 && (SubDir[1]==':') && (SubDir[2]=='\\'))
|
|
sprintf(Current_ID,"%s\\",SubDir);
|
|
else
|
|
sprintf(Current_ID,"%s\\%s\\",CurrentDir,SubDir);
|
|
}
|
|
else
|
|
sprintf(Current_ID,"%s\\",CurrentDir);
|
|
|
|
LPITEMIDLIST item;
|
|
WCHAR filename[ 1024 ];
|
|
MultiByteToWideChar(CP_ACP,0,Current_ID,-1,filename,1024);
|
|
SHParseDisplayName(filename, NULL, &item, 0, NULL);
|
|
|
|
Name[0] = 0;
|
|
bnfo.hwndOwner = MUM;
|
|
bnfo.pidlRoot = item;
|
|
bnfo.pszDisplayName = Name;
|
|
bnfo.lpszTitle = NULL;
|
|
bnfo.ulFlags = BIF_NONEWFOLDERBUTTON;
|
|
bnfo.lpfn = NULL;
|
|
bnfo.lParam = NULL;
|
|
bnfo.iImage = 0;
|
|
if (!SHBrowseForFolder(&bnfo))
|
|
return 0;
|
|
return 1;
|
|
}
|
|
|
|
u32 GetFileLenght(char *Filename)
|
|
{
|
|
u32 Size;
|
|
Size = 0;
|
|
FILE *F;
|
|
F = GetSceneFileHanler(Filename);
|
|
if (F)
|
|
{
|
|
u32 LocalSize;
|
|
u8 Buufer[2048];
|
|
LocalSize = 1;
|
|
while (LocalSize)
|
|
{
|
|
LocalSize = fread( Buufer , sizeof( char ), 2048, F);
|
|
Size += LocalSize;
|
|
}
|
|
CC_fclose(F);
|
|
}
|
|
return Size;
|
|
}
|
|
u32 IsDifferent(char *Filename1,char *Filename2)
|
|
{
|
|
u32 Size1,Size2;
|
|
FILE *F1,*F2;
|
|
Size1 = GetFileLenght(Filename1);
|
|
Size2 = GetFileLenght(Filename2);
|
|
if ((!Size2) || (!Size1)) return 0;
|
|
if (Size1 != Size2) return 1;
|
|
F1 = GetSceneFileHanler(Filename1);
|
|
F2 = GetSceneFileHanler(Filename2);
|
|
if (F1 && F2)
|
|
{
|
|
u32 LocalSize1;
|
|
u32 LocalSize2;
|
|
u8 Buufer1[2048];
|
|
u8 Buufer2[2048];
|
|
LocalSize1 = 1;
|
|
LocalSize2 = 1;
|
|
while (LocalSize1 && LocalSize2)
|
|
{
|
|
u32 Counter;
|
|
LocalSize1 = fread( Buufer1 , sizeof( char ), 2048, F1);
|
|
LocalSize2 = fread( Buufer2 , sizeof( char ), 2048, F2);
|
|
Counter = LocalSize1;
|
|
while (Counter--)
|
|
{
|
|
if (Buufer1[Counter] != Buufer2[Counter])
|
|
{
|
|
if (F1) CC_fclose(F1);
|
|
if (F2) CC_fclose(F2);
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (F1) CC_fclose(F1);
|
|
if (F2) CC_fclose(F2);
|
|
return 0;
|
|
}
|
|
u32 IsExist(char *Filename)
|
|
{
|
|
u32 Size;
|
|
Size = 0;
|
|
FILE *F;
|
|
F = fopen(Filename,"rb");
|
|
if (F)
|
|
{
|
|
CC_fclose(F);
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|