home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0020 - 0029 / ibm0020-0029 / ibm0028.tar / ibm0028 / GRLF-C-1.ZIP / GCOMM / KERMITS.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-08-14  |  3.6 KB  |  104 lines

  1. /*
  2.  * KERMITS.C
  3.  *
  4.  * Contains:          KermitSend()
  5.  *
  6.  * The Greenleaf Comm Library
  7.  *
  8.  * Copyright (C) 1989-90 Greenleaf Software Inc.  All Rights Reserved.
  9.  *
  10.  * MODIFICATIONS
  11.  *
  12.  */
  13.  
  14. #include <stdio.h>
  15. #include <string.h>
  16. #include "gf.h"
  17. #include "asiports.h"
  18. #include "xfer.h"
  19. #include "_xfer.h"
  20.  
  21. /*
  22.  * int KermitSend( int port,
  23.  *                 char *file_name_list,
  24.  *                 void ( *message_routine )( char *message ),
  25.  *                 void ( *idle_routine )( XFER *status_block ),
  26.  *                 unsigned int abort_key )
  27.  *
  28.  *
  29.  * ARGUMENTS
  30.  *
  31.  *  int port:                          This is the com port where the transfer
  32.  *                                     will be performed.  It should be open,
  33.  *                                     and set to eight bit mode.
  34.  *
  35.  *  char *file_name_list:              This is a pointer to a string containing
  36.  *                                     a list of file names.  The file names
  37.  *                                     can be separated by spaces, commas,
  38.  *                                     or semicolons.  KERMIT will do its
  39.  *                                     best to send them one at a time.
  40.  *
  41.  *  void ( *message_routine )( char * ):A routine to print character messages
  42.  *                                      sent out by the drive.  NULL for no
  43.  *                                      routine present.
  44.  *
  45.  *  void ( *idle_routine )( XFER * ):  An idle routine.  It gets a parameter
  46.  *                                     block pointer, enabling it to print
  47.  *                                     out statistics.  NULL for no routine.
  48.  *
  49.  *  unsigned int abort_key:            A user defined abort key.  Control X
  50.  *                                     conventionally, but ESC is good too.
  51.  *
  52.  * DESCRIPTION
  53.  *
  54.  * This routine is the public user interface routine to perform a Kermit
  55.  * file send.  The public interface routines are responsible for
  56.  * setting up the xfer status block, andpassing it to the driver routine.
  57.  * The private driver for KermitSend is _KermitSned().  So all this
  58.  * public routine does is assign appropriate values to the status block,
  59.  * then call the private driver.  Note that Kermit needs an eight bit channel
  60.  * to operate properly.  XON/XOFF flow control will still work in conjunction
  61.  * with the kermit protocol, as will RTS/CTS flow control.  Note that with
  62.  * Kermit, this module can send from 0 to N files.  The number of files
  63.  * is totally in the hands of the routine that sets up the filename string
  64.  * that is passed to this routine.
  65.  *
  66.  * SIDE EFFECTS
  67.  *
  68.  * File(s) may have been transfered.
  69.  *
  70.  * RETURNS
  71.  *
  72.  * This routine returns the xfer status word that was set up
  73.  * by the driver routine.  The interpretation of the return values
  74.  * is described in the include file, "XFER.H", which also contains
  75.  * their definitions.
  76.  *
  77.  *
  78.  * AUTHOR
  79.  *  Mark Nelson          27-Sep-1989  20:57:40.92
  80.  *
  81.  * MODIFICATIONS
  82.  *
  83.  */
  84. int GF_CONV KermitSend( int port,
  85.                 char *file_name_list,
  86.                 void ( GF_CDECL *message_routine )( char *message ),
  87.                 void ( GF_CDECL *idle_routine )( XFER *status_block ),
  88.                 unsigned int abort_key )
  89. {
  90.     XFER kermit;
  91.  
  92.     kermit.port = port;
  93.     kermit.return_file_name = NULL;
  94.     kermit.filename = file_name_list;
  95.     kermit.message_routine = message_routine;
  96.     kermit.idle_routine = idle_routine;
  97.     kermit.abort_key = abort_key;
  98.     kermit.transfer_type = XFER_TYPE_KERMIT;
  99.     kermit.file_length = 0L;
  100.     _KermitSend( &kermit );
  101.     return( kermit.return_status );
  102. }
  103.  
  104.