예제 #1
0
파일: prompt.c 프로젝트: Jenco420/q2pro
/*
====================
Prompt_Action

User just pressed enter
====================
*/
char *Prompt_Action(commandPrompt_t *prompt)
{
    char *s = prompt->inputLine.text;
    int i, j;

    Prompt_ClearState(prompt);
    if (s[0] == 0 || ((s[0] == '/' || s[0] == '\\') && s[1] == 0)) {
        IF_Clear(&prompt->inputLine);
        return NULL; // empty line
    }

    // save current line in history
    i = prompt->inputLineNum & HISTORY_MASK;
    j = (prompt->inputLineNum - 1) & HISTORY_MASK;
    if (!prompt->history[j] || strcmp(prompt->history[j], s)) {
        if (prompt->history[i]) {
            Z_Free(prompt->history[i]);
        }
        prompt->history[i] = Z_CopyString(s);
        prompt->inputLineNum++;
    } else {
        i = j;
    }

    // stop history search
    prompt->historyLineNum = prompt->inputLineNum;

    IF_Clear(&prompt->inputLine);

    return prompt->history[i];
}
예제 #2
0
파일: prompt.c 프로젝트: Bad-ptr/q2pro
/*
====================
Prompt_HistoryDown
====================
*/
void Prompt_HistoryDown( commandPrompt_t *prompt ) {
    int i;

    Prompt_ClearState( prompt );

    if( prompt->historyLineNum == prompt->inputLineNum ) {
        return;
    }
    
    prompt->historyLineNum++;
    
    i = prompt->historyLineNum & HISTORY_MASK;
    IF_Replace( &prompt->inputLine, prompt->history[i] );
}
예제 #3
0
파일: prompt.c 프로젝트: Bad-ptr/q2pro
/*
====================
Prompt_Clear
====================
*/
void Prompt_Clear( commandPrompt_t *prompt ) {
    int i;

    Prompt_ClearState( prompt );
    
    for( i = 0; i < HISTORY_SIZE; i++ ) {
        if( prompt->history[i] ) {
            Z_Free( prompt->history[i] );
            prompt->history[i] = NULL;
        }
    }
    
    prompt->historyLineNum = 0;
    prompt->inputLineNum = 0;
    
    IF_Clear( &prompt->inputLine );
}
예제 #4
0
파일: prompt.c 프로젝트: Jenco420/q2pro
/*
====================
Prompt_HistoryUp
====================
*/
void Prompt_HistoryUp(commandPrompt_t *prompt)
{
    int i;

    Prompt_ClearState(prompt);

    if (prompt->historyLineNum == prompt->inputLineNum) {
        // save current line in history
        i = prompt->inputLineNum & HISTORY_MASK;
        if (prompt->history[i]) {
            Z_Free(prompt->history[i]);
        }
        prompt->history[i] = Z_CopyString(prompt->inputLine.text);
    }

    if (prompt->inputLineNum - prompt->historyLineNum < HISTORY_SIZE &&
        prompt->historyLineNum > 0) {
        prompt->historyLineNum--;
    }

    i = prompt->historyLineNum & HISTORY_MASK;
    IF_Replace(&prompt->inputLine, prompt->history[i]);
}