comparison src/stdlib/SDL_string.c @ 1867:887c3600826b

Fixed bug #251
author Sam Lantinga <slouken@libsdl.org>
date Tue, 20 Jun 2006 05:55:23 +0000
parents 7995cc87b777
children c121d94672cb 16f7767f9580
comparison
equal deleted inserted replaced
1866:926aea04a595 1867:887c3600826b
509 long SDL_strtol(const char *string, char **endp, int base) 509 long SDL_strtol(const char *string, char **endp, int base)
510 { 510 {
511 size_t len; 511 size_t len;
512 long value; 512 long value;
513 513
514 len = SDL_ScanLong(string, base ? base : 10, &value); 514 if ( !base ) {
515 if ( (SDL_strlen(string) > 2) && (SDL_strncmp(string, "0x", 2) == 0) ) {
516 base = 16;
517 } else {
518 base = 10;
519 }
520 }
521
522 len = SDL_ScanLong(string, base, &value);
515 if ( endp ) { 523 if ( endp ) {
516 *endp = (char *)string + len; 524 *endp = (char *)string + len;
517 } 525 }
518 return value; 526 return value;
519 } 527 }
523 unsigned long SDL_strtoul(const char *string, char **endp, int base) 531 unsigned long SDL_strtoul(const char *string, char **endp, int base)
524 { 532 {
525 size_t len; 533 size_t len;
526 unsigned long value; 534 unsigned long value;
527 535
528 len = SDL_ScanUnsignedLong(string, base ? base : 10, &value); 536 if ( !base ) {
537 if ( (SDL_strlen(string) > 2) && (SDL_strncmp(string, "0x", 2) == 0) ) {
538 base = 16;
539 } else {
540 base = 10;
541 }
542 }
543
544 len = SDL_ScanUnsignedLong(string, base, &value);
529 if ( endp ) { 545 if ( endp ) {
530 *endp = (char *)string + len; 546 *endp = (char *)string + len;
531 } 547 }
532 return value; 548 return value;
533 } 549 }
591 Sint64 SDL_strtoll(const char *string, char **endp, int base) 607 Sint64 SDL_strtoll(const char *string, char **endp, int base)
592 { 608 {
593 size_t len; 609 size_t len;
594 Sint64 value; 610 Sint64 value;
595 611
596 len = SDL_ScanLongLong(string, base ? base : 10, &value); 612 if ( !base ) {
613 if ( (SDL_strlen(string) > 2) && (SDL_strncmp(string, "0x", 2) == 0) ) {
614 base = 16;
615 } else {
616 base = 10;
617 }
618 }
619
620 len = SDL_ScanLongLong(string, base, &value);
597 if ( endp ) { 621 if ( endp ) {
598 *endp = (char *)string + len; 622 *endp = (char *)string + len;
599 } 623 }
600 return value; 624 return value;
601 } 625 }
605 Uint64 SDL_strtoull(const char *string, char **endp, int base) 629 Uint64 SDL_strtoull(const char *string, char **endp, int base)
606 { 630 {
607 size_t len; 631 size_t len;
608 Uint64 value; 632 Uint64 value;
609 633
610 len = SDL_ScanUnsignedLongLong(string, base ? base : 10, &value); 634 if ( !base ) {
635 if ( (SDL_strlen(string) > 2) && (SDL_strncmp(string, "0x", 2) == 0) ) {
636 base = 16;
637 } else {
638 base = 10;
639 }
640 }
641
642 len = SDL_ScanUnsignedLongLong(string, base, &value);
611 if ( endp ) { 643 if ( endp ) {
612 *endp = (char *)string + len; 644 *endp = (char *)string + len;
613 } 645 }
614 return value; 646 return value;
615 } 647 }