if(pos==__maxlen){return pos;}\
if(__s){__s[pos++]=ch;}else{pos++;}\
}while(0)
+/**
+ * \brief VArg String Number Print Formatted
+ */
int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
{
char c, pad = ' ';
pad = ' ';
// - Minimum length
- if(c == '*') {
+ if(c == '*') { // Dynamic length
minSize = val;
val = va_arg(args, Uint);
c = *__format++;
{
case 'd':
case 'i':
- #if BITS == 32
- if( (isLongLong && val >> 63) || (!isLongLong && val >> 31) ) {
- #else
- if( (Sint)val < 0 ) {
- #endif
+ if( isLongLong && val >> 63 ) {
PUTCH('-');
val = -val;
}
+ else if( !isLongLong && val >> 31 ) {
+ PUTCH('-');
+ val = -(Sint32)val;
+ }
itoa(p, val, 10, minSize, pad);
goto printString;
case 'u':
// String - Null Terminated Array
case 's':
- p = (char*)(Uint)val;
+ p = (char*)(tVAddr)val;
printString:
if(!p) p = "(null)";
len = strlen(p);
break;
case 'C': // Non-Null Terminated Character Array
- p = (char*)(Uint)val;
+ p = (char*)(tVAddr)val;
if(!p) goto printString;
while(minSize--) PUTCH(*p++);
break;
) && month > 1) // Leap year and after feb
stamp += 3600*24;
- stamp += ((365*4+1) * ((year-2000)&~3)) * 3600*24; // Foour Year Segments
+ stamp += ((365*4+1) * ((year-2000)&~3)) * 3600*24; // Four Year Segments
stamp += ((year-2000)&3) * 365*3600*24; // Inside four year segment
stamp += UNIX_TO_2K;
*/
int CheckString(char *String)
{
+ if( !MM_GetPhysAddr( (tVAddr)String ) )
+ return 0;
+
// Check 1st page
if( MM_IsUser( (tVAddr)String ) )
{