XRogue: fix md_htonl() and md_ntohl().
xcrypt requires them. The implementations in state.c used htonl() and ntohl(), which aren't available on Windows. So the Advanced Rogue 7 versions were copied over. This implementation could be problematic on other systems where sizeof(long) == 8. Maybe someday I can convert everything to C99 and use stdint.h.
This commit is contained in:
parent
b2ebcf72c9
commit
13f4a96d93
2 changed files with 31 additions and 9 deletions
|
|
@ -3327,18 +3327,38 @@ md_killchar()
|
|||
return(killchar());
|
||||
}
|
||||
|
||||
long
|
||||
md_ntohl(netlong)
|
||||
long netlong;
|
||||
int md_endian = 0x01020304;
|
||||
|
||||
unsigned long int
|
||||
md_ntohl(unsigned long int x)
|
||||
{
|
||||
return( ntohl(netlong) );
|
||||
#ifdef _WIN32
|
||||
if ( *((char *)&md_endian) == 0x01 )
|
||||
return(x);
|
||||
else
|
||||
return( ((x & 0x000000ffU) << 24) |
|
||||
((x & 0x0000ff00U) << 8) |
|
||||
((x & 0x00ff0000U) >> 8) |
|
||||
((x & 0xff000000U) >> 24) );
|
||||
#else
|
||||
return( ntohl(x) );
|
||||
#endif
|
||||
}
|
||||
|
||||
long
|
||||
md_htonl(netlong)
|
||||
long netlong;
|
||||
unsigned long int
|
||||
md_htonl(unsigned long int x)
|
||||
{
|
||||
return(htonl(netlong));
|
||||
#ifdef _WIN32
|
||||
if ( *((char *)&md_endian) == 0x01 )
|
||||
return(x);
|
||||
else
|
||||
return( ((x & 0x000000ffU) << 24) |
|
||||
((x & 0x0000ff00U) << 8) |
|
||||
((x & 0x00ff0000U) >> 8) |
|
||||
((x & 0xff000000U) >> 24) );
|
||||
#else
|
||||
return( htonl(x) );
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -3493,4 +3513,3 @@ md_unlink(char *file)
|
|||
return(unlink(file));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue