home *** CD-ROM | disk | FTP | other *** search
/ CICA 1997 February / cicawindowscollection199702-1.iso / disc1 / comm / q95demo.exe / SCRIPTS.Z / HOSTFILE.QSC < prev    next >
Text File  |  1995-11-08  |  7KB  |  225 lines

  1. ' File area routines for host mode.
  2. '
  3. ' DO NOT COMPILE THIS FILE BY ITSELF!
  4. '
  5. ' This file is a part of the complete HOST.QSC and will not compile
  6. ' alone.  To recompile the host scripts, select Scripts/Compile from
  7. ' the QmodemPro for Windows menu and select HOST.QSC in the "Compile
  8. ' script" dialog box.  This file will automatically be compiled as
  9. ' part of the full script.
  10.  
  11. function GetProtocol as integer
  12.   dim s as string
  13.   if not DisplayFile(ProtocolFileName) then
  14.     send #Port, "Select a file transfer protocol:"
  15.     send #Port,
  16.     send #Port, "[A] Ascii  [X] Xmodem   [C] Xmodem/CRC  [1] Xmodem/1K  [F] Xmodem/1KG"
  17.     send #Port, "[Y] Ymodem [G] Ymodem/G [Z] Zmodem      [K] Kermit"
  18.   end if
  19.   send #Port,
  20.   s = GetLine("Protocol: ")
  21.   select case OemUpper(left(s, 1))
  22.     case "A"
  23.       GetProtocol = ASCII
  24.     case "X"
  25.       GetProtocol = Xmodem
  26.     case "C"
  27.       GetProtocol = XmodemCRC
  28.     case "1"
  29.       GetProtocol = Xmodem1K
  30.     case "F"
  31.       GetProtocol = Xmodem1KG
  32.     case "Y"
  33.       GetProtocol = Ymodem
  34.     case "G"
  35.       GetProtocol = YmodemG
  36.     case "Z"
  37.       GetProtocol = Zmodem
  38.     case "K"
  39.       GetProtocol = Kermit
  40.     case else
  41.       GetProtocol = -1
  42.   end select
  43. end function
  44.  
  45. function ProtocolName(prot as integer) as string
  46.   select case prot
  47.     case ASCII
  48.       ProtocolName = "ASCII"
  49.     case Xmodem
  50.       ProtocolName = "Xmodem"
  51.     case XmodemCRC
  52.       ProtocolName = "Xmodem/CRC"
  53.     case Xmodem1K
  54.       ProtocolName = "Xmodem/1K"
  55.     case Xmodem1KG
  56.       ProtocolName = "Xmodem/1KG"
  57.     case Ymodem
  58.       ProtocolName = "Ymodem"
  59.     case YmodemG
  60.       ProtocolName = "Ymodem/G"
  61.     case Zmodem
  62.       ProtocolName = "Zmodem"
  63.     case Kermit
  64.       ProtocolName = "Kermit"
  65.   end select
  66. end function
  67.  
  68. ' List files
  69.  
  70. sub ListFiles
  71.   dim result as integer, count as integer, total as integer, sr as SearchRec
  72.   if Setup.dlpath = "" then
  73.     send #Port,
  74.     send #Port, "Sorry, downloads are not available."
  75.     send #Port,
  76.     exit sub
  77.   end if
  78.   total = 0
  79.   count = 0
  80.   print AddBackSlash(Setup.dlpath)+"*.*"
  81.   result = FindFirst(AddBackSlash(Setup.dlpath)+"*.*", sr)
  82.   do while result = 0 and not CallerHungUp
  83.     if sr.AlternateFileName = "" then
  84.       sr.AlternateFileName = sr.FileName
  85.     end if
  86.     dim i as integer
  87.     i = instr(sr.Alternatefilename, ".")
  88.     if i > 0 then
  89.       send #Port, left(sr.Alternatefilename, i-1); tab(10); right(sr.Alternatefilename, len(sr.Alternatefilename)-i); tab(14);
  90.     else
  91.       send #Port, sr.Alternatefilename; tab(14);
  92.     end if
  93.     send #Port, space(11-len(str(sr.filesize))); sr.filesize;
  94.     send #Port, FormatDate(" MM-dd-yy", sr.LastWriteTime);
  95.     send #Port, FormatTime(" hh:mmt ", sr.LastWriteTime);
  96.     send #Port, sr.FileName
  97.     total = total + 1
  98.     count = count + 1
  99.     if count >= 24 then
  100.       if OemUpper(GetLine("-Pause- [C]ontinue, [S]top? ", 1)) = "S" then
  101.         exit do
  102.       end if
  103.       count = 0
  104.     end if
  105.     result = FindNext(sr)
  106.   loop
  107.   send #Port,
  108.   send #Port, total; " file(s) available"
  109.   send #Port,
  110.   GetLine "Press Enter to continue? "
  111. end sub
  112.  
  113. ' Download file
  114.  
  115. sub DownloadFile
  116.   dim fnames as string, protocol as integer, count as integer
  117.   dim onefile as integer
  118.   if Setup.dlpath = "" then
  119.     send #Port,
  120.     send #Port, "Sorry, downloads are not available."
  121.     send #Port,
  122.     exit sub
  123.   end if
  124.   protocol = GetProtocol()
  125.   if protocol < 0 then exit sub
  126.   onefile = protocol < Ymodem
  127.   do
  128.     dim s as string
  129.     s = GetLine("File to download: ")
  130.     if CallerHungUp then
  131.       exit sub
  132.     end if
  133.     if s = "" then exit do
  134.     send #Port,
  135.     if Setup.sysopanypath = 0 or User.Level = 0 then
  136.       s = AddBackSlash(Setup.dlpath)+JustFilename(s)
  137.     elseif instr(s, "\") = 0 then
  138.       s = AddBackSlash(Setup.dlpath)+JustFilename(s)
  139.     end if
  140.     dim sr as SearchRec
  141.     if findfirst(s, sr) = 0 then
  142.       do
  143.         if len(fnames) > 0 then
  144.           fnames = fnames + " "
  145.         end if
  146.         fnames = fnames + """" + AddBackSlash(JustPathName(s)) + sr.FileName + """"
  147.         count = count + 1
  148.         if sr.AlternateFileName = "" then
  149.           sr.AlternateFileName = sr.FileName
  150.         end if
  151.         dim i as integer
  152.         i = instr(sr.Alternatefilename, ".")
  153.         if i > 0 then
  154.           send #Port, left(sr.Alternatefilename, i-1); tab(10); right(sr.Alternatefilename, len(sr.Alternatefilename)-i); tab(14);
  155.         else
  156.           send #Port, sr.Alternatefilename; tab(14);
  157.         end if
  158.         send #Port, space(11-len(str(sr.filesize))); sr.filesize;
  159.         send #Port, FormatDate(" MM-dd-yy", sr.LastWriteTime);
  160.         send #Port, FormatTime(" HH:mmt ", sr.LastWriteTime);
  161.         send #Port, sr.FileName
  162.       loop until (onefile and count = 1) or findnext(sr) <> 0
  163.       send #Port,
  164.     else
  165.       send #Port, "The file "; s; " could not be found on disk."
  166.     end if
  167.   loop until onefile and count = 1
  168.   if count > 0 then
  169.     if Local then
  170.       send #Port, "The following files would be transferred if you were not on locally:"
  171.       send #Port, fnames
  172.     else
  173.       send #Port,
  174.       send #Port, "Begin your "; ProtocolName(protocol); " download of ";
  175.       if count = 1 then
  176.         send #Port, fnames;
  177.       else
  178.         send #Port, count, " files"
  179.       end if
  180.       send #Port, " now"
  181.       delay 1
  182.       sendfile fnames, protocol
  183.     end if
  184.   else
  185.     send #Port, "No files selected."
  186.   end if
  187. end sub
  188.  
  189. ' Upload file
  190.  
  191. sub UploadFile
  192.   dim fname as string, protocol as integer
  193.   if Setup.ulpath = "" then
  194.     send #Port,
  195.     send #Port, "Sorry, uploads are not available."
  196.     send #Port,
  197.     exit sub
  198.   end if
  199.   if Local then
  200.     send #Port, "Uploads not available when logged on locally"
  201.     exit sub
  202.   end if
  203.   protocol = GetProtocol()
  204.   if protocol = 0 or CallerHungUp then exit sub
  205.   send #Port,
  206.   fname = "your file"
  207.   if protocol < Ymodem then
  208.     fname = GetLine("File to upload: ")
  209.     send #Port,
  210.     if fname = "" or CallerHungUp then exit sub
  211.     fname = AddBackSlash(Setup.ulpath)+JustFilename(fname)
  212.     if exists(fname) then
  213.       send #Port, "The file "; fname; " already exists on disk."
  214.       exit sub
  215.     end if
  216.     send #Port, "Begin your "; ProtocolName(protocol); " upload of "; fname; " now"
  217.   else
  218.     fname = Setup.ulpath
  219.     send #Port, "Begin your "; ProtocolName(protocol); " upload of your file now"
  220.   end if
  221.   delay 1
  222.   receivefile fname, protocol
  223. end sub
  224.  
  225.