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; }
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); }
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; }