Changeset 8372


Ignore:
Timestamp:
08/06/21 06:59:42 (4 months ago)
Author:
nmarkham
Message:

Allow activated_scripts to listen for any message type.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/grab_bag/activated_scripts/activated_scripts.c

    r7775 r8372  
    9494char inRing[MAX_RING_STR];                      /* name of input ring */ 
    9595char outRing[MAX_RING_STR];                     /* name of output ring */ 
     96char inMessageType[MAX_TYPE_STR] = "TYPE_ACTIVATE_MODULE"; 
    9697#define MAX_EXEC 20 
    9798char execCmd[MAX_EXEC][MAXTXT]; 
     
    187188                } 
    188189                init[1] = 1; 
     190          } else if (k_its("InMessageType")) { 
     191                unsigned char id; 
     192                strcpy( inMessageType, k_str() ); 
     193                if (GetType(inMessageType, &id) == -1) { 
     194                        logit( "e", "%s:  Invalid message type <%s>; exiting!\n", 
     195                                         Argv0, inMessageType); 
     196                        return 1; 
     197                } 
    189198          } else if (k_its("OutRing")) { 
    190199                strcpy( outRing, k_str() ); 
     
    209218                for ( i=0; str[i]; i++ ) 
    210219                        if ( str[i]=='$' ) { 
    211                                 if ( str[i+1] < '1' || str[i+1] > '9' ) { 
     220                                if ( str[i+1] < '0' || str[i+1] > '9' ) { 
    212221                                        logit( "e", "%s: <Exec> has bad variable ($%c); ignoring\n", 
    213222                                                          Argv0, str[i+1] ? str[i+1] : ' ' ); 
     
    401410                for ( ; *orig; orig++ ) 
    402411                        if ( *orig == '$' ) { 
    403                                 char *arg = argv[*(orig+1)-'1']; 
     412                                char *arg = orig[1] == '0' ? inputstring : argv[*(orig+1)-'1']; 
    404413                                for ( ; *arg; ) 
    405414                                        cmd[j++] = *(arg++); 
     
    496505      } 
    497506       
    498       res = sscanf( MSrawmsg, "%d", &modid ); 
     507      if (!strcmp("TYPE_ACTIVATE_MODULE", inMessageType)) 
     508      { 
     509        res = sscanf( MSrawmsg, "%d", &modid ); 
    499510       
    500       msgName = "ACTIVATE_MODULE"; 
    501       okMsg = (res == 1); 
    502           if ( !okMsg ) { 
     511        msgName = "ACTIVATE_MODULE"; 
     512        okMsg = (res == 1); 
     513            if ( !okMsg ) { 
    503514                        sprintf( errText, "malformed %s msg i%d m%d t%d in %s",msgName, 
    504515                                        (int) reclogo.instid, 
     
    506517                        actscr_status( TypeError, ERR_BADMSG, errText ); 
    507518                        continue; 
     519        } 
     520        if ( modid != MyModId ) 
     521          continue; 
    508522      } 
    509       if ( modid != MyModId ) 
    510         continue; 
    511523 
    512524      RequestMutex(); 
     
    623635                int geti = GetInst( "INST_WILDCARD", &(GetLogo[0].instid) ); 
    624636                int getm = GetModId( "MOD_WILDCARD", &(GetLogo[0].mod) ); 
    625                 int gett = GetType( "TYPE_ACTIVATE_MODULE", &(GetLogo[0].type) ); 
     637                int gett = GetType( inMessageType, &(GetLogo[0].type) ); 
    626638                int getMsg = 0; 
    627639                if ( ( MSrawmsg = (char *) malloc(MaxMsgSize+1) ) ==  NULL ) 
     
    637649                                logit( "e", "%s: MOD_WILDCARD unknown; exiting!\n", Argv0 ); 
    638650                        if ( gett ) 
    639                                 logit( "e", "%s: TYPE_ACTIVATE_MODULE unknown; exiting!\n", Argv0 ); 
     651                                logit( "e", "%s: %s unknown; exiting!\n", Argv0, inMessageType ); 
    640652                        exit(1); 
    641653                } 
Note: See TracChangeset for help on using the changeset viewer.