Exemplo n.º 1
0
BBOOL rtplatform_gfirst(PSMBDSTAT dirobj, char RTSMB_FAR * name_in)
{
char slashstar [] = {'\\', '*', '\0'};
char dotstar [] = {'.', '*', '\0'};
char name [SMBF_FILENAMESIZE + 1];
rtsmb_size len;
int rv;
void * rtp_dirobj;

    /* translate "*" to "*.*" becaues some file systems don't like "*" */
    len = (rtsmb_size) tc_strlen (name_in);
    tc_strcpy (name, name_in);
    if (len > 1 && len < SMBF_FILENAMESIZE - 2 && tc_strcmp (&name[len - 2], slashstar) == 0)
    {
       tc_strcat  (name, dotstar);
    }

    rv = rtp_file_gfirst(&rtp_dirobj, name);
    if (rv < 0)
    {
        dirobj->rtp_dirobj = (void*)0;
        return FALSE;
    }

    rtp_file_get_name(rtp_dirobj, dirobj->filename, SMBF_FILENAMESIZE);
    dirobj->filename[SMBF_FILENAMESIZE] = '\0';

    /*translate rtplatform dstat to smb dstat */
    rtplatform_translate_dstat (dirobj, rtp_dirobj);
    dirobj->unicode = 0;

    return TRUE;
}
Exemplo n.º 2
0
/*---------------------------------------------------------------------------*/
HTTPAuthenticationRealm* _HTTP_GetAuthenticationRealm (
		HTTPAuthContext* ctx,
		const HTTP_CHAR* hostName,
		HTTP_UINT16 port,
		HTTP_CHAR* realmName
	)
{
	HTTPAuthenticationRealm* realm = 0;
	HTTPAuthenticationHost* host = _HTTP_GetAuthenticationHost(ctx, hostName, port);

	if (host)
	{
		realm = (HTTPAuthenticationRealm*) host->realmList.next;
		while (realm != (HTTPAuthenticationRealm*) &host->realmList)
		{
			if (!tc_strcmp(realm->realmName, realmName))
			{
				break;
			}
			realm = (HTTPAuthenticationRealm*) realm->node.next;
		}

		if (realm == (HTTPAuthenticationRealm*) &host->realmList)
		{
			realm = 0;
		}
	}

	return (realm);
}
Exemplo n.º 3
0
RTSMB_STATIC int rtsmb_srv_browse_process_domain_announcement (PFVOID origin, PFVOID buf, rtsmb_size size, PRTSMB_HEADER pheader)
{
    RTSMB_NBDS_HOST_ANNOUNCEMENT host;
    char group_name [RTSMB_NB_NAME_SIZE + 1];
    rtsmb_char master_name_rt [RTSMB_NB_NAME_SIZE + 1];

    host.comment = master_name_rt;
    host.comment_size = RTSMB_NB_NAME_SIZE;
    if (rtsmb_srv_browse_read_host_announcement (origin, buf, size, pheader, &host) < 0)
    {
        return -1;
    }

    rtsmb_util_rtsmb_to_ascii (host.server_name, group_name, CFG_RTSMB_USER_CODEPAGE);

    if (rtsmb_srv_browse_get_role () == RTSMB_SRV_BROWSE_ROLE_MASTER_BROWSER)
    {
        RTSMB_BROWSE_SERVER_INFO info;

        /* if this group is our group, someone is encroaching on our responsibilities.
           force election to see who is really master */
        if (tc_strcmp (group_name, rtsmb_srv_nbns_get_our_group ()) == 0)
        {
            rtsmb_srv_browse_force_election ();
            return 0;
        }

        /* search through our list and update entry   */

        rtsmb_util_rtsmb_to_ascii (host.server_name, info.name, CFG_RTSMB_USER_CODEPAGE);
        info.type = host.type;
        info.version_minor = host.version_minor;
        info.version_major = host.version_major;
        info.browse_version_minor = host.browse_version_major;
        info.browse_version_major = host.browse_version_major;
        info.signature = host.signature;
        info.update_count = host.update_count;
        info.periodicity = host.periodicity;
        rtsmb_util_rtsmb_to_ascii (host.comment, info.comment, CFG_RTSMB_USER_CODEPAGE);

        info.time_received = rtp_get_system_msec();

        rtsmb_srv_browse_update_entry (prtsmb_srv_ctx->domain_table,
            (rtsmb_size )prtsmb_srv_ctx->domain_table_size, &info);
    }

    return 0;
}
Exemplo n.º 4
0
BBOOL Auth_DoPasswordsMatch (PSMB_SESSIONCTX pCtx, PFRTCHAR name, PFRTCHAR domainname,
                             PFCHAR  plaintext, PFBYTE ansi_password, PFBYTE uni_password) /*_YI_ */
{
    BBOOL ret_val;
#if (INCLUDE_RTSMB_ENCRYPTION)
    byte passbuf [24];
#endif

    if(plaintext) /* if there is no need to check passwords, don't */
    {
        ret_val = FALSE;
#if (INCLUDE_RTSMB_ENCRYPTION)
        if (pCtx->dialect >= NT_LM)
        {
        int i;
            rtp_printf("Auth_DoPasswordsMatch: ansi_password = %s\n", plaintext);
            for (i=0; i<24; i++)
                rtp_printf("%x ", ansi_password[i]);
        }
        
        if (pCtx->dialect >= NT_LM &&
            tc_memcmp (cli_util_encrypt_password_nt (plaintext, pCtx->encryptionKey, passbuf), ansi_password, 24)==0)
        {
            ret_val = TRUE;
        }
        else if (tc_memcmp (cli_util_encrypt_password_pre_nt (plaintext, pCtx->encryptionKey, passbuf), ansi_password, 24)==0)
        {
            ret_val = TRUE;
        }
        else if (name && domainname && uni_password && 
                 (tc_memcmp(cli_util_encrypt_password_lmv2 (plaintext, pCtx->encryptionKey, (PFCHAR)passbuf,uni_password, name, domainname), ansi_password, 24)==0))
        {
            ret_val = TRUE;
        }
#else
        if (tc_strcmp (plaintext, ansi_password) == 0)
        {
            ret_val = TRUE;
        }
#endif
    }
    else
        ret_val = TRUE;
    return (ret_val);
}
Exemplo n.º 5
0
RTSMB_STATIC BBOOL rtsmb_srv_browse_have_won_election (PRTSMB_NBDS_REQUEST_ELECTION pinfo)
{
    char server_name_ascii [17];

    /* This function follows draft-leach-cifs-browser-spec-00.txt rules for winning
       an election. */

    if (rtsmb_srv_browse_election_win_count < 0) /* if we lost in this election already */
    {
        return FALSE;
    }

    if (pinfo->version < RTSMB_NBDS_ELECTION_VERSION)
    {
        return TRUE;
    }
    if (pinfo->criteria < rtsmb_srv_browse_get_election_criteria ())
    {
        return TRUE;
    }
#if (0)
    if (pinfo->up_time < 0) /* FIXME: need some way to tell our uptime? */ 
    {                
        return TRUE; 
    }                
#endif

    rtsmb_util_rtsmb_to_ascii (pinfo->server_name, server_name_ascii, CFG_RTSMB_USER_CODEPAGE);

    if (tc_strcmp (server_name_ascii, rtsmb_srv_nbns_get_our_name ()) > 0)
    {
        return TRUE;
    }

    return FALSE;
}
Exemplo n.º 6
0
RTSMB_STATIC int rtsmb_srv_browse_process_host_announcement (PFVOID origin, PFVOID buf, rtsmb_size size, PRTSMB_HEADER pheader)
{
    RTSMB_NBDS_HOST_ANNOUNCEMENT host;
    RTSMB_BROWSE_SERVER_INFO info;
    rtsmb_char comment_rt [RTSMB_MAX_COMMENT_SIZE + 1];

    host.comment = comment_rt;
    host.comment_size = RTSMB_MAX_COMMENT_SIZE;
    if (rtsmb_srv_browse_read_host_announcement (origin, buf, size, pheader, &host) < 0)
    {
        return -1;
    }

    if (host.opcode == RTSMB_NBDS_COM_LOCAL_MASTER_ANNOUNCEMENT)
    {
        /* cache this name of our local master browser   */
        rtsmb_util_rtsmb_to_ascii (host.server_name, prtsmb_srv_ctx->local_master, CFG_RTSMB_USER_CODEPAGE);
    }
    else if (host.opcode == RTSMB_NBDS_COM_HOST_ANNOUNCEMENT)
    {
        if (host.type == 0)
        {
            char server_name [RTSMB_NB_NAME_SIZE + 1];

            rtsmb_util_rtsmb_to_ascii (host.server_name, server_name, CFG_RTSMB_USER_CODEPAGE);

            /* if the local master is shutting down, we need to force an election   */
            if (tc_strcmp (server_name, prtsmb_srv_ctx->local_master) == 0)
            {
                rtsmb_srv_browse_force_election ();
            }
        }
    }

    if (rtsmb_srv_browse_get_role () == RTSMB_SRV_BROWSE_ROLE_MASTER_BROWSER)
    {
        /* if the type indicates a master browser, someone is encroaching on our responsibilities.
           Force election to see who is really master */
        if (ON (host.type, SV_TYPE_MASTER_BROWSER))
        {
            rtsmb_srv_browse_force_election ();
            return 0;
        }

        /* search through our list and update entry   */

        rtsmb_util_rtsmb_to_ascii (host.server_name, info.name, CFG_RTSMB_USER_CODEPAGE);
        info.type = host.type;
        info.version_minor = host.version_minor;
        info.version_major = host.version_major;
        info.browse_version_minor = host.browse_version_major;
        info.browse_version_major = host.browse_version_major;
        info.signature = host.signature;
        info.update_count = host.update_count;
        info.periodicity = host.periodicity;
        rtsmb_util_rtsmb_to_ascii (host.comment, info.comment, CFG_RTSMB_USER_CODEPAGE);

        info.time_received = rtp_get_system_msec();

        rtsmb_srv_browse_update_entry (prtsmb_srv_ctx->server_table,
            (rtsmb_size )prtsmb_srv_ctx->server_table_size, &info);

        /* check if we have enough backup browsers   */
        rtsmb_srv_browse_ensure_backup_ratio ();
    }

    return 0;
}
Exemplo n.º 7
0
/* *********************************************************************   */
int vt100c_update(char c)
{
int n;
PFCHAR pfc;
int retval=0;
int width;
int x;
int tabcol;
int cur_x,cur_y;

    vt100c_init();

    vt100c_updatemode(c);
    /* process character based on existing mode   */
    if(vt100c_ctx->mode==VT100C_NORMAL)
    {
        /* tbd: don't hardcode pcvid                          */
/*      pcvid_set_cur_context(&(vt100c_ctx->scrolling_term)); */

        if(c!='\t')
        {
            pcvid_putc(c);
        }
        else
        {
            width=pcvid_get_width();
            x=pcvid_wherex();
            for(n=x;n<width;n++)
            {
                if(vt100c_ctx->tab_table[n])
                {
                    tabcol=n+1;
                    for(n=x;n<tabcol;n++)
                        pcvid_putc(' ');
                    n=0;
                    break;
                }
            }
            /* If no tab found in table, let _putc() do the tab   */
            if(n)
                pcvid_putc('\t');
        }
    }
    if(vt100c_ctx->mode==VT100C_NORMAL)
    {
        return(0);
    }
    if(vt100c_ctx->mode==VT100C_LEFTPARENCMD)
    {
#if (REALLY_SLOW)
        if(c=='A')
            retval=VT100C_UNSUPPORTEDPARAM; /* United Kingdom (UK) 
                                                        charset on */
        else if(c=='B');    /* United States (USASCII) charset on */
        else if(c=='0')
            retval=VT100C_UNSUPPORTEDPARAM; /* Special graphic/line drawing 
                                                        charset on */
        else if(c=='1')
            retval=VT100C_UNSUPPORTEDPARAM; /* Alternative character ROM on */
        else if(c=='2')
            retval=VT100C_UNSUPPORTEDPARAM; /* Alternative graphic ROM on */
        else
            retval=VT100C_BADPARAM;
#else
        retval=VT100C_UNSUPPORTEDPARAM;
#endif
    }
    if(vt100c_ctx->mode==VT100C_RIGHTPARENCMD)
    {
#if (REALLY_SLOW)
        if(c=='A')
            retval=VT100C_UNSUPPORTEDPARAM; /* United Kingdom (UK) 
                                                        charset off */
        else if(c=='B');    /* United States (USASCII) charset off */
        else if(c=='0')
            retval=VT100C_UNSUPPORTEDPARAM; /* Special graphic/line drawing 
                                                        charset off */
        else if(c=='1')
            retval=VT100C_UNSUPPORTEDPARAM; /* Alternative character ROM off */
        else if(c=='2')
            retval=VT100C_UNSUPPORTEDPARAM; /* Alternative graphic ROM off */
        else
            retval=VT100C_BADPARAM;
#else
        retval=VT100C_UNSUPPORTEDPARAM;
#endif
    }
    if(vt100c_ctx->mode==VT100C_PLAINCMD)
    {
        if(c=='D')
        {
            /* Index                                              */
/*          pcvid_set_cur_context(&(vt100c_ctx->scrolling_term)); */
            if(pcvid_wherex()==1 && pcvid_wherey()==pcvid_get_height())
            {
                pcvid_scroll_up();
            }
            else
            {
                DEBUG_ERROR("Bad Index",NOVAR,0,0);
            }
        }
        if(c=='M')
        {
            /* Reverse Index   */
            pcvid_set_cur_context(&(vt100c_ctx->scrolling_term));
            if(pcvid_wherex()==1 && pcvid_wherey()==1)
            {
                pcvid_scroll_down();
            }
            else
            {
                DEBUG_ERROR("Bad Reverse Index",NOVAR,0,0);
            }
        }
        if(c=='7')
        {
            /* Save cursor and attributes   */
            vt100_savecurpos();
            vt100_savecurattrib();
        }
        if(c=='8')
        {
            /* Restore cursor and attributes   */
            vt100_restorecurpos();
            vt100_restorecurattrib();
        }
        if(c=='H')
        {
            /* set tab at current column   */
            vt100c_ctx->tab_table[pcvid_wherex()-1]=1;
        }
        if(c=='c')
        {
            /* Power-up reset   */
            retval=VT100C_UNSUPPORTEDESC;
        }
    }
    if(vt100c_ctx->mode==VT100C_POUNDCMD)
    {
        if(c=='3')
        {
            /* Change this line to double-height top half   */
            return(VT100C_UNSUPPORTEDESC);
        }
        if(c=='4')
        {
            /* Change this line to double-height bottom half   */
            return(VT100C_UNSUPPORTEDESC);
        }
        if(c=='5')
        {
            /* Change this line to single-width single-height   */
            return(VT100C_UNSUPPORTEDESC);
        }
        if(c=='6')
        {
            /* Change this line to double-width single height   */
            return(VT100C_UNSUPPORTEDESC);
        }
        if(c=='8')
        {
            /* fill screen with E   */
            retval=VT100C_UNSUPPORTEDESC;
        }
    }
    if(vt100c_ctx->mode==VT100C_BRAKCMD||vt100c_ctx->mode==VT100C_KCMD)
    {
        if(vt100c_ctx->icmdbuf<VT100C_CMDBUFSIZ-1)
            vt100c_ctx->cmdbuf[vt100c_ctx->icmdbuf++]=c;
    }
    if(vt100c_ctx->mode==VT100C_QUESBRAKCMD)
    {
        vt100c_ctx->cmdbuf[0]=c;
    }
    /* is this the right code ??   */
    if(vt100c_ctx->mode==VT100C_KCMDEND)
    {
        vt100c_ctx->cmdbuf[vt100c_ctx->icmdbuf]='\0';       

        retval=vt100c_set_scroll_win();

        vt100c_ctx->icmdbuf=0;
    }
    if(vt100c_ctx->mode==VT100C_BRAKCMDEND)
    {
        vt100c_ctx->cmdbuf[vt100c_ctx->icmdbuf]='\0';

        if(c=='y')
        {
            if((pfc=tc_strchr(vt100c_ctx->cmdbuf,';'))!=0)
            {
                n=tc_atoi(pfc+1);
                if(n>0&&n<16)
                {
                    retval=VT100C_UNSUPPORTEDESC;
                }
                else
                {
                    retval=VT100C_INVALIDESC;
                }
            }
            else
            {
                retval=VT100C_INVALIDESC;
            }
        }
        if(c=='m'||c=='q')
        {
            if(vt100c_ctx->icmdbuf)
            {
                pfc=vt100c_ctx->cmdbuf;
                while((n=vt100c_get_next_param(&pfc))!=-1)
                {
                    if(c=='m')
                    {
                        if(n==0)
                        {
                            /* all attributes off   */
                            vt100c_allattribsoff();
                        }
                        else if(n==1)
                        {
                            /* bold on   */
                            pcvid_set_forecolor(15);
                        }
                        else if(n==4)
                        {
                            /* underscore on   */
                            retval=VT100C_UNSUPPORTEDPARAM;
                        }
                        else if(n==5)
                        {
                            /* blink on   */
                            pcvid_set_blink(TRUE);
                        }
                        else if(n==7)
                        {
                            /* inverse on   */
                            pcvid_set_inverse(TRUE);
                        }
                        else
                        {
                            /* bad parameter   */
                            retval=VT100C_BADPARAM;
                        }
                    }
                    if(c=='q')
                    {
                        if(n==0)
                            retval=VT100C_UNSUPPORTEDPARAM; /* all LEDs off */
                        else if(n==1)
                            retval=VT100C_UNSUPPORTEDPARAM; /* LED 1 on */
                        else if(n==2)
                            retval=VT100C_UNSUPPORTEDPARAM; /* LED 2 on */
                        else if(n==3)
                            retval=VT100C_UNSUPPORTEDPARAM; /* LED 3 on */
                        else if(n==4)
                            retval=VT100C_UNSUPPORTEDPARAM; /* LED 4 on */
                        else
                            retval=VT100C_BADPARAM;
                    }
                }
            }
            else
            {
                if(c=='m')
                {
                    vt100c_allattribsoff();
                }
                if(c=='q')
                {
                    retval=VT100C_UNSUPPORTEDPARAM; /* all LEDs off */
                }
            }
        }
        if(c=='H'||c=='f')
        {
            /* gotoxy   */

            pcvid_set_cur_context(&(vt100c_ctx->scrolling_term));

            if((pfc=tc_strchr(vt100c_ctx->cmdbuf,';'))!=0)
            {
                *pfc='\0';

                cur_x=tc_atoi(pfc+1);
                cur_y=tc_atoi(vt100c_ctx->cmdbuf);

                if(cur_x<1)
                    cur_x=1;
                if(cur_x>pcvid_get_width())
                    cur_x=pcvid_get_width();

                if(cur_y<1)
                    cur_y=1;
                if(cur_y>pcvid_get_height())
                    cur_y=pcvid_get_height();

                if(vt100c_ctx->scroll_in_region)
                    pcvid_gotoxy(cur_x,cur_y);
                else
                    pcvid_gotoxy(1+cur_x-vt100c_ctx->scrolling_term.x1,
                        1+cur_y-vt100c_ctx->scrolling_term.y1);
            }
            else
            {
                pcvid_gotoxy(1,1);
            }
        }
        if(c=='g')
        {
            if(!tc_strcmp(vt100c_ctx->cmdbuf,"")||!tc_strcmp(vt100c_ctx->cmdbuf,"0"))
            {
                /* clear tab at current column   */
                vt100c_ctx->tab_table[pcvid_wherex()-1]=0;
            }
            else if(!tc_strcmp(vt100c_ctx->cmdbuf,"3"))
            {
                /* clear all tabs   */
                for(n=0;n<PCVID_SCREEN_COLS;n++)
                    vt100c_ctx->tab_table[n]=0;
            }
            else
            {
                retval=VT100C_INVALIDESC;
            }
        }
        if(c=='n')
        {
            if(!tc_strcmp(vt100c_ctx->cmdbuf,"6"))
            {
                /* Cursor position report   */
                vt100c_curposreport();
            }
            else if(!tc_strcmp(vt100c_ctx->cmdbuf,"5"))
            {
                /* Status report   */
                vt100c_sends("\x27 [ c");
            }
            else
            {
                retval=VT100C_INVALIDESC;
            }
        }
        if(c=='c')
        {
            if(!tc_strcmp(vt100c_ctx->cmdbuf,"")||!tc_strcmp(vt100c_ctx->cmdbuf,"0"))
            {
                /* What are you?   */
                vt100c_sends("\x27 [?1;0 c");   /* base VT100, no options */
            }   
            else
            {
                retval=VT100C_INVALIDESC;
            }
        }
        if(c=='A'||c=='B'||c=='C'||c=='D')
        {
            vt100c_ctx->cmdbuf[vt100c_ctx->icmdbuf]='\0';
            n=tc_atoi(vt100c_ctx->cmdbuf);
            if(!n)
                n=1;

            pcvid_set_cur_context(&(vt100c_ctx->scrolling_term));

            if(c=='A')
                pcvid_gotoxy(pcvid_wherex(),pcvid_wherey()-n); /* cursor up */
            if(c=='B')
                pcvid_gotoxy(pcvid_wherex(),pcvid_wherey()+n); /* cursor down */
            if(c=='C')
                pcvid_gotoxy(pcvid_wherex()+n,pcvid_wherey()); /* cursor right */
            if(c=='D')
                pcvid_gotoxy(pcvid_wherex()-n,pcvid_wherey()); /* cursor left */
        }
        if(c=='J')
        {
            if(!tc_strcmp(vt100c_ctx->cmdbuf,"")||!tc_strcmp(vt100c_ctx->cmdbuf,"0"))
            {
                /* erase from cursor to end of screen   */
                vt100_erase_cur_to_ends();
            }
            else if(!tc_strcmp(vt100c_ctx->cmdbuf,"2"))
            {
                /* clear screen   */
                pcvid_cls();                
            }
            else
            {
                retval=VT100C_INVALIDESC;
            }
        }
        if(c=='K')
        {

            if(!tc_strcmp(vt100c_ctx->cmdbuf,"")||!tc_strcmp(vt100c_ctx->cmdbuf,"0"))
            {
                /* erase from cursor to end of line   */
                vt100_erase_cur_to_endl();
            }
            else if(!tc_strcmp(vt100c_ctx->cmdbuf,"1"))
            {
                /* erase from beginning of line to cursor   */
                vt100_erase_line_to_cur();
            }
            else if(!tc_strcmp(vt100c_ctx->cmdbuf,"2"))
            {
                /* erase line containing cursor   */
                vt100_erase_cur_line();
            }
            else
            {
                retval=VT100C_INVALIDESC;
            }
        }
        if(c=='r')
        {
            retval=vt100c_set_scroll_win();
        }

        vt100c_ctx->icmdbuf=0;
    }   
    if(vt100c_ctx->mode==VT100C_BRAKCMDSET||vt100c_ctx->mode==VT100C_BRAKCMDRESET)
    {
        vt100c_ctx->cmdbuf[vt100c_ctx->icmdbuf]='\0';
        vt100c_ctx->icmdbuf=0;

        if(!tc_strcmp(vt100c_ctx->cmdbuf,"20"))
        {
            if(vt100c_ctx->mode==VT100C_BRAKCMDSET)
                retval=VT100C_UNSUPPORTEDESC; /* Set Mode: Line feed/new */
            else
                retval=VT100C_UNSUPPORTEDESC; /* Reset Mode: Line feed/new */
        }
        else
        {
            retval=VT100C_INVALIDESC;
        }
    }
    if(vt100c_ctx->mode==VT100C_QUESBRAKSET)
    {
        if(vt100c_ctx->cmdbuf[0]=='1')  /* Set Mode: Application keypad */
        {
            vt100c_ctx->application_keypad=1;
        }
        else if(vt100c_ctx->cmdbuf[0]=='3')
            {retval=VT100C_UNSUPPORTEDESC;} /* Set Mode: Column Mode */
        else if(vt100c_ctx->cmdbuf[0]=='4')
            {retval=VT100C_UNSUPPORTEDESC;} /* Set Mode: Scrolling */
        else if(vt100c_ctx->cmdbuf[0]=='5')
            {retval=VT100C_UNSUPPORTEDESC;} /* Set Mode: Screen Mode */
        else if(vt100c_ctx->cmdbuf[0]=='6')
            {
                vt100c_ctx->scroll_in_region=1; /* Set Mode: Origin Mode */
            }
        else if(vt100c_ctx->cmdbuf[0]=='7')
            {retval=VT100C_UNSUPPORTEDESC;} /* Set Mode: Wraparound */
        else if(vt100c_ctx->cmdbuf[0]=='8')
            {retval=VT100C_UNSUPPORTEDESC;} /* Set Mode: Autorepeat */
        else if(vt100c_ctx->cmdbuf[0]=='9')
            {retval=VT100C_UNSUPPORTEDESC;} /* Set Mode: Interface */
        else
            {retval=VT100C_INVALIDESC;}
    }
    if(vt100c_ctx->mode==VT100C_QUESBRAKRESET)
    {
        if(vt100c_ctx->cmdbuf[0]=='1')  /* Reset Mode: Application keypad */
        {
            vt100c_ctx->application_keypad=0;
        }
        else if(vt100c_ctx->cmdbuf[0]=='2')
            {retval=VT100C_UNSUPPORTEDESC;} /* Reset Mode: ANSI/VT52 */
        else if(vt100c_ctx->cmdbuf[0]=='3')
            {retval=VT100C_UNSUPPORTEDESC;} /* Reset Mode: Column Mode */
        else if(vt100c_ctx->cmdbuf[0]=='4')
            {retval=VT100C_UNSUPPORTEDESC;} /* Reset Mode: Scrolling */
        else if(vt100c_ctx->cmdbuf[0]=='5')
            {retval=VT100C_UNSUPPORTEDESC;} /* Reset Mode: Screen Mode */
        else if(vt100c_ctx->cmdbuf[0]=='6')
            {vt100c_ctx->scroll_in_region=0;} /* Reset Mode: Origin Mode */
        else if(vt100c_ctx->cmdbuf[0]=='7')
            {retval=VT100C_UNSUPPORTEDESC;} /* Reset Mode: Wraparound */
        else if(vt100c_ctx->cmdbuf[0]=='8')
            {retval=VT100C_UNSUPPORTEDESC;} /* Reset Mode: Autorepeat */
        else if(vt100c_ctx->cmdbuf[0]=='9')
            {retval=VT100C_UNSUPPORTEDESC;} /* Reset Mode: Interface */
        else
            {retval=VT100C_INVALIDESC;}
    }
    return(retval);
}