home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / TextEditors&Viewers / Texteditors / FFRED10.LHA / Rexx / FrexxEdStart.rx
Encoding:
Text File  |  1994-09-27  |  2.5 KB  |  108 lines

  1. /*****************************************************************************
  2.  * $VER: FrexxFrontEd v2.1 (27.9.94) - by Daniel Stenberg & Michiel Willems
  3.  *
  4.  * Arexx script for FrexxEd as replacement for Ed used with Ced
  5.  *
  6.  *
  7.  * USAGE/DESCRIPTION:
  8.  *
  9.  * Arguments: rx FrexxEdStart.rx <Filename> [STICKY]
  10.  * Example  : rx FrexxEdStart S:Startup-Sequence
  11.  *
  12.  ****************************************************************************/
  13.  
  14. OPTIONS RESULTS
  15.  
  16. IF ~SHOW('L', "rexxsupport.library") THEN DO
  17.   IF ~ADDLIB('rexxsupport.library', 0, -30, 0)
  18.   THEN DO
  19.     Say "couldn't open rexxsupport.library!"
  20.     EXIT 10
  21.   END
  22. END
  23.  
  24. PARSE ARG CMDLINE
  25.  
  26. IF CMDLINE = "" THEN
  27.         NOARGS = 1
  28.  
  29. NUMARGS = 0
  30. IF LEFT(UPPER(CMDLINE),6) == UPPER("sticky") THEN DO
  31.     STICKY = 1
  32.     PARSE VAR CMDLINE NAME.NUMARGS CMDLINE
  33. END
  34. ELSE DO
  35.     STICKY = 0
  36. END
  37.  
  38. DO UNTIL CMDLINE = ""
  39.     CMDLINE = STRIP(CMDLINE)
  40.     IF LEFT(CMDLINE, 1) = '"' THEN DO
  41.         NUMARGS = NUMARGS + 1
  42.         PARSE VAR CMDLINE '"' NAME.NUMARGS '"' CMDLINE
  43.     END
  44.     ELSE DO
  45.         NUMARGS = NUMARGS + 1
  46.         PARSE VAR CMDLINE NAME.NUMARGS CMDLINE
  47.     END
  48. END
  49.  
  50. FILE = NAME.1
  51.  
  52. IF UPPER(NAME.2) == UPPER("sticky") THEN DO
  53.     STICKY = 1
  54. END
  55.  
  56. DO
  57.   i = 1
  58.   DO while i<100 /* no more than 100 simultaneous startups! */
  59.     IF ~SHOW(P, ED_FREXXED.i) THEN DO
  60.       IF STICKY THEN DO
  61.         OURPORT = ED_FREXXED.i
  62.         cont = OPENPORT( OURPORT ) /* store progress in 'cont' */
  63.       END
  64.       ELSE DO
  65.         cont = 1 /* success! */
  66.       END
  67.       if cont THEN DO
  68.         i = 100
  69.       END
  70.     END
  71.     i = i + 1
  72.   END
  73.  
  74.   IF cont THEN DO /* only if success! */
  75.  
  76.     PortName = 'FREXXED.1'
  77.  
  78.     IF ~SHOW(P, PortName) THEN DO
  79.         ADDRESS COMMAND "RUN <NIL: >NIL: Fred"
  80.         WaitForPort PortName
  81.     END
  82.     ADDRESS VALUE PortName
  83.     'int ID = Open (ARexxRead("FILE"));
  84.      if(ID && atoi(ARexxRead("STICKY"))) {
  85.        ReadInfo("_notifyport");
  86.        if(GetErrNo())
  87.          ExecuteFile("KillNotify.FPL");
  88.        SetInfo(ID, "_notifyport", ARexxRead("OURPORT"));
  89.        WindowToFront();
  90.      }
  91.      else {
  92.        ARexxSet("STICKY", "0");
  93.      }
  94.      '
  95.     IF STICKY THEN DO
  96.       DO WHILE ~ WAITPKT( OURPORT ) /* wait for message that tells us that the
  97.                                        previously opened buffer is killed */
  98.       END
  99.       packet = GETPKT( OURPORT ) /* get package, but ignore contents! */
  100.       CALL REPLY(packet, 0)   /* return OK! */
  101.     END
  102.   END
  103.   ELSE DO
  104.     Say "we found no free port to use!"
  105.   END
  106. END
  107. /*************************************/
  108.