int load_image(const char *fn, _u8 *dst) { _i32 fh; SlFsFileInfo_t fi; _i32 r = sl_FsGetInfo((const _u8 *) fn, 0, &fi); dbg_putc(r == 0 ? '+' : '-'); if (r != 0) return r; { char buf[20]; __utoa(fi.FileLen, buf, 10); dbg_puts(buf); } r = sl_FsOpen((const _u8 *) fn, FS_MODE_OPEN_READ, NULL, &fh); dbg_putc(r == 0 ? '+' : '-'); if (r != 0) return r; r = sl_FsRead(fh, 0, dst, fi.FileLen); if (r != fi.FileLen) return r; sl_FsClose(fh, NULL, NULL, 0); return 0; }
size_t _FARFUNC strftime( char *s, size_t maxsize, const char *fmt, const struct tm *t ) { char buf[ 25 ]; char *p = buf; int i, len; for( len = 1; len < maxsize && *fmt; ++fmt, p = buf ) { if( *fmt != '%' ) { ++len; *s++ = *fmt; } else { strcpy( buf, "00" ); switch( *++fmt ) { case 'a': p = SWeekday[t->tm_wday]; break; case 'A': p = LWeekday[t->tm_wday]; break; case 'b': p = SMonth[t->tm_mon]; break; case 'B': p = LMonth[t->tm_mon]; break; case 'c': atime( p, t ); break; case 'd': __utoa( t->tm_mday, buf + (t->tm_mday < 10) ); break; case 'H': __utoa( t->tm_hour, buf + (t->tm_hour < 10) ); break; case 'I': i = t->tm_hour % 12; if (i == 0) i = 12; __utoa( i, buf + (i < 10) ); break; case 'j': i = t->tm_yday + 1; __utoa( i, buf + (i < 10) + (i < 100) ); break; case 'm': i = t->tm_mon + 1; __utoa( i, buf + (i < 10) ); break; case 'M': __utoa( t->tm_min, buf + (t->tm_min < 10) ); break; case 'p': p = AmPm[ t->tm_hour / 12 ]; break; case 'S': __utoa( t->tm_sec, buf + (t->tm_sec < 10) ); break; case 'U': i = t->tm_wday - (t->tm_yday % 7); if( i < 0 ) i += 7; i = (t->tm_yday + i) / 7; __utoa( i, buf + (i < 10) ); break; case 'w': __utoa( t->tm_wday, buf ); break; case 'W': i = t->tm_wday - (t->tm_yday % 7); if( i < 0 ) i += 7; i = (t->tm_yday + i - 1) / 7; __utoa( i, buf + (i < 10) ); break; case 'x': strcpy( buf, SWeekday[t->tm_wday] ); strcat( buf, " " ); strcat( buf, SMonth[t->tm_mon] ); strcat( buf, " " ); __utoa( t->tm_mday, buf + strlen( buf ) ); strcat( buf, ", " ); __utoa( t->tm_year + 1900, buf + strlen( buf ) ); break; case 'X': __utoa( t->tm_hour, buf + (t->tm_hour < 10) ); strcat( buf, ":0" ); __utoa( t->tm_min, buf + strlen( buf ) - (t->tm_min > 9) ); strcat( buf, ":0" ); __utoa( t->tm_sec, buf + strlen( buf ) - (t->tm_sec > 9) ); break; case 'y': i = t->tm_year % 100; __utoa( i, buf + (i < 10) ); break; case 'Y': __utoa( 1900 + t->tm_year, buf ); break; case 'Z': p = tzname[ t->tm_isdst ]; break; case '%': p = "%"; } i = min( strlen( p ), maxsize - len ); strncpy( s, p, i ); len += i; s += i; } } *s = '\0'; if( *fmt ) return( 0 ); else return( len - 1 ); }
static void print_addr(uint32_t addr) { char buf[10]; __utoa(addr, buf, 16); dbg_puts(buf); }