kolibrios-gitea/programs/develop/cmm/port.cpp

175 lines
2.9 KiB
C++
Raw Permalink Normal View History

#define SEEK_SET (0)
#define SEEK_CUR (1)
#define SEEK_END (2)
#define _PORT_CPP_
#include "port.h"
long getfilelen(int fd)
{
long reslt,curr;
curr = lseek(fd,0,SEEK_CUR);
reslt = lseek(fd,0,SEEK_END);
lseek(fd,curr,SEEK_SET);
return reslt;
}
#ifndef _WIN32_
char* strupr(char* s)
{
char* p = s;
while (*p = toupper(*p)) p++;
return s;
}
char* strlwr(char* s)
{
char* p = s;
while (*p = tolower(*p)) p++;
return s;
}
int strnicmp(const char* s1, const char* s2, int len)
{
unsigned char c1,c2;
if(!len)
return 0;
do{
c1 = *s1++;
c2 = *s2++;
if (!c1||!c2)
break;
if (c1 == c2)
continue;
c1 = tolower(c1);
c2 = tolower(c2);
if (c1!=c2)
break;
} while (--len);
return (int)c1 - (int)c2;
}
int stricmp(const char* s1, const char* s2)
{
unsigned char c1,c2;
do{
c1 = *s1++;
c2 = *s2++;
if (!c1||!c2)
break;
if (c1 == c2)
continue;
c1 = tolower(c1);
c2 = tolower(c2);
if (c1!=c2)
break;
} while (c1);
return (int)c1 - (int)c2;
}
bool OemToCharA(char* a, char* b)
{
*b = *a;
return true;
}
bool CharToOemA(char* a, char* b)
{
*b = *a;
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int MultiByteToWideChar(
unsigned int CodePage, // code page
unsigned int dwFlags, // character-type options
char* lpMultiByteStr, // address of string to map
int cchMultiByte, // number of characters in string
wchar_t* lpWideCharStr, // address of wide-character buffer
int cchWideChar // size of buffer
)
{
int i = 0;
while ((lpMultiByteStr[i*2]!=0) && (lpMultiByteStr[i*2+1]!=0)) i++;
return i/2;
}
#ifdef _KOS_
typedef struct _fs
{
int cmd;
int numL;
int numH;
int size;
void* pointer;
unsigned char nul;
char* path;
} fs;
int stat (const char* path, struct _stat* buf)
{
//fs fstruc;
char buff[40];
int __ret;
char pathin[256];
int i;
char fstruc[25];
for(i=0; i<256; i++){
pathin[i]=path[i];
if (pathin[i]==0) break;
}
pathin[255]=0;
*((int*)(fstruc+0)) = 5;
*((int*)(fstruc+4)) = 0;
*((int*)(fstruc+8)) = 0;
*((int*)(fstruc+12)) = 0;
*((char**)(fstruc+16)) = buff;
*((char*)(fstruc+20)) = 0;
*((char**)(fstruc+21)) = pathin;
__asm__ __volatile__("int $0x40":"=a"(__ret):"a"(70),"b"(&fstruc));
return __ret;
}
char * getcwd (char *buffer, int size)
{
int len=0;
if (size==0){
if (buffer!=0)
return 0;
size = 256;
}
if (buffer==0)
buffer = (char*)malloc(size);
__asm__ __volatile__("int $0x40":"=a"(len):"a"(30),"b"(2),"c"(buffer),"d"(size));
if (len!=0)
return buffer;
else
return 0;
}
void exit(int a){
__asm__ __volatile__("int $0x40"::"a"(-1));
}
#endif //_KOS_
#endif //not _WIN32_