home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / TELECOM / UUCPbb_2_1_src.lzh / UUCPBB21 / findmach.c < prev    next >
Text File  |  1994-09-25  |  5KB  |  177 lines

  1. /*  findmach.c   This routine gets the information for a specific remote.
  2.     Copyright (C) 1990, 1993  Rick Adams and Bob Billson
  3.  
  4.     This file is part of the OS-9 UUCP package, UUCPbb.
  5.  
  6.     This program is free software; you can redistribute it and/or modify
  7.     it under the terms of the GNU General Public License as published by
  8.     the Free Software Foundation; either version 2 of the License, or
  9.     (at your option) any later version.
  10.  
  11.     This program is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.     GNU General Public License for more details.
  15.  
  16.     You should have received a copy of the GNU General Public License
  17.     along with this program; if not, write to the Free Software
  18.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  
  20.     The author of UUCPbb, Bob Billson, can be contacted at:
  21.     bob@kc2wz.bubble.org  or  uunet!kc2wz!bob  or  by snail mail:
  22.     21 Bates Way, Westfield, NJ 07090
  23. */
  24.  
  25. #include "uucp.h"
  26. #include "uucico.h"
  27.  
  28. #define WORDSIZE  30
  29.  
  30. /* Keep track of whether or not we've actually dialed */
  31. static flag found_one = FALSE;
  32.  
  33.  
  34. int findmach (entryline)
  35. int *entryline;
  36. {
  37.      char line[SYSLINE];
  38.      register char *words[WORDSIZE];
  39.      short i, n;
  40.  
  41.      if (debuglvl > 0)
  42.           fprintf (log, "findmach: checking Systems for %s...", sysname);
  43.  
  44.      do
  45.        {
  46.           /* find system entry */
  47.           if (findline (*entryline, sysname, SYSTEMS, line, sizeof (line))
  48.                         == FALSE)
  49.             {
  50.                if (*entryline == 0)
  51.                  {
  52.                     char tmp[45];
  53.  
  54.                     if (debuglvl == 0)
  55.                       {
  56.                          sprintf (tmp, "'%s' not in Systems file", sysname);
  57.                          logerror (tmp);
  58.                          return (FATAL);
  59.                       }
  60.                     else
  61.                          fputs ("NOT FOUND\n", log);
  62.  
  63.                     return (ABORT);
  64.                  }
  65.                else if (found_one)
  66.                  {
  67.                     if (debuglvl > 0)
  68.                          fputs ("no other entry\n", log);
  69.  
  70.                     return (NOANSWER);
  71.                  }
  72.                else
  73.                  {
  74.                     char tmp[45];
  75.  
  76.                     fprintf (log, "Wrong time to call (%s)", sysname);
  77.                     logerror (tmp);
  78.                     return (ABORT);
  79.                  }
  80.             }
  81.  
  82.           if ((n = getargs (words, line, WORDSIZE)) < 5)
  83.             {
  84.                char tmp[65];
  85.  
  86.                sprintf (tmp, "bad Systems entry for: %s", sysname);
  87.                logerror (tmp);
  88.                return (ABORT);
  89.             }
  90.           (*entryline)++;               /* set up index for next entry */
  91.        }
  92.      while (!chksched (*(words+1)));    /* check schedule to make sure we */
  93.                                         /* can use this entry now */
  94.      found_one = TRUE;
  95.  
  96.      if (debuglvl > 0)
  97.           fprintf (log, "got it\n");
  98.  
  99.      /* retrieve baud rate and phone number */
  100.      strcpy (baud, *(words+3));
  101.      strcpy (phone, *(words+4));
  102.  
  103.      if (strucmp (phone, "none") == 0)
  104.           strcpy (phone, "-");
  105.  
  106.      /* retrieve chat script for system */
  107.      for (*chatscript = '\0', i = 5;  i < n;  i++)
  108.        {
  109.           strcat (chatscript, words[i][0] != '\0' ? *(words+i) : "|");
  110.  
  111.           if (i != (n - 1))
  112.                strcat (chatscript, " ");
  113.        }
  114.  
  115.      /* Look in the Devices file for a matching "device" entry.  This
  116.         "device" does not have to be an actual OS-9 device name (/t2, /t3,
  117.         etc.).  It is merely a unique label to identify the entry in the
  118.         Devices file. */
  119.  
  120.      if (findent (*(words+2), DEVICES, line, sizeof (line)) == FALSE)
  121.        {
  122.           char tmp[65];
  123.  
  124.           sprintf (tmp, "entry not in Devices: %s", *(words+2));
  125.           logerror (tmp);
  126.           return (ABORT);
  127.        }
  128.  
  129.      if ((n = getargs (words, line, WORDSIZE)) != 5)
  130.        {
  131.           char tmp[65];
  132.  
  133.           sprintf (tmp, "bad Devices entry: %s", *words);
  134.           logerror (tmp);
  135.           return (ABORT);
  136.        }
  137.  
  138.      /* Retrieve the actual OS-9 device we will use, e.g. /t2, /t3, etc. */
  139.      strcpy (device, *(words+1));
  140.  
  141.      /* Find the entry in the Dialers file */
  142.      if (findent (*(words+4), DIALERS, line, sizeof (line)) == FALSE)
  143.        {
  144.           char tmp[65];
  145.  
  146.           sprintf (tmp, "device not in Dialers: %s", *(words+4));
  147.           logerror (tmp);
  148.           return (ABORT); 
  149.        }
  150.  
  151.      if ((n = getargs (words, line, WORDSIZE)) < 2)
  152.        {
  153.           char tmp[65];
  154.  
  155.           sprintf (tmp, "bad Dialers entry: %s", *words);
  156.           logerror (tmp);
  157.           return (ABORT);
  158.        }
  159.  
  160.      /* get modem reset string */
  161.      strcat (strcpy (modemreset, *(words+2)), "\n");
  162.  
  163.      /* retrieve dial script */
  164.      for (*dialscript = '\0', i = 1;  i < n;  i++)
  165.        {
  166.           if (words[i][0] == '-'  ||  words[i][0] == '\0')
  167.                strcat (dialscript, "|");
  168.           else
  169.                strcat (dialscript, *(words+i));
  170.  
  171.           if (i != (n - 1))
  172.                strcat (dialscript, " ");
  173.        }
  174.  
  175.      return (OPENPORT);
  176. }
  177.