Example #1
0
nxtIO::LoaderError nxtIO::read_number( unsigned int &result, bool skip ){
	if( skip )
		skip_whitespace();
	
	
	char c = peek();
	if( std::isdigit( c ) ){
		RETURN_ON_LOADER_ERROR( ReadBytes( &c, 1 ) );
		
		if( c == '0' ){
			//It is either in octal or hex and it is not the number "0"
			result = 0;
			c = peek();
			
			if( c == 'x' || c == 'X' ){
				RETURN_ON_LOADER_ERROR( ReadBytes( &c, 1 ) );
				//In hex
				while( remaining_size() ){
					c = peek();
					
					unsigned int hex;
					if( !hex2number( c, hex ) )
						break;
					
					//Was valid, add and move to next character
					result = result * 16 + hex;
					RETURN_ON_LOADER_ERROR( ReadBytes( &c, 1 ) );
				}
			}
			else if( std::isdigit( c ) ){
				//In octal
				while( remaining_size() && std::isdigit( peek() ) && c < '8' ){
					result *= 8;
					RETURN_ON_LOADER_ERROR( ReadBytes( &c, 1 ) );
					result += c - '0';
				}
			}
			
			return LDR_SUCCESS;
		}
		else{
			//The number is in decimal
			result = c - '0'; //Add first digit
			
			while( remaining_size() && std::isdigit( peek() ) ){
				result *= 10;
				RETURN_ON_LOADER_ERROR( ReadBytes( &c, 1 ) );
				result += c - '0';
			}
			
			return LDR_SUCCESS;
		}
	}
	else
		return LDR_TEXT_INVALID;
	
	return LDR_SUCCESS;
}
Example #2
0
static void read_keys(void)
{
    int i,j,k;
    char buffer[1024];
    FILE* keysyms=fopen("keysym.h","r");

    memset(keys,0,0x400*sizeof(char*));

    if(!keysyms)
        return;

    while(!feof(keysyms)) {
        fgets(buffer,1024,keysyms);
        if(!strncmp(buffer,"#define XK_",strlen("#define XK_"))) {
            for(i=strlen("#define XK_"); buffer[i] && buffer[i]!=' '
                    && buffer[i]!='\t'; i++);
            if(buffer[i]==0) /* don't support wrapped lines */
                continue;
            buffer[i]=0;
            for(i++; buffer[i] && buffer[i]!='0'; i++);
            if(buffer[i]==0 || buffer[i+1]!='x') continue;
            for(j=0,i+=2; (k=hex2number(buffer[i]))>=0; i++)
                j=j*16+k;
            if(keys[j&0x3ff]) {
                char* x=(char*)malloc(1+strlen(keys[j&0x3ff])+1+strlen(buffer+strlen("#define ")));
                strcpy(x,keys[j&0x3ff]);
                strcat(x,",");
                strcat(x,buffer+strlen("#define "));
                free(keys[j&0x3ff]);
                keys[j&0x3ff]=x;
            } else
                keys[j&0x3ff] = strdup(buffer+strlen("#define "));
        }

    }
    fclose(keysyms);
}
Example #3
0
static void loadGameStats( team_s *road_team, team_s *home_team, nst_save_state_s *save_state, unsigned char *state_file )
{
     int road_score = hex2number( state_file[0x3d1] );
     int home_score = hex2number( state_file[0x3d6] );

     if ( save_state->game_of_week[0] < 17 )
     {
          road_score = hex2number( state_file[0x3d1] );
          home_score = hex2number( state_file[0x3d6] );
     }
     else
     {
          road_score = hex2number( save_state->playoffs[save_state->game_of_week[0]].road_score[0] );
          home_score = hex2number( save_state->playoffs[save_state->game_of_week[0]].home_score[0] );
     }

     for ( int i = 0; i < 30; ++i )
     {
          player_s *player = road_team->players[i].player;

          if      ( i <  2 ) updateQuarterbackStats( road_team, player, &(save_state->road_team[0].quarterback[i     ]) );
          else if ( i < 12 ) updateOffenseStats(     road_team, player, &(save_state->road_team[0].offense    [i -  2]) );
          else if ( i < 17 ) ignoreOffensiveLine();
          else if ( i < 28 ) updateDefenseStats(     road_team, player, &(save_state->road_team[0].defense    [i - 17]) );
          else if ( i < 29 ) updateKickerStats(      road_team, player, &(save_state->road_team[0].kicker     [     0]) );
          else               updatePunterStats(      road_team, player, &(save_state->road_team[0].punter     [     0]) );
     }

     for ( int i = 0; i < 30; ++i )
     {
          player_s *player = home_team->players[i].player;

          if      ( i <  2 ) updateQuarterbackStats( home_team, player, &(save_state->home_team[0].quarterback[i     ]) );
          else if ( i < 12 ) updateOffenseStats(     home_team, player, &(save_state->home_team[0].offense    [i -  2]) );
          else if ( i < 17 ) ignoreOffensiveLine();
          else if ( i < 28 ) updateDefenseStats(     home_team, player, &(save_state->home_team[0].defense    [i - 17]) );
          else if ( i < 29 ) updateKickerStats(      home_team, player, &(save_state->home_team[0].kicker     [     0]) );
          else               updatePunterStats(      home_team, player, &(save_state->home_team[0].punter     [     0]) );
     }

     road_team->stats->points_scored = road_score;
     home_team->stats->points_scored = home_score;
}