compiler 0.9.26 release

git-svn-id: svn://kolibrios.org@6429 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
siemargl
2016-05-14 08:56:15 +00:00
parent a6ec7b35a4
commit b5e7b54c7a
432 changed files with 92632 additions and 16981 deletions

View File

@@ -1,78 +1,23 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <kolibrisys.h>
#include <conio.h>
char* dllname="/sys/lib/console.obj";
int console_init_status;
char* imports[] = {"START","version","con_init","con_write_asciiz","con_printf","con_exit",NULL};
char* caption = "Console app";
extern int __argc;
extern char** __argv;
extern char* __path;
dword* dll_ver;
void stdcall (* con_init)(dword wnd_width, dword wnd_height, dword scr_width, dword scr_height, const char* title);
void stdcall (* con_write_asciiz)(const char* string);
void cdecl (* con_printf)(const char* format,...);
void stdcall (* con_exit)(dword bCloseWindow);
struct import{
char *name;
void *data;
};
void printf_link(struct import *exp, char** imports){
dll_ver = (dword*)
_ksys_cofflib_getproc(exp, imports[1]);
con_init = (void stdcall (*)(dword , dword, dword, dword, const char*))
_ksys_cofflib_getproc(exp, imports[2]);
con_printf = (void cdecl (*)(const char*,...))
_ksys_cofflib_getproc(exp, imports[4]);
con_exit = (void stdcall (*)(dword))
_ksys_cofflib_getproc(exp, imports[5]);
}
int init_console(void)
{
struct import * hDll;
if((hDll = (struct import *)_ksys_cofflib_load(dllname)) == 0){
debug_out_str("can't load lib\n");
return 1;
}
printf_link(hDll, imports);
// debug_out_str("dll loaded\n");
con_init(-1, -1, -1, -1, caption); //__argv[0] && __path dont work
return(0);
}
int printf(const char *format,...)
int printf(const char *format, ...)
{
int i = 0;
int printed_simbols;
int printed_simbols = 0;
va_list arg;
char simbol[]={"%s"};
char *s;
va_start(arg,format);
if (console_init_status==0)
{
i=init_console();
console_init_status=1;
}
i=con_init_console_dll();
if (i==0)
{
s=malloc(4096);
printed_simbols=format_print(s,4096,format,arg);
con_printf(simbol,s);
con_write_string(s, printed_simbols);
free(s);
}
return(printed_simbols);