home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d6xx / d600 / multi_player.lha / Multi_Player / sources / cmd_player.c
Encoding:
C/C++ Source or Header  |  1992-02-01  |  1.8 KB  |  78 lines

  1.     
  2. /************************************************************************/
  3. /************************************************************************/
  4.  
  5. #include <stdio.h>
  6. #include <rexx/storage.h>
  7. #include <rexx/errors.h>
  8.  
  9. char    *portname="Multi_Player";
  10.  
  11. /***********************/
  12. /* PROGRAMME PRINCIPAL */
  13. /***********************/
  14.  
  15. main(argc,argv)
  16. int   argc;
  17. char  **argv;
  18.  
  19. {
  20.   char buffer[100];
  21.  
  22.   if(argc>1){
  23.     if(argc==2){
  24.         if(send_msg(argv[1])!=0){
  25.             exit(-1);
  26.         }
  27.     }else{
  28.         sprintf(buffer,"%s %s",argv[1],argv[2]);
  29.         if(send_msg(buffer)!=0){
  30.             exit(-1);
  31.         }
  32.     }
  33.   }else{
  34.     printf("usage:  cmd_player <cmd_name>\n");
  35.     printf("Cmd name can be: Play <module name>->load and play a song\n");
  36.     printf("               : Stop              ->stop the song\n");
  37.     printf("               : Start             ->restart a stopped song\n");
  38.     printf("               : Select <song num> ->select a song, only with TFMX\n");
  39.     printf("               : Quit             ->stop the player\n");
  40.   }
  41.   exit(0);
  42. }
  43.  
  44. send_msg(buf)
  45. char *buf;
  46. {
  47.     struct    RexxMsg    rx_message;
  48.     struct    MsgPort *rexx_port = NULL;
  49.     struct    MsgPort *reply_port = NULL;
  50.     int    code_ret;
  51.  
  52.     code_ret=0;
  53.     Forbid();
  54.     if( (rexx_port=FindPort (portname)) ==NULL){
  55.         printf("Multi player not found!\n");
  56.         Permit();
  57.         code_ret=-1;
  58.     }else if((reply_port=(struct MsgPort *)CreatePort ("Reply port", 0L))==NULL){
  59.         printf("Cannot create replay port!\n");
  60.         Permit();
  61.         code_ret=-1;
  62.     }else{
  63.         rx_message.rm_Args[0]=buf;
  64.         rx_message.rm_Args[1]=NULL;
  65.         rx_message.rm_Args[2]=NULL;
  66.         rx_message.rm_Action=RXCOMM;
  67.         rx_message.rm_Node.mn_ReplyPort=reply_port;
  68.         rx_message.rm_Node.mn_Node.ln_Type=NT_MESSAGE;
  69.  
  70.         PutMsg(rexx_port,&rx_message);
  71.         Permit();
  72.         WaitPort(reply_port);
  73.         DeletePort(reply_port);
  74.         if(rx_message.rm_Result1!=RC_OK)code_ret=-1;
  75.     }
  76.     return(code_ret);
  77. }
  78.