'===========================================================================
' Subject: UPPERCASE FILENAMES                Date: 01-20-98 (16:32)       
'  Author: Dave Navarro, Jr.                  Code: PBDLL                  
'  Origin: dave@powerbasic.com              Packet: PBDLL.ABC
'===========================================================================
'===========================================================================
'
' FCASE for PB/DLL 5.0
' Copyright (c) 1998 by PowerBASIC, Inc.
'
' Console utility to convert all filenames in the current directory to
' upper case.  Requires MKCON utility from ftp.powerbasic.com
'
'===========================================================================

$DIM ALL
$COMPILE EXE

'===========================================================================

%NULL                  = 0
%STD_OUTPUT_HANDLE     = -11&

DECLARE FUNCTION GetStdHandle LIB "KERNEL32.DLL" ALIAS "GetStdHandle" (BYVAL nStdHandle AS LONG) AS LONG
DECLARE FUNCTION WriteFile LIB "KERNEL32.DLL" ALIAS "WriteFile" (BYVAL hFile AS LONG, lpBuffer AS ANY, BYVAL nNumberOfBytesToWrite AS LONG, lpNumberOfBytesWritten AS LONG, BYVAL lpOverlapped AS LONG) AS LONG

GLOBAL hOutput AS LONG

'===========================================================================

SUB StdOut(BYVAL x AS STRING)

  LOCAL Buffer  AS LONG
  LOCAL Written AS LONG

  Buffer = STRPTR(x)
  WriteFile hOutput, BYVAL Buffer, LEN(x), Written, %NULL
' WriteConsole hOutput, BYVAL Buffer, LEN(x), Written, %NULL

END SUB

SUB StdOutLn(BYVAL x AS STRING)
  StdOut x & CHR$(13,10)
END SUB

'===========================================================================

FUNCTION WinMain (BYVAL CurInst&, _
                  BYVAL PrvInst&, _
                  CmdLine AS ASCIIZ PTR, _
                  BYVAL CmdShow&) EXPORT AS LONG

  LOCAL files    AS LONG
  LOCAL x        AS LONG
  LOCAL f        AS STRING
  LOCAL FileSpec AS STRING

  DIM Filename(1 to 5000) AS STRING

  hOutput = GetStdHandle(%STD_OUTPUT_HANDLE)

  FileSpec = COMMAND$

  IF LEN(FileSpec) = 0 THEN
    FileSpec = "*.*"
  END IF

  f = DIR$(FileSpec)
  WHILE LEN(f)
    INCR files
    Filename(files) = f
    f = DIR$
  WEND

  IF files THEN
    FOR x = 1 TO files
      f = UCASE$(Filename(x))
      StdOutLn Filename(x) + " => " + f
      NAME Filename(x) AS f
    NEXT
  END IF

END FUNCTION
