17f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* 27f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 37f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 47f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * you may not use this file except in compliance with the License. 67f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * You may obtain a copy of the License at 77f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 87f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * See the License for the specific language governing permissions and 147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * limitations under the License. 157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */ 167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- includes ----------------------------------------------------------- */ 187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/String.h" 207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* 217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include <stdlib.h> 227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project*/ 237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- related objects --------------------------------------------------- */ 257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- typedefs ----------------------------------------------------------- */ 277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- constants ---------------------------------------------------------- */ 297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ external functions } ----------------------------------------- */ 357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectchar* bbs_strcpy( char* dstA, const char* srcA ) 417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const char* srcL = srcA; 437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project char* dstL = dstA; 447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( ( *dstL++ = *srcL++ ) != 0 ); 457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return dstA; 467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectchar* bbs_strncpy( char* dstA, const char* srcA, uint32 sizeA ) 517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < sizeA; iL++ ) 547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ( dstA[ iL ] = srcA[ iL ] ) == 0 ) break; 567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL == sizeA && sizeA > 0 ) dstA[ iL - 1 ] = 0; 587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return dstA; 597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectchar* bbs_strcat( char* dstA, const char* srcA ) 647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const char* srcL = srcA; 667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project char* dstL = dstA; 677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( *dstL != 0 ) dstL++; 687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( ( *dstL++ = *srcL++ ) != 0 ); 697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return dstA; 707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectchar* bbs_strncat( char* dstA, const char* srcA, uint32 sizeA ) 757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < sizeA; iL++ ) 787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( dstA[ iL ] == 0 ) break; 807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( ; iL < sizeA; iL++ ) 837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( ( dstA[ iL ] = srcA[ iL ] ) == 0 ) break; 857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL == sizeA && sizeA > 0 ) dstA[ iL - 1 ] = 0; 887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return dstA; 907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_strlen( const char* strA ) 957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL = 0; 977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( strA[ iL++ ] != 0 ); 987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return iL - 1; 997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbs_strequal( const char* str1A, const char* str2A ) 1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const char* str1L = str1A; 1067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const char* str2L = str2A; 1077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( str1L == NULL && str2L == NULL ) return TRUE; 1097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( str1L == NULL || str2L == NULL ) return FALSE; 1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( ( *str1L != 0 ) && ( *str2L != 0 ) ) 1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( *str1L != *str2L ) break; 1147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project str1L++; 1157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project str2L++; 1167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return *str1L == *str2L; 1197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbs_strmatch( const char* str1A, const char* str2A ) 1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const char* str1L = str1A; 1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const char* str2L = str2A; 1277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( str1L == NULL || str2L == NULL ) return TRUE; 1297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( ( *str1L != 0 ) && ( *str2L != 0 ) ) 1317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( *str1L != *str2L ) break; 1337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project str1L++; 1347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project str2L++; 1357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( *str1L == 0 || *str2L == 0 ) return TRUE; 1387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return *str1L == *str2L; 1407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_snprintf( char* bufA, uint32 bufSizeA, const char* formatA, ... ) 1457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeL; 1477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project va_list argsL; 1487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project va_start( argsL, formatA ); 1497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project sizeL = bbs_vsnprintf( bufA, bufSizeA, formatA, argsL ); 1507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project va_end( argsL ); 1517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return sizeL; 1527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* converts number to string without 0 termination - returns number of characters written */ 1577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_cString( int32 valA, char* dstA, uint32 bufSizeA ) 1587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 valL = ( valA < 0 ) ? -valA : valA; 1607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL = 0; 1617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 digitsL = 0; 1627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( valA < 0 ) 1637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) dstA[ iL++ ] = '-'; 1657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* count #digits */ 1687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( valL == 0 ) 1697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project iL++; 1717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else 1737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( valL > 0 ) 1757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project iL++; 1777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL /= 10; 1787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project digitsL = ( iL > bufSizeA ) ? bufSizeA : iL; 1827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL = ( valA < 0 ) ? -valA : valA; 1847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( valL == 0 ) 1867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) dstA[ --iL ] = '0'; 1887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else 1907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( valL > 0 ) 1927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) dstA[ --iL ] = '0' + ( valL % 10 ); 1947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL /= 10; 1957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return digitsL; 1997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_vsnprintf( char* bufA, uint32 bufSizeA, const char* formatA, va_list argsA ) 2047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const char* fpL = formatA; 2067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL = 0; 2077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( *fpL != 0 ) 2097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( *fpL == '%' ) 2117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( *( fpL + 1 ) == 'i' || *( fpL + 1 ) == 'd' ) 2137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int valL = va_arg( argsA, int ); 2157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) 2167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project iL += bbs_cString( valL, bufA + iL, bufSizeA - iL ); 2187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project fpL += 2; 2207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else if( *( fpL + 1 ) == 's' ) 2227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const char* stringL = va_arg( argsA, char* ); 2247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) 2257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bufA[ iL ] = 0; 2277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_strncat( bufA + iL, stringL, bufSizeA - iL ); 2287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project iL += bbs_strlen( stringL ); 2297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project fpL += 2; 2317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else if( *( fpL + 1 ) == '%' ) 2337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) bufA[ iL++ ] = '%'; 2357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project fpL++; 2367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else 2387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) bufA[ iL++ ] = *fpL; 2407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project fpL++; 2417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else 2447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) bufA[ iL++ ] = *fpL; 2467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project fpL++; 2477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( iL < bufSizeA ) 2517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bufA[ iL ] = 0; 2537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project else if( bufSizeA > 0 ) 2557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bufA[ bufSizeA - 1 ] = 0; 2577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return iL; 2607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectint32 bbs_atoi( const char* strA ) 2657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 valL = 0; 2677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int16 signL = 1; 2687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16 iL = 0, lenL = bbs_strlen( strA ); 2697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( iL < lenL && strA[ iL ] == ' ' ) iL++; 2717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( strA[ iL ] == '-' ) 2727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project signL = -1; 2747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project iL++; 2757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( iL < lenL && strA[ iL ] == ' ' ) iL++; 2777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project while( iL < lenL && strA[ iL ] >= '0' && strA[ iL ] <= '9' ) 2787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL = valL * 10 + ( strA[ iL ] - '0' ); 2807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project iL++; 2817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return valL * signL; 2837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 287