forked from KolibriOS/kolibrios
Added source files C--.
git-svn-id: svn://kolibrios.org@6446 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
174
programs/develop/cmm/port.cpp
Normal file
174
programs/develop/cmm/port.cpp
Normal file
@@ -0,0 +1,174 @@
|
||||
#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;
|
||||
}
|
||||
|
||||
//ñòðîêà-ðåçóëüòàò íå èñïîëüçóåòñÿ
|
||||
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;
|
||||
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_
|
||||
|
||||
Reference in New Issue
Block a user