home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 January / Chip_1999-01_cd.bin / zkuste / delphi / D1 / DRBOBC.ZIP / UUCODE.PAS < prev   
Pascal/Delphi Source File  |  1995-11-07  |  4KB  |  127 lines

  1. {$A+,B-,D-,F-,G+,I+,K+,L-,N+,P+,Q-,R-,S+,T+,V-,W-,X+,Y-}
  2. unit UUCode;
  3. (*
  4.   UUCODE 1.0 (Public Domain)
  5.   Borland Pascal (Objects) 7.01
  6.   Copr. (c) 1995-04-27 Robert E. Swart (100434.2072@compuserve.com)
  7.                        P.O. box 799
  8.                        5702 NP  Helmond
  9.                        The Netherlands
  10.   -----------------------------------------------------------------
  11.   This DLL implements 4 functions; UUEncode, UUDecode and UUEncoder
  12.   and UUDecoder for usage with Delphi or Borland Pascal for Windows
  13.   or DPMI programs.
  14.   The UU-routines are capable of working in other environments like
  15.   C/C++ and VB, but remember to declare them as FAR PASCAL.
  16.   NB: PChar is just a null-terminated string (LPSTR in C/C++).
  17.  
  18.   Example Usage:
  19.     UUEncode('MyFile.Ext'); { result in ',MyFile.UUE' }
  20.     UUDecode('MyFile.UUE'); { original back in 'MyFile.Ext' }
  21.     UUEncoder('MyFile.Ext','Other.XXX',0644,False,CallBack);
  22. *)
  23. interface
  24. Type
  25.   TCallBack = procedure (Position, Size: LongInt); { export; }
  26.  
  27. Const
  28.   UUCodeLoaded: Boolean = False; { presume nothing! }
  29.  
  30. var UUEncode: function(FileName: PChar): Word;
  31.     {
  32.      UUEncodes the file FileName, replacing the extension of FileName
  33.      with .UUE for the uuencoded output file.
  34.  
  35.      Return Codes:
  36.         0: OK
  37.         1: input file is output file
  38.         2: input file does not exist
  39.         3: output file exists
  40.         4: could not create output file
  41.         5: DLL bussy, try again later (shared buffers)
  42.     }
  43.  
  44.     UUDecode: function(FileName: PChar): Word;
  45.     {
  46.      UUDecodes every uuencoded file in file FileName (you must supply
  47.      the .UUE extension for the input file yourself).  Reading from a
  48.      Unix-style uuencoded file is transparent.
  49.  
  50.      Return Codes:
  51.         0: OK
  52.         1: input file is output file
  53.         2: input file does not exist
  54.         3: output file exists
  55.         4: could not create output file
  56.         5: DLL bussy, try again later (shared buffers)
  57.     }
  58.  
  59.     UUEncoder: function(InFile,OutFile: PChar; Flag: Word; Unix: Boolean;
  60.                         CallBack: TCallBack): Word;
  61.     {
  62.      UUEncodes the file InFile, placing the output in OutFile. Uses flag
  63.      for 'begin 0xxx' code. If Unix is true, then LF will be used as end-
  64.      of-line character (instead of CR-LF).
  65.      UUEncode (see above) is just a default shell around UUEncoder.
  66.      During the UUDecoding process, the CallBack routine is called.
  67.  
  68.      Return Codes:
  69.         0: OK
  70.         1: input file is output file
  71.         2: input file does not exist
  72.         3: output file exists
  73.         4: could not create output file
  74.         5: DLL bussy, try again later (shared buffers)
  75.     }
  76.  
  77.     UUDecoder: function(FileName: PChar;
  78.                         CallBack: TCallBack): Word;
  79.     {
  80.      UUDecodes every uuencoded file in file FileName (you must supply
  81.      the .UUE extension for the input file yourself).  Reading from a
  82.      Unix-style uuencoded file is transparent.
  83.      During the UUDecoding process, the CallBack routine is called.
  84.  
  85.      Return Codes:
  86.         0: OK
  87.         1: input file is output file
  88.         2: input file does not exist
  89.         3: output file exists
  90.         4: could not create output file
  91.         5: DLL bussy, try again later (shared buffers)
  92.     }
  93.  
  94. implementation
  95. {$IFDEF WINDOWS}
  96. uses WinProcs;
  97. Const SEM_NoOpenFileErrorBox = $8000;
  98. {$ELSE}
  99. uses WinAPI;
  100. {$ENDIF}
  101.  
  102. var SaveExit: pointer;
  103.     DLLHandle: Word;
  104.  
  105.     procedure NewExit; far;
  106.     begin
  107.       ExitProc := SaveExit;
  108.       FreeLibrary(DLLHandle)
  109.     end {NewExit};
  110.  
  111. begin
  112.   {$IFDEF WINDOWS}
  113.   SetErrorMode(SEM_NoOpenFileErrorBox);
  114.   {$ENDIF}
  115.   DLLHandle := LoadLibrary('UUCODE.DLL');
  116.   if DLLHandle >= 32 then
  117.   begin
  118.     UUCodeLoaded := True;
  119.     SaveExit := ExitProc;
  120.     ExitProc := @NewExit;
  121.     @UUEncode := GetProcAddress(DLLHandle,'UUENCODE');
  122.     @UUDecode := GetProcAddress(DLLHandle,'UUDECODE');
  123.     @UUEncoder := GetProcAddress(DLLHandle,'UUENCODER');
  124.     @UUDecoder := GetProcAddress(DLLHandle,'UUDECODER')
  125.   end
  126. end.
  127.