#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; }