+ if(keydown[K_CTRL]) // append to the cvar its value
+ {
+ int cvar_len, cvar_str_len, chars_to_move;
+ char k;
+ char cvar[MAX_INPUTLINE];
+ const char *cvar_str;
+
+ // go to the start of the variable
+ while(--key_linepos)
+ {
+ k = key_line[key_linepos];
+ if(k == '\"' || k == ';' || k == ' ' || k == '\'')
+ break;
+ }
+ key_linepos++;
+
+ // save the variable name in cvar
+ for(cvar_len=0; (k = key_line[key_linepos + cvar_len]) != 0; cvar_len++)
+ {
+ if(k == '\"' || k == ';' || k == ' ' || k == '\'')
+ break;
+ cvar[cvar_len] = k;
+ }
+ if (cvar_len==0)
+ return;
+ cvar[cvar_len] = 0;
+
+ // go to the end of the cvar
+ key_linepos += cvar_len;
+
+ // save the content of the variable in cvar_str
+ cvar_str = Cvar_VariableString(cvar);
+ cvar_str_len = strlen(cvar_str);
+ if (cvar_str_len==0)
+ return;
+
+ // insert space and cvar_str in key_line
+ chars_to_move = strlen(&key_line[key_linepos]);
+ if (key_linepos + 1 + cvar_str_len + chars_to_move < MAX_INPUTLINE)
+ {
+ if (chars_to_move)
+ memmove(&key_line[key_linepos + 1 + cvar_str_len], &key_line[key_linepos], chars_to_move);
+ key_line[key_linepos++] = ' ';
+ memcpy(&key_line[key_linepos], cvar_str, cvar_str_len);
+ key_linepos += cvar_str_len;
+ key_line[key_linepos + chars_to_move] = 0;
+ }
+ else
+ Con_Printf("Couldn't append cvar value, edit line too long.\n");
+ return;
+ }