home *** CD-ROM | disk | FTP | other *** search
/ The CIA World Factbook 1992 / k3bimage.iso / sel / 02 / 0035 / jmodem_b.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-02  |  4.9 KB  |  102 lines

  1. /****************************************************************************/
  2. /*   FILE JMODEM_B.C                                                        */
  3. /*   Created 11-JAN-1990            Richard B. Johnson                      */
  4. /*                                  405 Brougton Drive                      */
  5. /*                                  Beverly, Massachusetts 01915            */
  6. /*                                  BBS (508) 922-3166                      */
  7. /*                                                                          */
  8. /*   allocate_memory();  (All memory allocation )                           */
  9. /*   get port();         (Parse, get ASCII port)                            */
  10. /*   get_inp();          (Parse, get filename)                              */
  11. /*   get_fun();          (Parse, get function S,R )                         */
  12. /*   get_prt();          (Convert ASCII port to numeric offset)             */
  13. /*                                                                          */
  14. /****************************************************************************/
  15. #include <stdio.h>                              /* Used for _puts();        */
  16. #include <stdlib.h>                             /* Used for _malloc();      */
  17. #include <malloc.h>                             /* Used for _malloc();      */
  18. #include <string.h>                             /* Used for _strcpy(), etc  */
  19. #include "jmodem.h"                             /* JMODEM primatives        */
  20. /****************************************************************************/
  21. /*                          Allocate memory                                 */
  22. /****************************************************************************/
  23. unsigned char *allocate_memory(buf_len)
  24. unsigned short buf_len;
  25. {
  26.     static const char malfail[] = "\nMemory allocation failed!";
  27.     register unsigned char *memory;
  28.     memory = (unsigned char *) malloc ( buf_len );
  29.     if (!memory)
  30.         puts(malfail);
  31.     return memory;
  32. }
  33. /****************************************************************************/
  34. /*                     Get port offset number ( 0 - 3)                      */
  35. /****************************************************************************/
  36. unsigned short get_port (prt_str)
  37. char prt_str;
  38. {
  39.     return ( ((unsigned short) prt_str) - '1');  /* Subtract ASCII bias + 1 */
  40. }
  41. /****************************************************************************/
  42. /*                          Get filename                                    */
  43. /****************************************************************************/
  44. char *get_inp (argc, argv)
  45. unsigned short argc;
  46. register char *argv[];
  47. {
  48.     short i=0;
  49.     static char name[64];               /* Max DOS filename/path size    */
  50.  
  51.     if (argc >= 3)                      /* Check command-line parameters */
  52.     {
  53.         strcpy (name, argv[2]);         /* Copy the file name            */
  54.         while (name[i])                 /* Until the NULL character      */
  55.         {
  56.             if ( ( name[i] <= 'z')      /* Check upper limit             */
  57.               && ( name[i] >= 'a') )    /* Check lower limit             */
  58.                   name[i] &= 95;        /* Map to upper case             */
  59.         i++;
  60.         }
  61.         return name;                    /* Return a pointer to the name  */
  62.     }
  63.     return NULL;
  64. }
  65. /****************************************************************************/
  66. /*                          Get function  (S or R)                          */
  67. /****************************************************************************/
  68.  
  69. char get_fun(argc,argv)
  70. unsigned short argc;
  71. register char *argv[];
  72. {
  73.     char funct[3];
  74.     if (argc >= 3)                              /* Command-line parameters */
  75.     {
  76.         strcpy (funct, argv[1]);
  77.         funct[1] = NULL;                        /* Blank out port number  */
  78.         funct[0] = funct[0] & 95;               /* Map to upper case      */
  79.         if (funct[0] == 'S' || funct[0] == 'R') /* Check valid parameters */
  80.             return funct[0];
  81.     }
  82.     return NULL;
  83. }
  84. /****************************************************************************/
  85. /*                      Get port ASCII number (1 - 4)                       */
  86. /****************************************************************************/
  87. char get_prt(argc,argv)
  88. unsigned short argc;
  89. register char *argv[];
  90. {
  91.     char prt[3];
  92.     if (argc >= 3)                              /* Command-line parameters  */
  93.     {
  94.         strcpy (prt, argv[1]);                  /* Get port number          */
  95.         if (prt[1] > '0' && prt[1] < '5')       /* Check for valid ports    */
  96.             return prt[1];                      /* Return ASCII muber       */
  97.     }
  98.     return NULL;
  99. }
  100. /****************************************************************************/
  101. /************************ E N D  O F   M O D U L E **************************/
  102.