char * do_parse_mesg_2(int descr, dbref player, dbref what, dbref perms, const char *inbuf, const char *abuf, char *outbuf, int mesgtyp) { char howvar[BUFFER_LEN]; char cmdvar[BUFFER_LEN]; char argvar[BUFFER_LEN]; char tmparg[BUFFER_LEN]; char tmpcmd[BUFFER_LEN]; char *dptr; int mvarcnt = varc; int mfunccnt = funcc; int tmprec_cnt = mesg_rec_cnt; int tmpinst_cnt = mesg_instr_cnt; #ifdef COMPRESS abuf = uncompress(abuf); #endif /* COMPRESS */ *outbuf = '\0'; if (new_mvar("how", howvar)) return outbuf; strcpy(howvar, abuf); if (new_mvar("cmd", cmdvar)) return outbuf; strcpy(cmdvar, match_cmdname); strcpy(tmpcmd, match_cmdname); if (new_mvar("arg", argvar)) return outbuf; strcpy(argvar, match_args); strcpy(tmparg, match_args); #ifdef COMPRESS inbuf = uncompress(inbuf); #endif /* COMPRESS */ dptr = MesgParse(inbuf, outbuf); if (!dptr) { *outbuf = '\0'; } varc = mvarcnt; free_mfuncs(mfunccnt); mesg_rec_cnt = tmprec_cnt; mesg_instr_cnt = tmpinst_cnt; strcpy(match_cmdname, tmpcmd); strcpy(match_args, tmparg); return outbuf; }
char * do_parse_mesg_2(int descr, dbref player, dbref what, dbref perms, const char *inbuf, const char *abuf, char *outbuf, int outbuflen, int mesgtyp) { char howvar[BUFFER_LEN]; char cmdvar[BUFFER_LEN]; char argvar[BUFFER_LEN]; char tmparg[BUFFER_LEN]; char tmpcmd[BUFFER_LEN]; char *dptr; int mvarcnt = varc; int mfunccnt = funcc; int tmprec_cnt = mesg_rec_cnt; int tmpinst_cnt = mesg_instr_cnt; *outbuf = '\0'; if ((mesgtyp & MPI_NOHOW) == 0) { if (new_mvar("how", howvar)) { snprintf(howvar, sizeof(howvar), "%s Out of MPI variables.", abuf); notify_nolisten(player, howvar, 1); varc = mvarcnt; return outbuf; } strcpyn(howvar, sizeof(howvar), abuf); } if (new_mvar("cmd", cmdvar)) { snprintf(cmdvar, sizeof(cmdvar), "%s Out of MPI variables.", abuf); notify_nolisten(player, cmdvar, 1); varc = mvarcnt; return outbuf; } strcpyn(cmdvar, sizeof(cmdvar), match_cmdname); strcpyn(tmpcmd, sizeof(tmpcmd), match_cmdname); if (new_mvar("arg", argvar)) { snprintf(argvar, sizeof(argvar), "%s Out of MPI variables.", abuf); notify_nolisten(player, argvar, 1); varc = mvarcnt; return outbuf; } strcpyn(argvar, sizeof(argvar), match_args); strcpyn(tmparg, sizeof(tmparg), match_args); dptr = MesgParse(inbuf, outbuf, outbuflen); if (!dptr) { *outbuf = '\0'; } varc = mvarcnt; free_mfuncs(mfunccnt); mesg_rec_cnt = tmprec_cnt; mesg_instr_cnt = tmpinst_cnt; strcpyn(match_cmdname, sizeof(match_cmdname), tmpcmd); strcpyn(match_args, sizeof(match_args), tmparg); return outbuf; }