Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5575 → Rev 5576

/programs/cmm/lib/strings.h
178,24 → 178,31
$jnz L2
}
 
inline dword strncpy(dword text1, text2, signed len)
:inline dword strncpy(dword text1, text2, signed len)
signed o1,o2;
{
if(!text1)||(!len) return text1;
if(len<4)
{
o2 = len;
goto RUN_BYTE;
}
o1 = len/4;
o2 = len-4*o1;
while(o1){
ESDWORD[text1] = ESDWORD[text2];
DSDWORD[text1] = DSDWORD[text2];
text1 += 4;
text2 += 4;
$dec o1
}
RUN_BYTE:
while(o2){
ESBYTE[text1] = ESBYTE[text2];
DSBYTE[text1] = DSBYTE[text2];
$inc text1
$inc text2
$dec o2
}
ESBYTE[text1] = 0;
DSBYTE[text1] = 0;
return text1;
}
 
339,25 → 346,26
signed o1,o2;
char s;
{
s = ESBYTE[text1];
s = DSBYTE[text1];
while(s){
$inc text1
s = ESBYTE[text1];
s = DSBYTE[text1];
}
o1 = len/4;
o2 = len-4*o1;
while(o1){
ESDWORD[text1] = ESDWORD[text2];
DSDWORD[text1] = DSDWORD[text2];
text1 += 4;
text2 += 4;
$dec o1
}
while(o2){
ESBYTE[text1] = ESBYTE[text2];
DSBYTE[text1] = DSBYTE[text2];
$inc text1
$inc text2
$dec o2
}
DSBYTE[text1] = 0;
}
 
inline fastcall void chrcat(ESI, BL)
614,22 → 622,23
inline dword itoa(signed long number)
{
unsigned char buf[11];
dword ret;
dword ret,p;
byte cmd;
long mask,tmp;
mask = 1000000000;
cmd = true;
p = #buf;
if(!number){
ESBYTE[buf] = '0';
ESBYTE[buf+1] = 0;
return buf;
ESBYTE[p] = '0';
ESBYTE[p+1] = 0;
return p;
}
ret = buf;
ret = p;
if(number<0)
{
$neg number
ESBYTE[buf] = '-';
$inc buf
ESBYTE[p] = '-';
$inc p
}
while(mask)
{
638,22 → 647,22
if(cmd){
if(tmp){
ESBYTE[buf] = tmp + '0';
$inc buf
ESBYTE[p] = tmp + '0';
$inc p
cmd = false;
}
}
else {
ESBYTE[buf] = tmp + '0';
$inc buf
ESBYTE[p] = tmp + '0';
$inc p
}
mask /= 10;
}
ESBYTE[buf] = 0;
ESBYTE[p] = 0;
return ret;
}
inline fastcall itoa_(signed int EDI, ESI)
:inline fastcall itoa_(signed int EDI, ESI)
{
$pusha
EBX = EDI;
686,15 → 695,27
return EBX;
}
 
inline dword strdup(dword text)
:inline dword memchr(dword s,int c,signed len)
{
if(!len) return NULL;
do {
if(DSBYTE[s] == c) return s;
$inc s
$dec len
} while(len);
return NULL;
}
 
:inline dword strdup(dword text)
{
dword l = strlen(text);
dword ret = malloc(l+1);
if(!ret) return NULL;
strncpy(ret,text,l);
return ret;
}
 
inline dword strndup(dword str, signed maxlen)
:inline dword strndup(dword str, signed maxlen)
{
dword copy,len;
 
702,12 → 723,96
copy = malloc(len + 1);
if (copy != NULL)
{
memcpy(copy, str, len);
strncpy(copy, str, len);
DSBYTE[len+copy] = '\0';
}
return copy;
}
 
:inline cdecl int sprintf(dword buf, format,...)
{
byte s;
char X[10];
dword ret, tmp, l;
dword arg = #format;
ret = buf;
s = DSBYTE[format];
while(s){
if(s=='%'){
arg+=4;
tmp = DSDWORD[arg];
if(tmp==END_ARGS)goto END_FUNC_SPRINTF;
$inc format
s = DSBYTE[format];
if(!s)goto END_FUNC_SPRINTF;
switch(s)
{
case 's':
l = tmp;
s = DSBYTE[tmp];
while(s)
{
DSBYTE[buf] = s;
$inc tmp
$inc buf
s = DSBYTE[tmp];
}
break;
case 'c':
DSBYTE[buf] = tmp;
$inc buf
break;
case 'u': //if(tmp<0)return ret;
case 'd':
case 'i':
tmp = itoa(tmp);
if(!DSBYTE[tmp])goto END_FUNC_SPRINTF;
l = strlen(tmp);
strncpy(buf,tmp,l);
buf += l;
break;
case 'a':
case 'A':
strncpy(buf,"0x00000000",10);
buf+=10;
l=buf;
while(tmp)
{
$dec buf
s=tmp&0xF;
if(s>9)DSBYTE[buf]='A'+s-10;
else DSBYTE[buf]='0'+s;
tmp>>=4;
}
buf=l;
break;
case 'p':
tmp = itoa(#tmp);
if(!DSBYTE[tmp])goto END_FUNC_SPRINTF;
l = strlen(tmp);
strncpy(buf,tmp,l);
buf += l;
break;
case '%':
DSBYTE[buf] = '%';
$inc buf
break;
default:
goto END_FUNC_SPRINTF;
}
}
else {
DSBYTE[buf] = s;
$inc buf
}
$inc format
s = DSBYTE[format];
}
END_FUNC_SPRINTF:
DSBYTE[buf] = 0;
return buf-ret;
}
 
void debugi(dword d_int)
{
char tmpch[12];