' Rename_EBA_to_IWB.iwb

Declare import,SHBrowseForFolder(param1:uint),int
Declare import,SHGetPathFromIDList(param1:uint, param2:uint),int
Declare import,CoTaskMemFree(param1:int),int
Declare Import,RtlZeroMemory(dat:uint,length:int),int
Declare import,SendMessageA(hWnd:uint, message:uint, wParam:int, lparam:uint),uint
Declare import, _MoveFile alias MoveFileA(lpExistingFileName as STRING,lpNewFileName as STRING),INT

TYPE BROWSEINFO
	UINT hOwner
	UINT pidlRoot
	POINTER pszDisplayName
	POINTER lpszTitle
	UINT ulFlags
	UINT lpfn
	UINT lParam
	UINT iImage
ENDTYPE

CONST WM_USER = 0x400
CONST BFFM_SETSELECTION = WM_USER + 102
CONST BFFM_INITIALIZED = 1
CONST BFFM_VALIDATEFAILED = 3
CONST BIF_RETURNFSANCESTORS = 8
CONST BIF_RETURNONLYFSDIRS = 1
CONST BIF_NEWDIALOGSTYLE = 0x40
CONST BIF_DONTGOBELOWDOMAIN = 2

ISTRING dir[261], sdir[261]
OPENCONSOLE
sdir = GetStartPath
IF FolderRequest(0, "Choose folder", dir, sdir, 0x441)
	GetFilesDIR(dir)
ENDIF
WAITCON
CLOSECONSOLE
END

'________________________________________________________________________________________
SUB FolderRequest(hWnd:uint, title:pointer, dir:pointer, initial:pointer, flags:uint),int
'________________________________________________________________________________________
INT r = FALSE
ISTRING buffer[261]
UINT item_list
BROWSEINFO bi
RtlZeroMemory(&bi, LEN(bi))
bi.hOwner = hWnd
bi.lpszTitle = title
bi.ulFlags = flags
IF flags = 0 THEN bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_DONTGOBELOWDOMAIN
bi.lpfn = &BrowseFolderCallback
bi.lParam = initial
' Display the browser.
item_list = SHBrowseForFolder(&bi)
IF item_list
	IF SHGetPathFromIDList(item_list, &buffer)
		IF MID$(buffer,LEN(buffer),1) <> "\\"
			#<STRING>dir = buffer + "\\"
		ELSE
			#<STRING>dir = buffer
		ENDIF
		r = TRUE
	ENDIF
	CoTaskMemFree(item_list)
ENDIF
RETURN r
ENDSUB

'___________________________________________________________________________
SUB BrowseFolderCallback(hWnd:uint, uMsg:uint, lParam:uint, lpData:uint),int
'___________________________________________________________________________
SELECT uMsg
	CASE BFFM_INITIALIZED
		SendMessageA( hWnd, BFFM_SETSELECTION, TRUE, lpData )
	CASE BFFM_VALIDATEFAILED
		RETURN 1
ENDSELECT
RETURN 0
ENDSUB

'___________________________
SUB GetFilesDIR(Path:string)
'___________________________
DEF Npath, Cpath, Opath, s:string
DEF dir, attrib:int
s = "\\"
Opath = Path
dir = FINDOPEN(Opath + "*.*")
IF (dir)
	DO
		Cpath = FINDNEXT(dir,attrib)
		IF LEN(Cpath)
			IF (attrib & @file_directory)
				IF Cpath <> "." AND Cpath <> ".."
					GetFilesDIR(Opath + Cpath + s)
				ENDIF
			ELSE
				IF LCASE$(RIGHT$(Cpath,3)) = "eba"
					Npath = MID$(Cpath,1,LEN(Cpath)-3) + "iwb"
					IF RENAME(Opath + Cpath, Opath + Npath)
						PRINT Cpath, " Renamed to ", Opath
					ELSE
						PRINT Cpath, " NOT Renamed"
					ENDIF
				ENDIF
			ENDIF
		ENDIF
	UNTIL Cpath = ""
	FINDCLOSE dir
ENDIF

RETURN
ENDSUB

'_________________________________________________
SUB rename(FileName:string,NewfileName:string),int
'_________________________________________________
res = _MoveFile(FileName,NewfileName)
RETURN res
ENDSUB