snprintf and vsnprintf were all superceeded by MS's safer alternatives - StringCbPrintf and StringCbVPrintf (and the rest of the SafeStr library).
I'd never heard of copysign until you pointed it out - I know it's probably slower, but you could use something like this:
double MyCopySign(double x, double y)
{
if (y == 0.0)
return fabs(x);
return fabs(x) * (y / fabs(y));
}
Alternatively, if you want, you can just copy the high bit from y into x directly using bit manipulation in C:
double MyCopySign(double x, double y)
{
char* Source = (char*)&y + 7;
char* Target = (char*)&x + 7;
*Target = (*Target & 0x7f) | (*Source & 0x80);
return x;
}
I'm kinda ashamed of that though - bit manipulation of floating-point values is a definite no-no
If I can get 2005beta working without screwing up my version of 2003 I'll have a go at building ODE - It might not be until Sunday though.