home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / uucp / uupoll068.lha / History.txt < prev    next >
Text File  |  1992-08-03  |  20KB  |  689 lines

  1.  
  2.   Here you can find all polling servers I currently know about.  Each
  3. one I have tested, but no one is as good as UUPoll ;_)
  4.  
  5. ________________________________________________________________________
  6.  
  7. ProgName      Implementation    Author(s)
  8. ________________________________________________________________________
  9.  
  10. uupoll        (C language)      William Loftus
  11. savepoll      (C language)      Kai Bartels
  12. uupoll        (Rexx language)   Rick Morrow and Russell McOrmond
  13. poll_machine  (AmigaDOS batch)  Matthew Dillon
  14. uupoll        (AmigaDOS batch)  Ralf S. Engelschall and Thomas Lotterer
  15. poll          (Rexx language)   Roland Bless
  16. call          (Rexx language)   Christian Balzer
  17. ________________________________________________________________________
  18.  
  19.                                                            -- rse 920716
  20.  
  21.  
  22.     o /
  23. -----X--------------------------------------------please-cut-here---------
  24.     O \
  25.  
  26. /*
  27.  * UUPOLL  -- call a UUCP connect site
  28.  *
  29.  *  $Header: Beta:src/uucp/src/uucico/RCS/uupoll.c,v 1.1 90/02/02 11:56:15 dillon Exp Locker: dillon $
  30.  *
  31.  * Usage: UUPOLL <system-name>
  32.  *
  33.  * Copyright 1988 by William Loftus.  All rights reserved.
  34.  *
  35.  * ARPA: wpl@prc.unisys.com
  36.  * UUCP: wpl@burdvax.UUCP
  37.  * USMAIL: Unisys/Paoli Research Center;PO BOX 517;Paoli, PA 19301-0517
  38.  *
  39.  */
  40.  
  41. #include <stdio.h>
  42. #include <stdlib.h>
  43. #include <string.h>
  44. #include "version.h"
  45. #include "protos.h"
  46.  
  47. #define LOCK_FILE "t:UUCP.LCK"
  48.  
  49. #define TRUE 1
  50. #define FALSE 0
  51.  
  52. IDENT(".04");
  53.  
  54. CXBRK()
  55. {
  56.     return(0);
  57. }
  58.  
  59. main (argc, argv)
  60. int argc;
  61. char ** argv;
  62. {
  63.   static  char buf[256];
  64.  
  65.   if (argc != 2) {
  66.      printf("Usage: UUPOLL <system-name>\n");
  67.      exit(1);
  68.   }
  69.  
  70.   if (access(LOCK_FILE,0) != -1) {
  71.      printf("UUCP is locked.\n");
  72.      exit(0);
  73.   }
  74.  
  75.     if (is_in_L_sys_file(argv[1])) {
  76.     sprintf(buf, "run >nil: <nil: UUCICO -s%s\n", argv[1]);
  77.     if (system(buf) == -1) {
  78.         printf("Error spawning task to call system \"%s\"\n", argv[1]);
  79.     }
  80.     } else {
  81.     printf("System \"%s\" not in L.sys file.\n", argv[1]);
  82.     }
  83.     return(0);
  84. }
  85.  
  86.     o /
  87. -----X--------------------------------------------please-cut-here---------
  88.     O \
  89.  
  90. /*  +---------------------------------------------------------------------+
  91.     | Name: SavePoll.c                                                    |
  92.     | Project: none                                                       |
  93.     | Version: 1.00                                                       |
  94.     | Author: Kai Bartels                                                 |
  95.     | first modified: 900816                                              |
  96.     | last modified: 900817                                               |
  97.     +---------------------------------------------------------------------+
  98.     | Description: SavePoll tries to poll a system until it recognises    |
  99.     |              success. It tries up to n times where n is specified   |
  100.     |              via the -t<n> switch (default 3). Other switches are:  |
  101.     |              -m    : monitoring - the activities of SavePoll are    |
  102.     |                      reported in a window (default is none),        |
  103.     |              -d    : debugging - (includes -m) additional           |
  104.     |                      information is displayed in that window        |
  105.     |                      (default is none),                             |
  106.     |              -s<n> : delay - SavePoll delayes this amount of secs   |
  107.     |                      before it checks if UUCICO and Uuxqt have      |
  108.     |                      finished their jobs (default is 60).           |
  109.     |              In addition the system to poll must be specified.      |
  110.     |              SavePoll requires the comand 'uupoll', 'status' and    |
  111.     |              'delete' to reside in the search-path of DOS.          |
  112.     +---------------------------------------------------------------------+
  113.     | Functions: log, main                                                |
  114.     +---------------------------------------------------------------------+
  115. */
  116.  
  117. #include <exec/types.h>
  118. #include <stdlib.h>
  119. #include <stdio.h>
  120. #include <libraries/dosextens.h>
  121.  
  122. copy #define linesize 80
  123.  
  124. void log(char *text)
  125. { struct DateStamp CurrDate;
  126.   BPTR lf;
  127.   char LogLine[160];
  128.  
  129.   DateStamp((long*)&CurrDate);
  130.   sprintf(LogLine,"(----%02d:%02d:%02d) SavePoll - %s\n",
  131.           CurrDate.ds_Minute/60,
  132.           CurrDate.ds_Minute%60,
  133.           CurrDate.ds_Tick/50,
  134.           text);
  135.  
  136.  
  137.   if(lf=Open("uuspool:logfile",MODE_OLDFILE))
  138.   { Seek(lf,0,OFFSET_END);
  139.     Write(lf,LogLine,strlen(LogLine));
  140.     Close(lf);
  141.   }
  142. }
  143.  
  144. void main(int argc,char **argv)
  145. { BPTR monitor=0,lf;
  146.   FILE *fh;
  147.   char *sysname=0,LogLine[120],command[100],line[linesize],*buffer;
  148.   int tries=3,i,j,try,secs=60;
  149.   BOOL mon=FALSE,trying,wait,found,debug=FALSE;
  150.  
  151.   for(i=1;i<argc;i++)
  152.  
  153.   { if(argv[i][0]=='-') /* it's a switch */
  154.     { switch(argv[i][1])
  155.       { case 't': tries=atoi(&argv[i][2]);
  156.                   break;
  157.         case 'm': mon=TRUE;
  158.                   break;
  159.         case 'd': debug=TRUE;
  160.                   mon=TRUE;
  161.                   break;
  162.         case 's': secs=atoi(&argv[i][2]);
  163.                   break;
  164.         default : sprintf(LogLine,"unknown option '%c' - ignoring",argv[i][1]);
  165.                   printf("%s\n",LogLine);
  166.                   log(LogLine);
  167.       }
  168.     }
  169.     else /* it's the sysname */
  170.     { if(sysname)
  171.       { sprintf(LogLine,"sorry, I can't poll two systems at once - ignoring '%s'",argv[i]);
  172.         printf("%s\n",LogLine);
  173.         log(LogLine);
  174.       }
  175.       else sysname=argv[i];
  176.     }
  177.   }
  178.  
  179.   log("Startup (900516 kaba)");
  180.  
  181.   if(mon) monitor=Open("con:20/20/600/80/savepoll - monitoring",MODE_NEWFILE);
  182.   if( (!mon) || ((mon)&&(monitor)) )
  183.   { if(sysname)
  184.     { /* here comes the real hot stuff ;-) */
  185.       for(try=0,trying=TRUE;(try<tries)&&(trying);try++)
  186.       { /* pollen */
  187.         if(mon) Write(monitor,"trying to poll ...\n",19);
  188.         sprintf(command,"uupoll %s",sysname);
  189.         Execute(command,0,monitor);
  190.         /* abwarten */
  191.         if(mon) Write(monitor,"starting wait\n",14);
  192.         for(wait=TRUE;wait;)
  193.         { Delay(secs*50);  /* 1 minute */
  194.           if(mon) Write(monitor,"delayed 1 min\n",14);
  195.           Execute("Status >ram:savepoll.temp",0,0);
  196.           if(fh=fopen("ram:savepoll.temp","r"))
  197.           { found=FALSE;
  198.             while(fgets(line,linesize,fh))
  199.             { for(i=strlen(line)-1;(i)&&(line[i]!=' ');i--);
  200.               i++;
  201.               if(debug)
  202.               { Write(monitor,"comparing UUCICO & UUXQT to `",29);
  203.                 Write(monitor,&line[i],strlen(&line[i])-1);
  204.                 Write(monitor,"' - ",2);
  205.               }
  206.               if(!(strcmp("UUCICO\n",&line[i]))) found=TRUE;
  207.               if(!(strcmp("Uuxqt\n",&line[i]))) found=TRUE;
  208.               if(debug)
  209.               { if(found) Write(monitor,"match\n",6);
  210.                      else Write(monitor,"no match\n",9);
  211.               }
  212.             }
  213.             fclose(fh);
  214.             if(!found) wait=FALSE;
  215.           }
  216.           else
  217.           { sprintf(LogLine,"internal error 1");
  218.             printf("%s\n",LogLine);
  219.             log(LogLine);
  220.           }
  221.           Execute("delete ram:savepoll.temp",0,0);
  222.         }
  223.         /* logfile pruefen */
  224.         if(mon) Write(monitor,"looking at logfile\n",19);
  225.         /* rueckwaerts nach uucico suchen */
  226.         j=5;
  227.         if(buffer=malloc(2))
  228.         { if(lf=Open("uuspool:logfile",MODE_OLDFILE))
  229.           { Seek(lf,0,OFFSET_END);
  230.             do
  231.             { Read(lf,buffer,1);
  232.               Seek(lf,-2,OFFSET_CURRENT);
  233.               if((*buffer)=="uucico"[j]) j--;
  234.                                     else j=5;
  235.             }
  236.             while(j>-1);
  237.             free(buffer);
  238.             if(debug) Write(monitor,"uucico found in logfile\n",24);
  239.             if(buffer=malloc(100))
  240.             { Read(lf,buffer,100);
  241.               if(debug)
  242.               { Write(monitor,"the line is `",13);
  243.                 Write(monitor,buffer,50);
  244.                 Write(monitor,"'...\n",5);
  245.               }
  246.               for(i=0,j=0;(i<100)&&(j<24);i++)
  247.               { /* nach "OK Conversation complete" suchen */
  248.                 if(buffer[i]=="OK Conversation complete"[j]) j++;
  249.                                                         else j=0;
  250.                 if(j==24) trying=FALSE;
  251.               }
  252.               if(debug)
  253.               { Write(monitor,"`OK Conversation complete' ",27);
  254.                 if(trying) Write(monitor,"not found\n",10);
  255.                       else Write(monitor,"found\n",6);
  256.               }
  257.               for(i=0,j=0;(i<100)&&(j<17);i++)
  258.               { /* nach "SUCCEEDED call to" suchen */
  259.                 if(buffer[i]=="SUCCEEDED call to"[j]) j++;
  260.                                                 else j=0;
  261.                 if(j==17) trying=FALSE;
  262.               }
  263.               if(debug)
  264.               { Write(monitor,"`SUCCEEDED call to' ",19);
  265.                 if(trying) Write(monitor,"not found\n",10);
  266.                       else Write(monitor,"found\n",6);
  267.               }
  268.               free(buffer);
  269.             }
  270.             Close(lf);
  271.           }
  272.         }
  273.       }
  274.     }
  275.     else
  276.     { sprintf(LogLine,"you must specify a system to poll!");
  277.       printf("%s\n",LogLine);
  278.       log(LogLine);
  279.     }
  280.     if(monitor)
  281.     { Write(monitor,"OK - exiting\n",13);
  282.       Delay(150);
  283.       Close(monitor);
  284.     }
  285.   }
  286.   log("Exit");
  287. }
  288.  
  289.     o /
  290. -----X--------------------------------------------please-cut-here---------
  291.     O \
  292.  
  293. /* Original from: rsm@delfax.Amiga.OCunix.On.Ca (Rick Morrow)
  294.    Changed to WELMAT version by: rwm@atronx.OCUnix.On.Ca (Russell McOrmond) */
  295.  
  296. /* UUPoll.rexx  For use with Welmat 0.46+ and AmigaUUCP 1.13+ */
  297.  
  298. /*
  299.  * This script allows WELMAT to handle the dialing for you rather
  300.  * than requiring that the line be taken down before each call
  301.  *
  302.  */
  303.  
  304.  
  305. Options RESULTS
  306. Options failat 100
  307.  
  308. parse arg callsystem
  309.  
  310. x=Open('lsys',"UULib:l.sys",'R')
  311.  
  312. if x=0 then do
  313.    SysopLog "Error reading UULib:l.sys file!!!"
  314.    Exit 1
  315. end
  316.  
  317.  
  318. do forever
  319.  
  320.    Line=ReadLn('lsys')
  321.  
  322.    if EOF('lsys') then Leave
  323.  
  324.    if Left(Line,1)='#' then Iterate
  325.  
  326.    Parse var Line System ' ' Times ' ' Device ' ' Baud ' ' Phone ' ' Junk
  327.  
  328.    if callsystem ~= System then Iterate
  329.  
  330.    Address Command 'wctl -call 1:1/1.0 -number' Phone '-nofido -prerun "uucp:c/uucico -o -s' || System '-DEVICE %d -UNIT %u"'
  331.  
  332.    x=Close('lsys')
  333.  
  334.    Exit RC
  335. end
  336.  
  337. Exit 1
  338.  
  339.     o /
  340. -----X--------------------------------------------please-cut-here---------
  341.     O \
  342.  
  343. .KEY hostname/A
  344. .BRA {
  345. .KET }
  346.  
  347. setenv retry{hostname} x
  348.  
  349. echo >uuspool:C.{hostname}DUMMY
  350.  
  351. lab loop
  352. uucico -pri -p1 -s{hostname}
  353. echo >>env:retry{hostname} x NOLINE
  354. if $retry{hostname} NOT EQ xxxxxxxx
  355.  if EXISTS uuspool:C.{hostname}DUMMY
  356.   wait 20 min
  357.   skip back loop
  358.  endif
  359. endif
  360. delete env:retry{hostname}
  361.  
  362.     o /
  363. -----X--------------------------------------------please-cut-here---------
  364.     O \
  365.  
  366. .KEY hostname/A,SHUT/s
  367. .BRA {
  368. .KET }
  369.  
  370. ;#  UUCP/UUPOLL
  371. ;#
  372. ;#  Use this shell script for polling at your hosts. This checks
  373. ;#  for a successful connection and will do ten retries unless the
  374. ;#  called host finishes the transmission sucessful.
  375. ;#
  376. ;#  If you specify the SHUT option this will imidiately kill the
  377. ;#  current uucp/uucico process. This is useful only when calling
  378. ;#  this script from an cron table because your polling time is over.
  379. ;#
  380. ;#  Syntax:  uupoll hostname [SHUT]
  381. ;#
  382.  
  383. if "{SHUT}" eq ""
  384.  
  385.     ;# -  - -- ---- ----- try to poll at a host ----- ---- -- -  -
  386.  
  387.     ;# remove the temporary files because a cancelling could have happened last time
  388.     delete >null: uuspool:C.{hostname}DUMMY
  389.     delete >null: uuspool:E.{hostname}DUMMY
  390.  
  391.     ;# initialize counting string
  392.     setenv uupoll_retry{hostname} ""
  393.  
  394.     ;# create dummyfile to test if uucico-operation was successful
  395.     echo >uuspool:C.{hostname}DUMMY
  396.  
  397.     ;# start up polling loop
  398.     lab loop
  399.         echo "polling @ host {hostname}..." NOLINE
  400.         ;# try to call host via uucico
  401.         uucp:c/uucico -7 -pri -p1 -s{hostname}
  402.         ;# increase our counter
  403.         echo >>env:uupoll_retry{hostname} x NOLINE
  404.         ;# has uucico called the host successfully?
  405.         if exists uuspool:C.{hostname}DUMMY
  406.             echo "failed."
  407.             ;# has counter reached the maximum, i.e. retry limit reached?
  408.             if $uupoll_retry{hostname} NOT EQ xxxxxxxxxx
  409.                 skip back loop
  410.             else
  411.                 echo "POLLING STOPPED - RETRY LIMIT REACHED."
  412.             endif
  413.         else
  414.             echo "succeeded."
  415.         endif
  416.  
  417.     ;# reset enviroment variables
  418.     setenv uupoll_retry{hostname} ""
  419.  
  420.     ;# remove our dummyfiles
  421.     delete >null: uuspool:C.{hostname}DUMMY
  422.     delete >null: uuspool:E.{hostname}DUMMY
  423.  
  424. else
  425.  
  426.     ;# -  - -- ---- ----- try to kill a polling process ----- ---- -- -  -
  427.  
  428.     if "$uupoll_process" eq ""
  429.         echo "polling @ host {hostname} already terminated."
  430.     else
  431.     status >env:uupoll_process command UUCICO
  432.         echo "terminating UUCP/UUCICO connection process."
  433.         ;# kill uucico process
  434.         break $uupoll_process C
  435.         echo "processing already transmitted data via manually calling UUCP/UUXQT."
  436.         uucp:c/uuxqt
  437.     endif
  438.  
  439. endif
  440.  
  441.     o /
  442. -----X--------------------------------------------please-cut-here---------
  443.     O \
  444.  
  445. Path: angle!brumuc!gold.sub.org!imutm1.de.intel.com!inews!olivea!uunet!mcsun!Germany.EU.net!ira.uka.de!smurf.sub.org!flatlin!pilhuhn!spirits!rob
  446. From: rob@spirits.ka.sub.org (Roland Bless)
  447. Newsgroups: alt.sys.amiga.uucp
  448. Subject: Re: UUCICO redialer
  449. Message-ID: <YUL8r*vy1@spirits.ka.sub.org>
  450. Date: 5 Jun 92 08:09:00 GMT
  451. References: <bjohnson.02gw@entprise.UUCP>
  452. Organization: Byteable Software Products, private, Karlsruhe (FRG)
  453. Lines: 110
  454. Content-Type: text/plain; charset=ISO-8859-1
  455. X-Newsreader: Arn V1.00 beta rel1
  456.  
  457. In article <bjohnson.02gw@entprise.UUCP>, Bruce Johnson writes:
  458.  
  459. > Does anyone have an arexx/any redialer for UUCICO?  Thanks
  460.  
  461. ------------------------- cut here -------------------------
  462. /* poll - automatic poll-program to call UUCP hosts
  463.    (C)opyright R.Bless 1991 - Version 0.5           */
  464.  
  465. PARSE ARG Host options
  466.  
  467. version="0.5"
  468. /* Modify this entries accordingly */
  469. trials=25
  470. pause="90 secs"
  471. DefHost="pilhuhn"
  472. UUCICO_OPTS="-7 -P7"  /* set RTS/CTS, Packet-size 2048 */
  473. sendbatchCALL='sendbatch -c'
  474. SPOOLBSMTP='SSMTP'
  475. BSMTPbatch='BSMTP -c'
  476.  
  477. /************************************/
  478.  
  479. if Host=="" then Host=DefHost
  480. if options=="" then options=UUCICO_OPTS
  481.  
  482. signal ON BREAK_C
  483. started=TIME()
  484. SAY Address()
  485.  
  486. SAY "UUCP-Polling ARexx-script by R.Bless - V" version
  487. SAY "starting sendbatch..."
  488. SAY sendbatchCALL host
  489. sendbatchCALL host
  490. SAY "sendbatch ready!"
  491. SAY "BSMTP batching..."
  492. SPOOLBSMTP host
  493. BSMTPbatch host
  494. SAY "BSMTP ready."
  495. 'changetaskpri 2'
  496. 'STACK 50000'
  497.  
  498. do counter=1 until counter>=trials
  499.   SAY "uucico running: uucico" options "-s"||host
  500.   'uucico' options '-s'||host
  501.   SAY "uucico ended! Call successful ? Let me see..."
  502.   "tail -1 UUSPOOL:LOGFILE | checkpoll"
  503.   if RC==0 then leave
  504.   if counter>=trials then CALL PollDaemon
  505.   SAY  "uucico failed!?"
  506.   SAY "Pausing..."
  507.   'wait' pause
  508.   SAY "Calling again. Trial #" counter+1 "..."
  509.  end
  510. SAY "yes, it was!"
  511. 'stack 16384'
  512. exit 0
  513.  
  514. PROCEDURE PollDaemon:
  515.  
  516. SAY "creating daemon mail..."
  517. now=TIME()
  518. 'copy UUCP:c/polldaemon.head T:polldaemon.msg'
  519. result= Open('file',"T:polldaemon.msg",'A')
  520. if ~result then exit 5;
  521. else
  522. do
  523. result=writeln('file',"I have been unable to contact" host "since this job was queued.")
  524. result=writeln('file',"This job started:" started "and ended:" now)
  525. result=writeln('file',"I gave up after" counter "trials.")
  526. result=writeln('file', "Please check it out and try again! Thanks.")
  527. result=Close('file')
  528. 'type T:polldaemon.msg | sendmail'
  529. 'wait 5 secs'
  530. 'delete T:polldaemon.msg'
  531. end
  532. return
  533. ------------------------- cut here -------------------------
  534. checkpoll:
  535. ------------------------- cut here -------------------------
  536. /* checkpoll - searches for successful keywords and returns 1 if failed */
  537. PARSE PULL line
  538.  
  539. if Index(line,"FAILED")==0 then exit 0  /* not found */
  540. else exit 1
  541. ------------------------- cut here -------------------------
  542. polldaemon.head:
  543. ------------------------- cut here -------------------------
  544. From: poll-daemon@spirits.ka.sub.org (POLL-DAEMON)
  545. To: root
  546. Subject: Poll-job failed!
  547.  
  548. This is an automatic message from the Poll-Daemon.
  549. ------------------------- cut here -------------------------
  550.  
  551. To use the pipes you should get Andy Finkels 2.04-Hacks or use WShell.
  552. If you use Andy's "pipe" you can 'set _pchar |' (only _one_ underscore!)
  553. and the AmigaShell understands "dir | less" etc...
  554. Naturally you can use any other method to check for a failed call, like
  555. using the return-code from uucico.
  556.  
  557. If the program has reached the maximum number of retries, it'll send
  558. you a mail.
  559.  
  560. Regards,
  561.  Roland
  562. --
  563. R o l a n d   B l e s s |UUCP/USENET: rob@spirits.ka.sub.org                |
  564. Kriegsstrasse 129       |BITNET: UKG5@DKAUNI2.BITNET      FAX: +49211623818 |
  565. 7500 Karlsruhe - FRG    |---------spirits--in--the--material--world---------|
  566. voice +49 721 857328    |"Too much information is driving me insane"(police)|
  567.  
  568.     o /
  569. -----X--------------------------------------------please-cut-here---------
  570.     O \
  571.  
  572. /* Call.rexx by <CB>
  573.  * Poll a system and keep on trying for while.
  574.  * Specific for "my" setup, read CNews and AmigaUUCP 1.15D.
  575.  
  576. Syntax: [rx] Call site [userargs]
  577.  
  578.   // <CB> aka Christian Balzer, P.O. Box 1348, D-6108 Weiterstadt, Germany
  579. \X/  -The Software Brewery-  Domain: CB@frambo.enet.dec.com | CB@brewhq.swb.de
  580.  */
  581.  
  582. Date = '14-Mar-1992'
  583. Version = '2.5'
  584.  
  585. /* You probably want to fidle with the next to definitions */
  586.  
  587. NumOfRetries = 5        /* number of retries to reach site */
  588. Timeout      = 2*50*60        /* wait 2 minutes before retrying */
  589.  
  590.  
  591. lockfile     = "t:UUXQT.LOCK"
  592. retc=0
  593.  
  594. say 'Call.rexx by <CB>/<HR>'  Date ' V'  Version
  595. say 'Started at: 'time()
  596.  
  597. /* open the Rexx support library */
  598.  
  599. if ~show("L","rexxsupport.library") then do
  600.   if addlib("rexxsupport.library",0,-30,0) then do
  601.     say "Added rexxsupport.library"
  602.   end
  603.   else do
  604.     say "Support library (LIBS:rexxsupport.library) not available."
  605.     say "Aborting..."
  606.     exit 30
  607.   end
  608. end
  609.  
  610. dev="serial.device"
  611. if (open(envf,"env:UUDev",r)) then do
  612.   dev=readln(envf)
  613.   err=close(envf)
  614. end
  615.  
  616. unit="0"
  617. if (open(envf,"env:UUUnit",r)) then do
  618.   unit=readln(envf)
  619.   err=close(envf)
  620. end
  621.  
  622. parse arg node uargs
  623.  
  624. if node="" then do 
  625.   say 'No Nodename given, exiting...'
  626.   exit 10
  627. end
  628.  
  629. if length(node)<3 then node="brew"||node
  630.  
  631. 'sendbatches' node
  632.  
  633. if index(uargs,"-r")=0 then do
  634.   "echo >uuspool:C."node"DUMMY"
  635.   "dir >nil: uuspool:"        /* Cache the spool directory */
  636. end
  637. else do
  638.   if index(showdir("uuspool:"),node)~=0 then do /* Also caches the spool directory */
  639.     "echo >uuspool:C."node"DUMMY"    
  640.   end
  641. end
  642.  
  643. Retries = 1
  644.  
  645. /* Change the uucico line to your requirements */
  646.  
  647. /* uucmd='uucico -t2 -pri 'uargs' -s'node '-D 'dev '-U 'unit */
  648.  
  649. uucmd='uucico -7 -pri -t10 'uargs' -s'node '-D 'dev '-U 'unit
  650.  
  651. say "Trying to reach "node" at "time()
  652. "sound sounds:ping quiet"
  653. 'say "Trying to call system 'node'." '
  654.  
  655. uucmd
  656.  
  657. do while (exists("uuspool:C."node"DUMMY") & Retries <= NumOfRetries)
  658.   call delay(Timeout)
  659.   say Retries". retry to reach "node" at "time()
  660.   "sound sounds:ping quiet"
  661.   'say "Trying to call system 'node'." '
  662.   uucmd
  663.   Retries = Retries + 1
  664. end
  665. if exists("uuspool:C."node"DUMMY") then do
  666.   "delete uuspool:C."node"DUMMY"
  667.   say "ERROR: Call to "node" failed after "NumOfRetries + 1" retries."
  668.   "sound sounds:brum quiet"
  669.   'say "Call failed to system 'node'." '
  670.   retc=5
  671. end
  672. else do
  673.   call delay(150)
  674.   do while exists(lockfile)
  675.     say "UUxqt still busy..."
  676.     call delay(300) /* Wait 6 seconds */
  677.   end
  678.   'unbatch'
  679.   'arnmaster -P-2'
  680. end
  681.  
  682. say 'Call.rexx terminated at: 'time()
  683.  
  684. exit retc
  685.  
  686.     o /
  687. -----X--------------------------------------------please-cut-here---------
  688.     O \
  689.