123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
-
-
- #include <stdlib.h>
- #include <byteswap.h>
- #include <latch.h>
- #include <gpxe/in.h>
-
-
- unsigned int sleep(unsigned int secs)
- {
- unsigned long tmo;
-
- for (tmo = currticks()+secs*TICKS_PER_SEC; currticks() < tmo; ) {
- }
- return 0;
- }
-
-
- int inet_aton ( const char *cp, struct in_addr *inp ) {
- const char *p = cp;
- const char *digits_start;
- unsigned long ip = 0;
- unsigned long val;
- int j;
- for(j = 0; j <= 3; j++) {
- digits_start = p;
- val = strtoul(p, ( char ** ) &p, 10);
- if ((p == digits_start) || (val > 255)) return 0;
- if ( ( j < 3 ) && ( *(p++) != '.' ) ) return 0;
- ip = (ip << 8) | val;
- }
- if ( *p == '\0' ) {
- inp->s_addr = htonl(ip);
- return 1;
- }
- return 0;
- }
-
- int isspace ( int c ) {
- switch ( c ) {
- case ' ':
- case '\f':
- case '\n':
- case '\r':
- case '\t':
- case '\v':
- return 1;
- default:
- return 0;
- }
- }
-
- unsigned long strtoul ( const char *p, char **endp, int base ) {
- unsigned long ret = 0;
- unsigned int charval;
-
- while ( isspace ( *p ) )
- p++;
-
- if ( base == 0 ) {
- base = 10;
- if ( *p == '0' ) {
- p++;
- base = 8;
- if ( ( *p | 0x20 ) == 'x' ) {
- p++;
- base = 16;
- }
- }
- }
-
- while ( 1 ) {
- charval = *p;
- if ( charval >= 'a' ) {
- charval = ( charval - 'a' + 10 );
- } else if ( charval >= 'A' ) {
- charval = ( charval - 'A' + 10 );
- } else {
- charval = ( charval - '0' );
- }
- if ( charval >= ( unsigned int ) base )
- break;
- ret = ( ( ret * base ) + charval );
- p++;
- }
-
- if ( endp )
- *endp = ( char * ) p;
-
- return ( ret );
- }
-
|