void connect_command(char* arg) { char *host, *port; SocketFlags = SOCKECHO; State = 0; if ( MUDSocket ) { tintin_puts2(rs::rs(1162)); return; } if ( WaitForSingleObject(hConnThread , 0 ) == WAIT_TIMEOUT ) { tintin_puts2(rs::rs(1162)); return; } port=host=space_out(mystrdup(arg)); if(!*host) { tintin_puts2(rs::rs(1164)); return ; } while(*port && !isspace(*port)) port++; *port++='\0'; port=space_out(port); if(!*port) { tintin_puts2(rs::rs(1165)); return ; } connect_mud(host, port); }
char *get_arg_to_brackets(struct session *ses, char *string, char *result) { char *pti, *pto; pti = space_out(string); pto = result; while (*pti) { if (HAS_BIT(ses->flags, SES_FLAG_BIG5) && *pti & 128 && pti[1] != 0) { *pto++ = *pti++; *pto++ = *pti++; continue; } if (*pti == '[') { break; } *pto++ = *pti++; } *pto = 0; return pti; }
char *get_arg_to_brackets(struct session *ses, char *string, char *result) { char *pti, *pto, *ptii, *ptoo; int nest1 = 0, nest2 = 0, nest3 = 0; pti = space_out(string); pto = result; ptii = ptoo = NULL; while (*pti) { if (HAS_BIT(ses->flags, SES_FLAG_BIG5) && *pti & 128 && pti[1] != 0) { *pto++ = *pti++; *pto++ = *pti++; continue; } if (*pti == '[') { nest2++; if (nest1 == 0 && ptii == NULL) { ptii = pti; ptoo = pto; } } else if (*pti == ']') { if (nest2) { nest2--; } else { nest3 = 1; } if (*(pti+1) == 0 && ptii && nest1 == 0 && nest2 == 0 && nest3 == 0) { *ptoo = 0; return ptii; } } else if (*pti == DEFAULT_OPEN) { nest1++; } else if (*pti == DEFAULT_CLOSE) { nest1--; } *pto++ = *pti++; } *pto = 0; return pti; }
char *get_arg_stop_spaces(char *s, char *arg) { int inside=FALSE; s=space_out(s); while(*s) { if(*s=='\\') { if(*++s) *arg++=*s++; } else if(*s=='"') { s++; inside=!inside; } // else if(*s==';') { else if(*s==cCommandDelimiter||(bColon && *s==';' &&*(s-1)!='\\')) { if(inside) *arg++=*s++; else break; } else if(!inside && *s==' ') break; else *arg++=*s++; } *arg='\0'; return s; }
char *get_arg_in_braces(char *s, char *arg, int flag) { int nest=0; char *ptr; s=space_out(s); ptr=s; if (*s!=DEFAULT_OPEN) { if (flag==0) s=get_arg_stop_spaces(ptr,arg); else s=get_arg_with_spaces(ptr,arg); return s; } s++; while(*s!='\0' && !(*s==DEFAULT_CLOSE && nest==0)) { if(*s==DEFAULT_OPEN) { nest++; } else if(*s==DEFAULT_CLOSE) { nest--; } *arg++=*s++; } if (!*s) tintin_puts2(rs::rs(1146)); else s++; *arg='\0'; return s; }
char *get_arg_with_spaces(char * s, char* arg) { int nest=0; /* int inside=FALSE; */ s=space_out(s); while(*s) { if(*s=='\\') { if(*++s) *arg++=*s++; } // else if(*s==';' && nest==0) { else if((*s==cCommandDelimiter||(bColon && *s==';'&&*(s-1)!='\\')) && nest==0) { break; } else if(*s==DEFAULT_OPEN) { nest++; *arg++=*s++; } else if(*s==DEFAULT_CLOSE) { *arg++=*s++; nest--; } else *arg++=*s++; } *arg='\0'; return s; }
//* en void prefix_command(char *arg) { space_out(arg); strcpy(s_prefix,arg); char sn[BUFFER_SIZE]; sprintf(sn,rs::rs(1255),arg); tintin_puts2(sn); }
char *get_arg_stop_spaces(struct session *ses, char *string, char *result, int flag) { char *pto, *pti; int nest = 0; pti = space_out(string); pto = result; while (*pti) { if (HAS_BIT(ses->flags, SES_FLAG_BIG5) && *pti & 128 && pti[1] != 0) { *pto++ = *pti++; *pto++ = *pti++; continue; } if (*pti == '\\' && pti[1] == COMMAND_SEPARATOR) { *pto++ = *pti++; } else if (*pti == COMMAND_SEPARATOR && nest == 0) { break; } else if (isspace((int) *pti) && nest == 0) { pti++; break; } else if (*pti == DEFAULT_OPEN) { nest++; } else if (*pti == '[' && HAS_BIT(flag, GET_NST)) { nest++; } else if (*pti == DEFAULT_CLOSE) { nest--; } else if (*pti == ']' && HAS_BIT(flag, GET_NST)) { nest--; } *pto++ = *pti++; } *pto = '\0'; return pti; }
char *get_arg_in_braces(struct session *ses, char *string, char *result, int flag) { char *pti, *pto; int nest = 1; pti = space_out(string); pto = result; if (*pti != DEFAULT_OPEN) { if (!HAS_BIT(flag, GET_ALL)) { pti = get_arg_stop_spaces(ses, pti, result, flag); } else { pti = get_arg_with_spaces(ses, pti, result, flag); } return pti; } pti++; while (*pti) { if (HAS_BIT(ses->flags, SES_FLAG_BIG5) && *pti & 128 && pti[1] != 0) { *pto++ = *pti++; *pto++ = *pti++; continue; } if (*pti == DEFAULT_OPEN) { nest++; } else if (*pti == DEFAULT_CLOSE) { nest--; if (nest == 0) { break; } } *pto++ = *pti++; } if (*pti == 0) { tintin_printf2(NULL, "#Unmatched braces error!"); } else { pti++; } *pto = '\0'; return pti; }
struct session *parse_input(struct session *ses, char *input) { char *line; push_call("parse_input(%s,%s)",ses->name,input); if (*input == 0) { write_mud(ses, input, SUB_EOL); pop_call(); return ses; } if (VERBATIM(ses)) { line = (char *) malloc(BUFFER_SIZE); strcpy(line, input); if (check_all_aliases(ses, line)) { ses = script_driver(ses, LIST_ALIAS, line); } else { write_mud(ses, line, SUB_EOL); } free(line); pop_call(); return ses; } if (*input == gtd->verbatim_char) { write_mud(ses, input+1, SUB_EOL); pop_call(); return ses; } line = (char *) malloc(BUFFER_SIZE); while (*input) { input = space_out(input); input = get_arg_all(ses, input, line, FALSE); if (parse_command(ses, line)) { ses = script_driver(ses, -1, line); } else if (check_all_aliases(ses, line)) { ses = script_driver(ses, LIST_ALIAS, line); } else if (HAS_BIT(ses->flags, SES_FLAG_SPEEDWALK) && is_speedwalk(ses, line)) { process_speedwalk(ses, line); } else { write_mud(ses, line, SUB_VAR|SUB_FUN|SUB_ESC|SUB_EOL); } if (*input == COMMAND_SEPARATOR) { input++; } } free(line); pop_call(); return ses; }