📄 variables.c
字号:
get_arg_in_braces(arg, list, 1); substitute_vars(list,temp); substitute_myvars(temp,list,ses); arg = list; i=0; do { if(*arg) i++; arg = get_arg_in_braces(arg, temp, 0); } while(*arg); sprintf(temp,"{%s} {%d}",left,i); var_command(temp,ses); }}/******************************************************************//* the #getitemnr command * By Sverre Normann */ /******************************************************************//* Syntax: #getitemnr {destination variable} {item number} {list} *//******************************************************************//* Note: This will return a specified item from a list. *//* An item is either a word, or grouped words in brackets. *//* Ex: #geti {dothis} {2} {smile {say Hi!} flip bounce} *//* -> dothis = say Hi! *//******************************************************************/void getitemnr_command(arg, ses) char *arg; struct session *ses;{ char destvar[BUFFER_SIZE], itemnrtxt[BUFFER_SIZE], list[BUFFER_SIZE], temp1[BUFFER_SIZE], temp2[BUFFER_SIZE]; int i, itemnr; arg = get_arg_in_braces(arg, destvar, 0); arg = get_arg_in_braces(arg, itemnrtxt, 0); if (!*destvar || !*itemnrtxt) { tintin_puts2("#Error - Syntax: #getitemnr {destination variable} {item number} {list}", ses); } else { substitute_vars(destvar,temp1); substitute_myvars(temp1,destvar,ses); substitute_vars(itemnrtxt,temp1); substitute_myvars(temp1,itemnrtxt,ses); if (sscanf(itemnrtxt,"%d",&itemnr)!=1) { tintin_puts2("#Error in #getitemnr - item number has to be a digit!",ses); } else { get_arg_in_braces(arg, list, 1); substitute_vars(list,temp1); substitute_myvars(temp1,list,ses); arg = list; i=0; if (itemnr>0) { do { arg = get_arg_in_braces(arg, temp1, 0); i++; } while (i!=itemnr); if (*temp1) { sprintf(temp2,"{%s} {%s}",destvar,temp1); var_command(temp2,ses); } else { tintin_puts2("#Error in #getitemnr - item doesn't exist!",ses); } } } }}/*************************//* the #tolower command *//*************************/void tolower_command(arg, ses) char *arg; struct session *ses;{ char left[BUFFER_SIZE], right[BUFFER_SIZE], arg2[BUFFER_SIZE], *p; struct listnode *tempvars, *ln; tempvars = (ses) ? ses->myvars : common_myvars; arg = get_arg_in_braces(arg, left,0); arg = get_arg_in_braces(arg, right,1); if (!*left || !*right) { tintin_puts2("#Syntax: #tolower <var> <text>", ses); } else { if ((ln=searchnode_list(tempvars, left)) != NULL) deletenode_list(tempvars, ln); for (p=right; *p; p++) *p = tolower(*p); insertnode_list(tempvars, left, right, "0", ALPHA); varnum++; if (mesvar[5]) { sprintf(arg2, "#Ok. $%s is now set to {%s}.",left, right); tintin_puts2(arg2, ses); } }}/*************************//* the #toupper command *//*************************/void toupper_command(arg, ses) char *arg; struct session *ses;{ char left[BUFFER_SIZE], right[BUFFER_SIZE], arg2[BUFFER_SIZE], *p; struct listnode *tempvars, *ln; tempvars = (ses) ? ses->myvars : common_myvars; arg = get_arg_in_braces(arg, left,0); arg = get_arg_in_braces(arg, right,1); if (!*left || !*right) { tintin_puts2("#Syntax: #toupper <var> <text>", ses); } else { if ((ln=searchnode_list(tempvars, left)) != NULL) deletenode_list(tempvars, ln); for (p=right; *p; p++) *p = toupper(*p); insertnode_list(tempvars, left, right, "0", ALPHA); varnum++; if (mesvar[5]) { sprintf(arg2, "#Ok. $%s is now set to {%s}.",left, right); tintin_puts2(arg2, ses); } }}/***************************************************//* the #revstring command * By Sverre Normann *//***************************************************//* Syntax: #revstr {destination variable} {string} *//***************************************************//* Will return the reverse of a string. *//***************************************************/void revstring_command(arg, ses) char *arg; struct session *ses;{ char destvar[BUFFER_SIZE], origstring[BUFFER_SIZE], revstring[BUFFER_SIZE], temp[BUFFER_SIZE], *p, *q; arg = get_arg_in_braces(arg, destvar, 0); arg = get_arg_in_braces(arg, origstring, 1); if (!*destvar) { tintin_puts2("#Error - Syntax: #revstr {destination variable} {string}", ses); } else { substitute_vars(destvar,temp); substitute_myvars(temp,destvar,ses); substitute_vars(origstring,temp); substitute_myvars(temp,origstring,ses); q=revstring; if (strlen(origstring)) for (p=origstring+strlen(origstring)-1; p>=origstring; p--) { *q=*p; q++; } *q='\0'; sprintf(temp,"{%s} {%s}",destvar,revstring); var_command(temp,ses); }}/************************************************//* the #postpad command * By Sverre Normann *//************************************************//* Syntax: #postpad {dest var} {length} {text} *//*****************************************************//* Truncates text if it's too long for the specified *//* length. Pads with spaces at the end if the text *//* isn't long enough. *//*****************************************************/void postpad_command(arg, ses) char *arg; struct session *ses;{ char destvar[BUFFER_SIZE], textstr[BUFFER_SIZE], newtextstr[BUFFER_SIZE],temp[BUFFER_SIZE], *p, *q, lengthstr[BUFFER_SIZE]; int length; arg = get_arg_in_braces(arg, destvar, 0); arg = get_arg_in_braces(arg, lengthstr, 0); arg = get_arg_in_braces(arg, textstr, 1); if (!*lengthstr) { tintin_puts2("#Error - Syntax: #postpad {dest var} {length} {text}", ses); } else { substitute_vars(destvar,temp); substitute_myvars(temp,destvar,ses); substitute_vars(lengthstr,temp); substitute_myvars(temp,lengthstr,ses); substitute_vars(textstr,temp); substitute_myvars(temp,textstr,ses); if (!sscanf(lengthstr,"%d",&length) || (length < 1)) { tintin_puts2("#Error in #postpad - length has to be a positive digit > 0 !",ses); } else { strncpy(newtextstr,textstr,length); newtextstr[length]='\0'; if (strlen(textstr) < length) { p=newtextstr+strlen(newtextstr); for (length-=strlen(newtextstr);length>0;length--) *p++=' '; } sprintf(temp,"{%s} {%s}",destvar,newtextstr); var_command(temp,ses); } }} /***********************************************//* the #prepad command * By Sverre Normann *//***********************************************//* Syntax: #prepad {dest var} {length} {text} *//*****************************************************//* Truncates text if it's too long for the specified *//* length. Pads with spaces at the start if the text *//* isn't long enough. *//*****************************************************/void prepad_command(arg, ses) char *arg; struct session *ses;{ char destvar[BUFFER_SIZE], textstr[BUFFER_SIZE], newtextstr[BUFFER_SIZE],temp[BUFFER_SIZE], *p, *q, lengthstr[BUFFER_SIZE]; int length,i; arg = get_arg_in_braces(arg, destvar, 0); arg = get_arg_in_braces(arg, lengthstr, 0); arg = get_arg_in_braces(arg, textstr, 1); if (!*lengthstr) { tintin_puts2("#Error - Syntax: #prepad {dest var} {length} {text}", ses); } else { substitute_vars(destvar,temp); substitute_myvars(temp,destvar,ses); substitute_vars(lengthstr,temp); substitute_myvars(temp,lengthstr,ses); substitute_vars(textstr,temp); substitute_myvars(temp,textstr,ses); if (!sscanf(lengthstr,"%d",&length) || (length < 1)) { tintin_puts2("#Error in #prepad - length has to be a postitive digit > 0 !",ses); } else { p=newtextstr; if (strlen(textstr) < length) { for (i=length-strlen(textstr);i>0;i--) *p++=' '; } strncpy(p,textstr,length); p[length]='\0'; sprintf(temp,"{%s} {%s}",destvar,newtextstr); var_command(temp,ses); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -