Пример #1
0
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;
}
Пример #2
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 );
  }
Пример #3
0
static void print_addr(uint32_t addr) {
  char buf[10];
  __utoa(addr, buf, 16);
  dbg_puts(buf);
}