home *** CD-ROM | disk | FTP | other *** search
-
- /****************** help.c *********************
- * *
- * HYPER *
- * *
- * *
- * © by Koessi *
- * *
- * Thursday, 03 Sep 1992 *
- * *
- * *
- * this is an help showing the usage of *
- * "hyper" from inside another program *
- * *
- * Compile with DICE: *
- * dcc help.c -ohelp -rr -2.0 *
- * *
- *************************************************/
-
- #include <exec/types.h>
- #include <exec/execbase.h>
- #include <exec/memory.h>
- #include <dos/dos.h>
- #include <dos/dostags.h>
- #include <rexx/storage.h>
-
- /* Prototypes */
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/alib_protos.h>
- #include <clib/rexxsyslib_protos.h>
-
- #define MSG struct Message
- #define RMSG struct RexxMsg
- #define MSGP struct MsgPort
- #define SIZE 32
-
- extern void SendRxMsg(char *);
- extern void _main(int, char *);
- extern int main(int, char **);
- /*
- int
- main(int argc, char **argv)
- {
- return(FALSE);
- }
- */
-
- /*************************************************
- * *
- * *
- * FUNCTION: _main *
- * *
- * *
- * INPUT: short len *
- * char *arg *
- * *
- * OUTPUT: int *
- * *
- * NOTE: no cmdline parsing ! *
- * *
- *************************************************/
-
- char portname[] = "HYPER_RXPORT";
- char command[] = "SYS:Utilities/hyper -b";
-
- void
- _main(int arglen, char *argptr)
- {
- if (!FindPort(portname))
- {
- SystemTags(command,
- SYS_Asynch, TRUE,
- SYS_Output, NULL,
- SYS_Input, NULL,
- TAG_DONE);
- Delay(10);
- }
- char *arg = argptr;
- while (*argptr && *argptr != '\n')
- ++argptr;
-
- *argptr = '\0';
-
- SendRxMsg(arg);
- }
-
- /*************************************************
- * *
- * *
- * FUNCTION: SendRxMsg *
- * *
- * *
- * INPUT: char *msgtxt *
- * *
- * OUTPUT: void *
- * *
- * NOTE: if e.g. input string is *
- * formatted like this: *
- * "IconAuthor/GADGETS" *
- * this will cause 'hyper' to *
- * search for a file called *
- * a) "IconAuthor" in the *
- * current directory *
- * b) "HYPER:IconAuthor" *
- * c) "HYPER:IconAuthor.hyper" *
- * d) "HYPER:IconAuthor.guide" *
- * *
- * If that file is found, *
- * hyper will show the page *
- * "GADGETS" if a node named *
- * like that is found in the *
- * database *
- * *
- *************************************************/
-
- void
- SendRxMsg(char *msgtxt)
- {
- MSGP *reply_port;
- MSGP *rx_port;
- void *rx_msg; /* casted to parts of a RexxMsg struct */
-
- if (reply_port = CreateMsgPort())
- {
- if (rx_msg = AllocVec(sizeof(RMSG), MEMF_PUBLIC|MEMF_CLEAR))
- {
- ((struct Node *)rx_msg)->ln_Type = NT_MESSAGE;
- ((MSG *)rx_msg)->mn_ReplyPort = reply_port;
- ((MSG *)rx_msg)->mn_Length = sizeof(RMSG);
- ((RMSG *)rx_msg)->rm_Args[0] = msgtxt;
-
- Forbid();
- if (rx_port = (MSGP *)FindPort(portname))
- {
- PutMsg(rx_port, (MSG *)rx_msg);
- Permit();
- WaitPort(reply_port);
- ReplyMsg(GetMsg(reply_port));
- }
- else
- Permit();
-
- FreeVec(rx_msg);
- }
- DeleteMsgPort(reply_port);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-