From 99dce7afafefc23bbe5daa037c9f6034683bc301 Mon Sep 17 00:00:00 2001 From: turbocat Date: Tue, 27 Apr 2021 17:55:31 +0000 Subject: [PATCH] Delete old kolibri-libc git-svn-id: svn://kolibrios.org@8696 a494cfbc-eb01-0410-851d-a64ba20cac60 --- contrib/kolibri-libc/compile_flags.txt | 2 - contrib/kolibri-libc/linuxtools/clink | Bin 23292 -> 0 bytes contrib/kolibri-libc/linuxtools/kgcc | 25 - contrib/kolibri-libc/linuxtools/kld | 24 - contrib/kolibri-libc/linuxtools/mkexp | Bin 15828 -> 0 bytes contrib/kolibri-libc/linuxtools/mkexp.c | 50 - contrib/kolibri-libc/linuxtools/mklib | Bin 4844 -> 0 bytes contrib/kolibri-libc/linuxtools/mklib.c | 46 - contrib/kolibri-libc/loader/__lib__.asm | 9 - contrib/kolibri-libc/loader/__lib__.inc | 2 - contrib/kolibri-libc/loader/build.sh | 24 - contrib/kolibri-libc/loader/symbols.txt | 112 -- contrib/kolibri-libc/samples/Makefile | 27 - contrib/kolibri-libc/samples/basic_gui.c | 116 -- contrib/kolibri-libc/source/Makefile | 56 - contrib/kolibri-libc/source/Makefile.ktcc | 5 - contrib/kolibri-libc/source/Makefile.shared | 9 - contrib/kolibri-libc/source/crt/crt0.asm | 220 ---- contrib/kolibri-libc/source/ctype/is.c | 21 - contrib/kolibri-libc/source/include/ctype.h | 41 - contrib/kolibri-libc/source/include/errno.h | 144 --- contrib/kolibri-libc/source/include/float.h | 65 -- contrib/kolibri-libc/source/include/ksys.h | 991 ------------------ contrib/kolibri-libc/source/include/limits.h | 18 - contrib/kolibri-libc/source/include/math.h | 171 --- contrib/kolibri-libc/source/include/setjmp.h | 17 - .../kolibri-libc/source/include/shell_api.h | 15 - contrib/kolibri-libc/source/include/stdarg.h | 77 -- contrib/kolibri-libc/source/include/stdbool.h | 11 - contrib/kolibri-libc/source/include/stddef.h | 39 - contrib/kolibri-libc/source/include/stdint.h | 28 - contrib/kolibri-libc/source/include/stdio.h | 143 --- contrib/kolibri-libc/source/include/stdlib.h | 38 - contrib/kolibri-libc/source/include/string.h | 186 ---- .../kolibri-libc/source/include/sys/dirent.h | 34 - .../kolibri-libc/source/include/sys/socket.h | 244 ----- contrib/kolibri-libc/source/include/time.h | 30 - contrib/kolibri-libc/source/math/acos.s | 22 - contrib/kolibri-libc/source/math/acosh.c | 8 - contrib/kolibri-libc/source/math/asin.s | 14 - contrib/kolibri-libc/source/math/asinh.c | 9 - contrib/kolibri-libc/source/math/atan.s | 8 - contrib/kolibri-libc/source/math/atan2.s | 35 - contrib/kolibri-libc/source/math/atanh.c | 8 - contrib/kolibri-libc/source/math/ceil.s | 24 - contrib/kolibri-libc/source/math/cos.s | 15 - contrib/kolibri-libc/source/math/cosh.c | 8 - contrib/kolibri-libc/source/math/exp.s | 31 - contrib/kolibri-libc/source/math/fabs.s | 6 - contrib/kolibri-libc/source/math/floor.s | 24 - contrib/kolibri-libc/source/math/fmod.s | 29 - contrib/kolibri-libc/source/math/frexp.c | 26 - contrib/kolibri-libc/source/math/hypot.c | 100 -- contrib/kolibri-libc/source/math/ldexp.c | 32 - contrib/kolibri-libc/source/math/libc/asm.h | 9 - contrib/kolibri-libc/source/math/log.s | 7 - contrib/kolibri-libc/source/math/modf.s | 33 - contrib/kolibri-libc/source/math/modfl.s | 22 - contrib/kolibri-libc/source/math/pow.s | 86 -- contrib/kolibri-libc/source/math/pow10.s | 33 - contrib/kolibri-libc/source/math/pow2.s | 31 - contrib/kolibri-libc/source/math/sin.s | 16 - contrib/kolibri-libc/source/math/sinh.c | 16 - contrib/kolibri-libc/source/math/sqrt.s | 6 - contrib/kolibri-libc/source/math/tan.s | 16 - contrib/kolibri-libc/source/math/tanh.c | 17 - contrib/kolibri-libc/source/setjmp/longjmp.s | 15 - contrib/kolibri-libc/source/setjmp/setjmp.s | 20 - contrib/kolibri-libc/source/stdio/clearerr.c | 6 - contrib/kolibri-libc/source/stdio/conio.c | 56 - contrib/kolibri-libc/source/stdio/conio.h | 76 -- .../kolibri-libc/source/stdio/debug_printf.c | 14 - contrib/kolibri-libc/source/stdio/fclose.c | 7 - contrib/kolibri-libc/source/stdio/feof.c | 5 - contrib/kolibri-libc/source/stdio/ferror.c | 5 - contrib/kolibri-libc/source/stdio/fflush.c | 5 - contrib/kolibri-libc/source/stdio/fgetc.c | 38 - contrib/kolibri-libc/source/stdio/fgetpos.c | 6 - contrib/kolibri-libc/source/stdio/fgets.c | 24 - contrib/kolibri-libc/source/stdio/fopen.c | 7 - .../kolibri-libc/source/stdio/format_print.c | 816 -------------- .../kolibri-libc/source/stdio/format_print.h | 12 - .../kolibri-libc/source/stdio/format_scan.c | 403 ------- .../kolibri-libc/source/stdio/format_scan.h | 20 - contrib/kolibri-libc/source/stdio/fputc.c | 35 - contrib/kolibri-libc/source/stdio/fputs.c | 11 - contrib/kolibri-libc/source/stdio/fread.c | 20 - contrib/kolibri-libc/source/stdio/freopen.c | 36 - contrib/kolibri-libc/source/stdio/fscanf.c | 13 - contrib/kolibri-libc/source/stdio/fseek.c | 17 - contrib/kolibri-libc/source/stdio/fsetpos.c | 7 - contrib/kolibri-libc/source/stdio/ftell.c | 5 - contrib/kolibri-libc/source/stdio/fwrite.c | 17 - contrib/kolibri-libc/source/stdio/getchar.c | 10 - contrib/kolibri-libc/source/stdio/gets.c | 15 - contrib/kolibri-libc/source/stdio/perror.c | 5 - contrib/kolibri-libc/source/stdio/printf.c | 13 - contrib/kolibri-libc/source/stdio/puts.c | 13 - contrib/kolibri-libc/source/stdio/remove.c | 6 - contrib/kolibri-libc/source/stdio/rename.c | 6 - contrib/kolibri-libc/source/stdio/rewind.c | 5 - contrib/kolibri-libc/source/stdio/scanf.c | 20 - contrib/kolibri-libc/source/stdio/setbuf.c | 5 - contrib/kolibri-libc/source/stdio/setvbuf.c | 5 - contrib/kolibri-libc/source/stdio/snprintf.c | 12 - contrib/kolibri-libc/source/stdio/sprintf.c | 12 - contrib/kolibri-libc/source/stdio/sscanf.c | 12 - contrib/kolibri-libc/source/stdio/tmpfile.c | 11 - contrib/kolibri-libc/source/stdio/tmpnam.c | 16 - contrib/kolibri-libc/source/stdio/vfscanf.c | 55 - contrib/kolibri-libc/source/stdio/vprintf.c | 18 - contrib/kolibri-libc/source/stdio/vscanf.c | 44 - contrib/kolibri-libc/source/stdio/vsnprintf.c | 6 - contrib/kolibri-libc/source/stdio/vsscanf.c | 32 - .../kolibri-libc/source/stdlib/___chkstk_ms.c | 1 - contrib/kolibri-libc/source/stdlib/abs.c | 6 - contrib/kolibri-libc/source/stdlib/atoi.c | 21 - contrib/kolibri-libc/source/stdlib/atol.c | 17 - contrib/kolibri-libc/source/stdlib/atoll.c | 17 - contrib/kolibri-libc/source/stdlib/calloc.c | 6 - contrib/kolibri-libc/source/stdlib/difftime.c | 6 - contrib/kolibri-libc/source/stdlib/div.c | 6 - contrib/kolibri-libc/source/stdlib/exit.c | 12 - contrib/kolibri-libc/source/stdlib/free.c | 6 - contrib/kolibri-libc/source/stdlib/itoa.c | 42 - contrib/kolibri-libc/source/stdlib/labs.c | 6 - contrib/kolibri-libc/source/stdlib/ldiv.c | 6 - contrib/kolibri-libc/source/stdlib/libtcc1.c | 763 -------------- contrib/kolibri-libc/source/stdlib/llabs.c | 6 - contrib/kolibri-libc/source/stdlib/lldiv.c | 6 - .../kolibri-libc/source/stdlib/localtime.c | 32 - contrib/kolibri-libc/source/stdlib/malloc.c | 6 - contrib/kolibri-libc/source/stdlib/mktime.c | 23 - contrib/kolibri-libc/source/stdlib/realloc.c | 6 - contrib/kolibri-libc/source/stdlib/time.c | 9 - contrib/kolibri-libc/source/string/memccpy.c | 14 - contrib/kolibri-libc/source/string/memchr.c | 24 - contrib/kolibri-libc/source/string/memcmp.c | 26 - contrib/kolibri-libc/source/string/memcpy.c | 20 - contrib/kolibri-libc/source/string/memmove.c | 33 - contrib/kolibri-libc/source/string/memset.c | 20 - contrib/kolibri-libc/source/string/strcat.c | 27 - contrib/kolibri-libc/source/string/strchr.c | 20 - contrib/kolibri-libc/source/string/strcmp.c | 13 - contrib/kolibri-libc/source/string/strcoll.c | 13 - contrib/kolibri-libc/source/string/strcpy.c | 19 - contrib/kolibri-libc/source/string/strcspn.c | 30 - contrib/kolibri-libc/source/string/strdup.c | 10 - contrib/kolibri-libc/source/string/strerror.c | 82 -- contrib/kolibri-libc/source/string/strlen.c | 19 - contrib/kolibri-libc/source/string/strncat.c | 29 - contrib/kolibri-libc/source/string/strncmp.c | 26 - contrib/kolibri-libc/source/string/strncpy.c | 29 - contrib/kolibri-libc/source/string/strpbrk.c | 30 - contrib/kolibri-libc/source/string/strrchr.c | 27 - contrib/kolibri-libc/source/string/strrev.c | 15 - contrib/kolibri-libc/source/string/strspn.c | 37 - contrib/kolibri-libc/source/string/strstr.c | 34 - contrib/kolibri-libc/source/string/strtok.c | 30 - contrib/kolibri-libc/source/string/strxfrm.c | 26 - contrib/kolibri-libc/source/sys/closedir.c | 14 - contrib/kolibri-libc/source/sys/opendir.c | 53 - contrib/kolibri-libc/source/sys/readdir.c | 14 - contrib/kolibri-libc/source/sys/rewinddir.c | 9 - contrib/kolibri-libc/source/sys/seekdir.c | 12 - contrib/kolibri-libc/source/sys/telldir.c | 12 - contrib/kolibri-libc/static.lds | 113 -- 167 files changed, 7631 deletions(-) delete mode 100644 contrib/kolibri-libc/compile_flags.txt delete mode 100755 contrib/kolibri-libc/linuxtools/clink delete mode 100644 contrib/kolibri-libc/linuxtools/kgcc delete mode 100644 contrib/kolibri-libc/linuxtools/kld delete mode 100755 contrib/kolibri-libc/linuxtools/mkexp delete mode 100755 contrib/kolibri-libc/linuxtools/mkexp.c delete mode 100755 contrib/kolibri-libc/linuxtools/mklib delete mode 100644 contrib/kolibri-libc/linuxtools/mklib.c delete mode 100644 contrib/kolibri-libc/loader/__lib__.asm delete mode 100644 contrib/kolibri-libc/loader/__lib__.inc delete mode 100755 contrib/kolibri-libc/loader/build.sh delete mode 100644 contrib/kolibri-libc/loader/symbols.txt delete mode 100644 contrib/kolibri-libc/samples/Makefile delete mode 100644 contrib/kolibri-libc/samples/basic_gui.c delete mode 100644 contrib/kolibri-libc/source/Makefile delete mode 100644 contrib/kolibri-libc/source/Makefile.ktcc delete mode 100644 contrib/kolibri-libc/source/Makefile.shared delete mode 100644 contrib/kolibri-libc/source/crt/crt0.asm delete mode 100644 contrib/kolibri-libc/source/ctype/is.c delete mode 100644 contrib/kolibri-libc/source/include/ctype.h delete mode 100644 contrib/kolibri-libc/source/include/errno.h delete mode 100644 contrib/kolibri-libc/source/include/float.h delete mode 100644 contrib/kolibri-libc/source/include/ksys.h delete mode 100644 contrib/kolibri-libc/source/include/limits.h delete mode 100644 contrib/kolibri-libc/source/include/math.h delete mode 100644 contrib/kolibri-libc/source/include/setjmp.h delete mode 100644 contrib/kolibri-libc/source/include/shell_api.h delete mode 100644 contrib/kolibri-libc/source/include/stdarg.h delete mode 100644 contrib/kolibri-libc/source/include/stdbool.h delete mode 100644 contrib/kolibri-libc/source/include/stddef.h delete mode 100644 contrib/kolibri-libc/source/include/stdint.h delete mode 100644 contrib/kolibri-libc/source/include/stdio.h delete mode 100644 contrib/kolibri-libc/source/include/stdlib.h delete mode 100644 contrib/kolibri-libc/source/include/string.h delete mode 100644 contrib/kolibri-libc/source/include/sys/dirent.h delete mode 100644 contrib/kolibri-libc/source/include/sys/socket.h delete mode 100644 contrib/kolibri-libc/source/include/time.h delete mode 100644 contrib/kolibri-libc/source/math/acos.s delete mode 100644 contrib/kolibri-libc/source/math/acosh.c delete mode 100644 contrib/kolibri-libc/source/math/asin.s delete mode 100644 contrib/kolibri-libc/source/math/asinh.c delete mode 100644 contrib/kolibri-libc/source/math/atan.s delete mode 100644 contrib/kolibri-libc/source/math/atan2.s delete mode 100644 contrib/kolibri-libc/source/math/atanh.c delete mode 100644 contrib/kolibri-libc/source/math/ceil.s delete mode 100644 contrib/kolibri-libc/source/math/cos.s delete mode 100644 contrib/kolibri-libc/source/math/cosh.c delete mode 100644 contrib/kolibri-libc/source/math/exp.s delete mode 100644 contrib/kolibri-libc/source/math/fabs.s delete mode 100644 contrib/kolibri-libc/source/math/floor.s delete mode 100644 contrib/kolibri-libc/source/math/fmod.s delete mode 100644 contrib/kolibri-libc/source/math/frexp.c delete mode 100644 contrib/kolibri-libc/source/math/hypot.c delete mode 100644 contrib/kolibri-libc/source/math/ldexp.c delete mode 100644 contrib/kolibri-libc/source/math/libc/asm.h delete mode 100644 contrib/kolibri-libc/source/math/log.s delete mode 100644 contrib/kolibri-libc/source/math/modf.s delete mode 100644 contrib/kolibri-libc/source/math/modfl.s delete mode 100644 contrib/kolibri-libc/source/math/pow.s delete mode 100644 contrib/kolibri-libc/source/math/pow10.s delete mode 100644 contrib/kolibri-libc/source/math/pow2.s delete mode 100644 contrib/kolibri-libc/source/math/sin.s delete mode 100644 contrib/kolibri-libc/source/math/sinh.c delete mode 100644 contrib/kolibri-libc/source/math/sqrt.s delete mode 100644 contrib/kolibri-libc/source/math/tan.s delete mode 100644 contrib/kolibri-libc/source/math/tanh.c delete mode 100644 contrib/kolibri-libc/source/setjmp/longjmp.s delete mode 100644 contrib/kolibri-libc/source/setjmp/setjmp.s delete mode 100644 contrib/kolibri-libc/source/stdio/clearerr.c delete mode 100644 contrib/kolibri-libc/source/stdio/conio.c delete mode 100644 contrib/kolibri-libc/source/stdio/conio.h delete mode 100644 contrib/kolibri-libc/source/stdio/debug_printf.c delete mode 100644 contrib/kolibri-libc/source/stdio/fclose.c delete mode 100644 contrib/kolibri-libc/source/stdio/feof.c delete mode 100644 contrib/kolibri-libc/source/stdio/ferror.c delete mode 100644 contrib/kolibri-libc/source/stdio/fflush.c delete mode 100644 contrib/kolibri-libc/source/stdio/fgetc.c delete mode 100644 contrib/kolibri-libc/source/stdio/fgetpos.c delete mode 100644 contrib/kolibri-libc/source/stdio/fgets.c delete mode 100644 contrib/kolibri-libc/source/stdio/fopen.c delete mode 100644 contrib/kolibri-libc/source/stdio/format_print.c delete mode 100644 contrib/kolibri-libc/source/stdio/format_print.h delete mode 100644 contrib/kolibri-libc/source/stdio/format_scan.c delete mode 100644 contrib/kolibri-libc/source/stdio/format_scan.h delete mode 100644 contrib/kolibri-libc/source/stdio/fputc.c delete mode 100644 contrib/kolibri-libc/source/stdio/fputs.c delete mode 100644 contrib/kolibri-libc/source/stdio/fread.c delete mode 100644 contrib/kolibri-libc/source/stdio/freopen.c delete mode 100644 contrib/kolibri-libc/source/stdio/fscanf.c delete mode 100644 contrib/kolibri-libc/source/stdio/fseek.c delete mode 100644 contrib/kolibri-libc/source/stdio/fsetpos.c delete mode 100644 contrib/kolibri-libc/source/stdio/ftell.c delete mode 100644 contrib/kolibri-libc/source/stdio/fwrite.c delete mode 100644 contrib/kolibri-libc/source/stdio/getchar.c delete mode 100644 contrib/kolibri-libc/source/stdio/gets.c delete mode 100644 contrib/kolibri-libc/source/stdio/perror.c delete mode 100644 contrib/kolibri-libc/source/stdio/printf.c delete mode 100644 contrib/kolibri-libc/source/stdio/puts.c delete mode 100644 contrib/kolibri-libc/source/stdio/remove.c delete mode 100644 contrib/kolibri-libc/source/stdio/rename.c delete mode 100644 contrib/kolibri-libc/source/stdio/rewind.c delete mode 100644 contrib/kolibri-libc/source/stdio/scanf.c delete mode 100644 contrib/kolibri-libc/source/stdio/setbuf.c delete mode 100644 contrib/kolibri-libc/source/stdio/setvbuf.c delete mode 100644 contrib/kolibri-libc/source/stdio/snprintf.c delete mode 100644 contrib/kolibri-libc/source/stdio/sprintf.c delete mode 100644 contrib/kolibri-libc/source/stdio/sscanf.c delete mode 100644 contrib/kolibri-libc/source/stdio/tmpfile.c delete mode 100644 contrib/kolibri-libc/source/stdio/tmpnam.c delete mode 100644 contrib/kolibri-libc/source/stdio/vfscanf.c delete mode 100644 contrib/kolibri-libc/source/stdio/vprintf.c delete mode 100644 contrib/kolibri-libc/source/stdio/vscanf.c delete mode 100644 contrib/kolibri-libc/source/stdio/vsnprintf.c delete mode 100644 contrib/kolibri-libc/source/stdio/vsscanf.c delete mode 100644 contrib/kolibri-libc/source/stdlib/___chkstk_ms.c delete mode 100644 contrib/kolibri-libc/source/stdlib/abs.c delete mode 100644 contrib/kolibri-libc/source/stdlib/atoi.c delete mode 100644 contrib/kolibri-libc/source/stdlib/atol.c delete mode 100644 contrib/kolibri-libc/source/stdlib/atoll.c delete mode 100644 contrib/kolibri-libc/source/stdlib/calloc.c delete mode 100644 contrib/kolibri-libc/source/stdlib/difftime.c delete mode 100644 contrib/kolibri-libc/source/stdlib/div.c delete mode 100644 contrib/kolibri-libc/source/stdlib/exit.c delete mode 100644 contrib/kolibri-libc/source/stdlib/free.c delete mode 100644 contrib/kolibri-libc/source/stdlib/itoa.c delete mode 100644 contrib/kolibri-libc/source/stdlib/labs.c delete mode 100644 contrib/kolibri-libc/source/stdlib/ldiv.c delete mode 100644 contrib/kolibri-libc/source/stdlib/libtcc1.c delete mode 100644 contrib/kolibri-libc/source/stdlib/llabs.c delete mode 100644 contrib/kolibri-libc/source/stdlib/lldiv.c delete mode 100644 contrib/kolibri-libc/source/stdlib/localtime.c delete mode 100644 contrib/kolibri-libc/source/stdlib/malloc.c delete mode 100644 contrib/kolibri-libc/source/stdlib/mktime.c delete mode 100644 contrib/kolibri-libc/source/stdlib/realloc.c delete mode 100644 contrib/kolibri-libc/source/stdlib/time.c delete mode 100644 contrib/kolibri-libc/source/string/memccpy.c delete mode 100644 contrib/kolibri-libc/source/string/memchr.c delete mode 100644 contrib/kolibri-libc/source/string/memcmp.c delete mode 100644 contrib/kolibri-libc/source/string/memcpy.c delete mode 100644 contrib/kolibri-libc/source/string/memmove.c delete mode 100644 contrib/kolibri-libc/source/string/memset.c delete mode 100644 contrib/kolibri-libc/source/string/strcat.c delete mode 100644 contrib/kolibri-libc/source/string/strchr.c delete mode 100644 contrib/kolibri-libc/source/string/strcmp.c delete mode 100644 contrib/kolibri-libc/source/string/strcoll.c delete mode 100644 contrib/kolibri-libc/source/string/strcpy.c delete mode 100644 contrib/kolibri-libc/source/string/strcspn.c delete mode 100644 contrib/kolibri-libc/source/string/strdup.c delete mode 100644 contrib/kolibri-libc/source/string/strerror.c delete mode 100644 contrib/kolibri-libc/source/string/strlen.c delete mode 100644 contrib/kolibri-libc/source/string/strncat.c delete mode 100644 contrib/kolibri-libc/source/string/strncmp.c delete mode 100644 contrib/kolibri-libc/source/string/strncpy.c delete mode 100644 contrib/kolibri-libc/source/string/strpbrk.c delete mode 100644 contrib/kolibri-libc/source/string/strrchr.c delete mode 100644 contrib/kolibri-libc/source/string/strrev.c delete mode 100644 contrib/kolibri-libc/source/string/strspn.c delete mode 100644 contrib/kolibri-libc/source/string/strstr.c delete mode 100644 contrib/kolibri-libc/source/string/strtok.c delete mode 100644 contrib/kolibri-libc/source/string/strxfrm.c delete mode 100644 contrib/kolibri-libc/source/sys/closedir.c delete mode 100644 contrib/kolibri-libc/source/sys/opendir.c delete mode 100644 contrib/kolibri-libc/source/sys/readdir.c delete mode 100644 contrib/kolibri-libc/source/sys/rewinddir.c delete mode 100644 contrib/kolibri-libc/source/sys/seekdir.c delete mode 100644 contrib/kolibri-libc/source/sys/telldir.c delete mode 100644 contrib/kolibri-libc/static.lds diff --git a/contrib/kolibri-libc/compile_flags.txt b/contrib/kolibri-libc/compile_flags.txt deleted file mode 100644 index 78f5f15b60..0000000000 --- a/contrib/kolibri-libc/compile_flags.txt +++ /dev/null @@ -1,2 +0,0 @@ --I -source/include/ diff --git a/contrib/kolibri-libc/linuxtools/clink b/contrib/kolibri-libc/linuxtools/clink deleted file mode 100755 index 89393a4e622b25475115612e7192bbbd37d00682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23292 zcmY(r2UJtb7cYELNP&=q5I8}K3B5`vLMUqJp^DON1PD!fKm=<72^|eV5D^s>6%{q0 zBKA-XR`gneHDay?;VN>uh$7^Rf8Tp+eXNx;Gkf;z+4Gy(d(WA34!iwA{GkvC@PGfH zz)IkEsb@9)f22Rx|7HK*g$~dFDDbD|H?P|NtNERw|DV#IR2loH_yB*?B z)t@Vq{{K(^PaX9I`A-i2Ckgd@859*BO9@A7>i(uY^@RNI7poFjp(;aFzxjEJa`*ok z*YELYQqAeOtkEo8HQ=eMi8iuh{tFFIQzHV}00O6GK?gFu4~ytX5(I!-WcDKTVH&X@ zl1|p1<{1D01YisL39e9%qxWG!7BZn# z)jhzBeJ4;QN+tmUWHJ8e^lJC@1^dkOL>Ff@mK`d4OOag>&BYG4O!NgcpP#eLQPmNQ zfRhLg8Ok9@Z4f<7_Hop6Sn6V0it#kvi*%6+G;P3Mq!Xw)%Jg9exPkXIU09_^I_QrK z^HJ4;%aKuF)I;nj6S)CA3PUDkO3LuaG|PtbC^H)PiFT$hvlq)-c24Wp0!)u(b#BFe7 z3%tVq+w#d>P>NySt(UDTOh8`k{MRe~1*odP8U=h=OfAo4$FKSK3KU$6)Ob?AHUqjE z{1xdTAzMh}_HPUT3q=|QVAZC8+L9?b6Le1SfPZ(94)=lpLwkRM z8qYO6GFxA$tE~oIq*TO-9566ICE3RYY&ia6#s4tDpMdO*{2wM7r(mfPm28jGFN(me z(q631yGl@We(!Zr>BhrgYUhhfU?Iv2F?~S-s#MW53V08~F25*NjqL|`s@nConzQmq2oxEAA6&*a%#3{mZhrKlRMS!F4xZd^AEm;d30^&Flm2@GM(eHz zYz0eOJl#$UsE`_=N|Dl*fM)P%%&=-|6Ly1`ORCJ^cMx3Rs>+Br9|84fVOSTb(bk{f z_n^{4n$LUfm!iJAf!ZoeO6_T2PV(MxJ(i#s92sPlZbTvTs*(9%xCQd6U|Z>1%U$)Q zYNhDgU}%Pin`Af|a>{R`b-)HmFX9%cx#lHO1(Uk?)HGN=c*t{mLOdP~{>NPPKfzXD z(z)9!m|$NoSh4$E#P8+#p{J`n3%nT_A2!AWtHE1{rLQvCs*an^p|`G}pYb>Wk`?js zzGsyi4U^*Y3li7`@mUGvSL@&1T9TifoT0`}PGE&47bKM?AI(vAXAuezSviHtdIiau znc^px-(<0^3sP1ldR;0&sm$Y>WMQUET#q2K|Cf^|v3UbmlBK25Xa=BUm^mixaZz*1pj?2ID z=qk2jIC)cUeBYbNcdvIRCl#dUWXGrd)e)aq9M3LHFhXQzlzO6y$OV(<>?V(;#+xL* z#iVabULt*yb)D6c08eLo=dg=CIuc$$4?E?gL=_ahTIXRJZ}WJ0L2L%(pqig7HB#3RY*f`kttJvT3-lX|-2eInk*M`UZMuZ9I?@AHb- z!b-T}(zi4^CO6km8ZXsvF(}ST%*l+h9&KZ6Xcc^3vzx>fJ2u*NL0cxWvTd z)b#AOOp|1tc$T(hL8d)AHzBFI*f|BvdY`vmcZ*3n>+YE%4a>HU%lYb9CojIC&BWh@ zTNct&qy9lihu8^5$}ytvIBOgR;#>-JeqBUXg}s3l_c3deA7iOIbL zm)qLc`=Q;LwpWUfy0*-VgbTTux}xVvXY40QS|?q)1ezz>jz{Z?b&nnG0(ARYj~ov1Slf6A8OREb6+@rHj}uReSP%`J3)-<_ zUERy1>zT=rV6fNOMZ~eYBY0q_V$%J~?_SAFZq0k2GsBzvwqz8`1rEnt+?d;^O8_#1lq018r9wdpG z86z-lX#Nl!6WwiZn$QbnK;}u&&!OBiEm5^^A zk$5-S?gG;?&2~@^7Um7B*_zf2S>-Ykxf{X?3+wwIvUcZVie|>hGpSiQ*~jC7ai12V z=1rFv&eswm#HM=H#n$|%R`Iancce_<=#oV*WFoOq=cGx-D$S1^Z=Z7Q%#S6#VHq0R zcWZR$LN)CIBJ^Z!v@K_M^iLorjPAgEmZrdv8a^%^h=`^8*I^5x1+evBbG0`Ch2>^k zCtw3?H*j)%nFK(X$2c;fKW{rW2C-~$(;FP zCej)N%q$)=&3!b$cuk8nuFPO_nB(4Mtg46jJ22NHJ!8+%@s=4#%tt6}dyK2CX7n4T zJ_@$d)z{R~>o1sr_mK#3*s(96Fz2mqTSNcSOI#BS^IN+*?ASxEd$3@iAUzr8GmPOH zh^wKh*kc3k`M7pq@bA9EIK9_!7w|BqHn}&f>fX}S`6OJ}vEbJ9jEUkajs5UevEQxNb1W6*UgPjsw#>7a) zO3+^ELPcbPR3!+}C&3();1EZ%#!(46DPc)s1n8`s6qA`?QUwT8@wq5LT#brP3A!o~ zDn^i|lyd1}5EOxkOeV%%33`xJd`i$$sj1=vS183QHgKg9bWnA^N(s`%s@|2Lmr}(o z1-(^Tcu)~O%H^Q%pLTwK+WG%!7x1SYLkR}{X&3aTU9j?h+Jq><&_CLQ{n2K%N*g~h z*q`=4ZPqBkwSS~W{E-^@M{3j`snJR>=8x3aKT_lVNL{A{*Z+~a;g8gfN|o+naMK^; z;*}ut4{`~AkV{m8`wdC3B&7?8|I?23r(N=&b}32_F)6l;umn^8Xp^QSLsZyo{U7ey ze{fI#gF8_PZvKONhEg?4OfXXks%D9lr37_Uv&2+_x=Ph7xq#V9P&G{uPzkCgX(&et z<|+oY!)kBRnn5d zZGRBjt^{}dL1?FP%kTNxrF32D%`q!~_b<-qXU>dL>F`fr<>O6^$}vW%d@4LLq+0C@ z<^rQy^Y)tuonH|vrj$Cpm)x}woG07=S`NmAJR|J6B*Wr zo0{5sZv7BK0W-T3Qu#!&_3!P_`MYwhVeiT)h5uIfPY4+j#^_(2*kAUnCopQQE9>rC z=%~UW3Ln~a=e4p_oQAuC;{MPuK7`vRwwhfLR0gf|o0=M3#=p5!A(k)U%9LDVf9$K5 zSCoMB47PpBY=`ozcdrap9Xf;V<-S)c9VJWZHS{x`3cQoq5=jC!dNLqq6zZa2s!!sP z&*9OH3ex7Dm+!7N1+T+IxRuV)aiwp*J_~3bN8-gOy$Ovg(;|7!i^Y`5zb++Vue|6M zYlk*65fe|%`5#Z>bwZb~OA$BszU66=hzsNR8l?BXF-l-#E41kK>w9Hauhc45A^5W6 zCZwsJ-CjMOcZ@o5wfrgLRYV0YC2Oec!xReAW8|gg!SYDv%PeQd8hbZQzEECWSBb)Y zQy=X%%hAJJ1+e%-o|CT{&4@>(8>$h~J0)7rrw;v6DlHE7BV0%?JxL>r+jFloP3+e# zXl$+3(RSHRL+`9Mc9x`KoycbTt`c$tn=BDy<#M-we&NMpe*`P2=Q8P}oF3NGBiesR zsI4a|oeyV;AoCWzbEFD>M_LG|@^^aYoX>ZwQiBV)TVVx=B9r~$IKCb3Txnicji1^1 zEBtTcf{Qx13u?xe03>~gV+vJ|oiKmTy5IftWB5#Keb?6J+0QC0OS6U*=l5 z<>Kp0f6%W5N=?<&V$wX*@aA$>Sz4O?Y^cfY#L?u3-D=c+p!cV7dvkWM7 zWP0XXvdEpIoB|87(ItW=!zsbil4MMNQ`ZtsvbDfBo9MayoWoO5R_|H#y{K6^i+;_~ z5=a3o_Gg}So?BQkhiG#XF1Sn)1t~#cQ#3{Iz8Zsx?+Q=WBgABzrP>66K;xnlfa1Y__}*)iXo&!6RbZ-p<@HJ>{2JBm;Nh?!b$0!udXzSnt<_*XL2V z+Lf!XXX(Gkw!Jp#4Tl&^yk8-Dhu;3W79x4hnVux%pboySoVfEVfYzpuGLzg}7Aj#g zT+vG~hT?Oqkr1{R-{UPv5neRxA&S}#$mMw=QhU0&n_EP?L2Gkh7tADt`O!b9sdDYdL&5!e%##rK8p?eki*;6<3leAs6dp7&Z7?qGL7)6lRzoxc_F5^W7 zKTRA-%RvQhy?fPd_Md1T@LWcN&Cx0#CU@08sR2r~#V5b%7C?!=2IQc}cNJ1b>_|qX z3b-4Wiqf9iTl7yK9%}M8s+cGCuUsbO8ABR1CGdwNTUa5lR}1FU41JS8`S&ql-INI& z8n<&&seIB`!@JHuN6_7YhCNx8Ewz_Uyfz@v{6(SCM8khbrh|f^;Dr5a{M8}&9P|_T z^YVrs_{y0*YlUOTqmKdLVK?*xKX>ZD+s8Zn#TEUl!XH>4KG z|N1EivIKP zH6XT2LO;t13^VH`7~Wp4*0CIEhF;&Y$&q!?`^yDln2Vi)H@;C*VB&FR{20C7zR=Wl zs^joTF88KL8lCj$@D3hjp0k%fu2hgxUz)$6`274vF)tB{k`0mn~^|30h` zfrVtro&m+*&rPss!@6A-&SY%_@tH!k!DN~v|M|%LM#mmj-~cs!RQU?dxH^`z;cuIV zdkiTO7EdQw@ni#G_2&xac+H&=LL-&ZA`!w4ZX_FwJP>*XWql(EMPg`njQ^*0(MrLJ z%uhh4z^7s8Y%iRzg-iGA4NC`|pwYxtFj}~p5TD%vA(h+IIHSQ}N z2_(&|`FoPPg<3W!mMLI8mj2dm+|P-BpR~(hB4r!r>NIa8$_k@2>M_Ea48dN+&)-xoWeDgt&ynGse+~RLW7bX^} ze?nqvFY-ZOxHx=mE#&S`!BYU}SpGq&WIsb`#%?AJN%mt z*3hro$a6}Vn#_$a1}Ld9P&>)>9)nRl+oI81Bn}<^pLQA9Oi>**33*&Deo`Ce zc9*37c)WDqfJn{V`vhz15UOObOYKB`kJ#w;V3)p`>O@cXaXxjwV}mF8^MD0me=k1o zBz=V(x*hmB5MWjF%C?7LygF*;uwH=d`5wqfeI?`-oX`v9C)+Z8q& zYYAS7OuOv*O!5SH^Nmt@eClN*@s$fwYZ?BVl`&4^?daQYGPwvQHM}l`*)~cxr{0?o z8VWQhkUCgYI(diwsXit2Amo~BDoTpKv>)5()+gj71XD8~^+P`#??0kIhQxmul#^G2I@eCTU0m-%ub6r`-As|P>{=`%(NYc zmzzUM&J`t8;BG-WVJKf8-)3tEEwB+za5_IuLCQ_XhsthC0>g}EhQ^-`0e!IIfuXgx z{n@++t);w6Y%>caWa@U9#5Cf_-UqijO%oYY4csXt;f12_767;wk?TYM=~@$ZD-hw~ z?Hb$lPmnoFNV8o+uE&h-__9<*EP8y?-fG7eBwHAW{yBJvZrj1TX}=_sO~Uj`rZOF9 zCin=J`U9E@le zCqmk8#L9OIUy-PV%_39u6Zc@;0lKy>BpLniPY7g`CjL+j*RkD9`BnL$BjxrE{=ZVHwHQ6R_>2MSHiR9wSfv z0B}j7S4hf)ntsL=zEkb}YN+Y@419A97J6W0SCY@m4KSytR;Cbel4EDhsfK)Ye6CIF z6@5Dyd^L!MTD8tcA%>4@lQiN@Us2m()WGUcf2_sT_W0M7hMMeF^;YRIL$T8>EqqsK z({PXbdul5g)ub*+saZk2+Hs|_wS5qEbmj9_4FKv~tL)#4-vYpfE+F>woR%@Rk;u3H zPR&0^|NMm2L#h}#%c>uMO?8)xpSy|rTN}jI&w@XTd&YyHwSsU{p|i`kyCfik zm*cByV;zUPxrY4kI!0`r^Q4|IT&paoqX>_wFdL6kQduyx1)pj_i@q)hq@B5BU`ef_ zr%22#oyr>VEBLZnKSet9gAb}rA-H^DEHd_x*(KNeH;oeV=tB*c{GZ=6BJ6ED(tWf4 z)J<&ifAoY)uHl!a#aQ}|{ROU7;iy_nP9wKcKL}G%{yYK-jhiIQ;1Y-6* zgM969rQx7%bp>b3I<%sZ-tiDuiq6u$i&+(ZqM*qST+PlCx6bHdEcM(3=$;1C0xSzU zkcsD*w)D3fF9@=+lkL`P#uH%bDQJ=Vr_wP6T(|Ap-~7C@#6n5yv(pMgW{lM8^yvwn zr2uj^pW{!nI(r?m!D&1b`kpGPdfM{+*9z{WX^ocT3E%Q-A>XjeD&_C?uT+~5vWd@C zQ%~=Q4+XW;Pu10syic;CHW2I;i=HK=&xo?3zg$RjGY^#Hu90h$BWUaWs|7hol+Z*)6H~$Q@N7Y z!lRtpDOr3@@t7Q09FsUroOE~G2f&!kBH$E#n_2r%)yZ}KD|pRUNf3|Tev-z>)Kvbd znIOx!zuQu}Jmsbql(&p7H`TK@IrrX4MfyN#)J56t^NQYe1F!2jIke;m-p|y+LNt3xG$-eJ${R%$qEl_(x;R#&G4vB; zW8Zq=)a?ZEaBO%_lmcSX&j~)3jayl!@a>YC|2t0#7aiN-|6T2@Q|o)_q^K_H2J#vS zGOHiVyxv!87d2u6ItZ$^N_upQYcvgF)&E;RQMt|q?>2Q#^jC5SU(N9ND!q=kL6;?_fi6Bp`&K+}n#1?v)FIoEQT*DOI=*zjHqwBWA zX1h19?H(fFdi=YXcgD*jbvQrX?%e8Z_%Cjk=0MyuF0NNY+);R9X>4x_?ztu2PhpBi z3U(<-#{giRuBHdsvyJR{=%|NKqX{Ez)Wwny1cm6nJrZiUN&G0tuuaAXxVo5Hygx%N zd!wMfrR7(L)!Pnl1JbvV4rOZ)Lgzg&&>HHrL|@>p4G>FGj)K9%gA`N z?TuqRE$Gk@o~3pqs=8kA@PYbK@v@pX2HTH3_gEtyQqubB7X<#<=qp=Jm)_v3E}|b`wwg@EcTVd z6Wq6O@gcakr{i^7RM6JgkO~j@mTP{yNi~=ePp(*Hc+_^5{p~v%on^u|BRM27tU8*| z`>jLEzu)O#v>?u@)0Uan+HwIWmJz)#JZf2R8%CdMZ*PsQY8ModaXZ?B4pwNRp24V) zM|_jB+z#m-nKF!I)6smV{^J4aljY<$TS&4lLH2}Vb{;|T;C;vd z8A7pebE9}wpGwR+MZn1^@uyJDIV{+FNLTZl8p9`7C%35?-l-Q2R5urG*+B%x)6j#?v5(wi9q)9*ohE8FzA>K(%Vw z9w+TiJ_TIM2KA!FgX1B%9P!1hV?jI|09#Dt5NE%bbD#X=h?7J58&WW{6~l7y4L zZNu;XeofpCsoeiW`*ZgR)6FH1uu6AdDh;;##S_ZB;N-x503cAIhG)0!3z@pSUo1FG zv~wtnGOGX_^rXUv*}d+F=Tadd#TY+0}$6DL8)q@G$gVpM9<2jayq< z?w-ewy*hSGwesq39=mW%z@vF{_FW+yfhAa&?S}A6R9=gGniV~)CE=-0VH_I_sAeLZ z+_WC~<0!8luv!bXyw%q%U@FFBd0e>Y*{Xe?>RSxDYHuCA)Jn3D3yunAg*zPQ=rF0G z5+%16SQ~y=*!ZSbMrTW^U|SZ1g5ff`&r!2hU7n7~fv7F`X{cK+_6@dJN-37Ko@s4v zX@#=}Vb|)m{AOI=x}wfL)&Y9Ja?3PSz9vj)CbaNYXhmv1=O6K$6zFV8Ju(}2q|{2z zbr7^)VkZwms_M3s3vJ}St(agNA>KAIgL%FPqLZUHWZ2W*(+ZimhAr=)!S^2a%{x2@ zD@K7yhxPVCkHT2KPJ1g^KG7{^hkcP%0v(+E$DuuYd~G&yH5FAi4*8;kpHmJWny%6* z7YSiH7CN1;8+;>6WvEJ{I(NstSt6fkPr{*9SaQ1#`B1S6=xXwUMI%0$9N=ZL4@P&U|F zqAj{>%nPN^Z^5g~!eHT`{nvx&nyYO_t)M`(w z7k8p&YAzX(?FBUlYa&smHI67&0;;^NNZK59tvSI8%iGq`tgH$uiI`Onsv&qG4G3`2 z^>l|2?+t5%Wb?9Mlz}Qu`q<5|?14@^z5ZIY8UjoL)fnICVc!qjtt5AEHuHYZ+W|8j zgkV-hSEH-lf#Ohv&jeugaM{Q_3b9roX5P(C9P>hWs!#O&T~Sq3*Ft?!QMJE{HDHAo z%rw0)lK9Y`H^oSr*cJPn)zK&Rlxt#Indg4^8>oM%1OUzWreM`}$H(ik(~WWyG)@#^ zUg`CzCVvzb2RC+l&-@kSo@{QSVtlK+DpR9NN_nq(lZa?RZ>-I14-2dCXSS{NxEX!?y9)~Py@1GX=cz^k?G3`^MIMEDg#R8m2 zh2s;uxyXaSby#xRz)xJThl$Ou)=ejGB+kPCvgR(STrsJL8`{TiQ5sxSemDSzi`%II0);IPYrgO}X?>n?l$*#hW zm0HK|`yV)br*|c$r%)8@#dDs5Y_TI<2oN`ADjOS|vH3=m(7w}`;vSRYp z?G!gUd9Hc@RxEv4{rZ0O=^{%(1cf}fty<1A_+I?Im=eYnBen@7Rph>er<5~QX;m>A z-WA9-TgheeHIlSq$0{Q8kYM;S;$UIOv?ax;p@@8}X!xkyS6CEY)JG|fvaQ5cTA{zu zjeyF$E#!o9xtF|Rs3Of4+ac?zP;OxnQQtVwtz?0Ly8L;eRmBj@ZB*mULb-K8u8C?C zriJ9Qf&j_*7HlD@>awtBVp;>V7Gg0_EVz213}d z#_ilmo|~ZD@FB0|HV<^<;Y|!I<-QVpLk{ov5?a&jvm=KQM)x)Vcq%;#$4cv-mVV9# z+oK~%E|in_u!k8sCfY>wH=9-20Dx0jiky;tjniUFnGtaY_i&Vh-p+m< z7qW0BNTGH~)2jQ(cR4^!hOPwg2n5)(THX1>-v4oGGWX8~D>1^i5=ou8ad2 zf);f*%bH!P4bl7TT`|mE{Irl!8y>*OAn2?e_VosAV=u4AZyBqA>g+J=l7+wAIe%j( zP1IWc;`~l!Y7By6JFlA{F0neh*>l;ym8>B1l@J+NruG$rs!*S}<3_=CeQ8Q>N{=8< z8J|ke=q}HdlQ=Tj1uHV15CbLHwK3djdp zI4MGzVYH2Gq2KiZcr#tB>nSesPs$ic{(xcR;oJ5mTTN)`ez=x=5?52#TMl_xcQrX= zxIyiml`{EPU!5{Xs{%jqy2JEBU&)&vMZW{Zt0KP#ML=RJkx|9YL{iE{PZg{hZ*zTN zQMQ2T<`!1T&Qvcl>3FPHw%4YsY36kvq*})0GEW%|J_evRC9nE zBrf;Vrl;zKg|Sa5lUsgnsnhT$BXyo`;;3RAvyX{~dV0Uajt`gF7SXmmT{27Mw+Jvs z8wbzZ(#Q)I%%^R+{1%2eHVr9RQ!e9n{?@pC=(jxuXR}4 zioa=3ix(ET;WHIo8;|u_rjaM3j;fXONNi{$+YDJqI?8^a20LSwcxPjyDd#Uc9PW6r zgggM1^{z`1)*HmJquA0m&Pbi~#5!$XUc2dyR1G&RLa(W3^9DCbnmRgsskjG!YTGF6 zZ1a}b!MF{!Ykdj#KI9bPp*Qo?R~*SJMwRm{xOuDd^D0!Pb2;|W`n#=73=7|jQnj^f z0LA3%G`vw!Ol37}+_brarxhOq-Ql#(x*pXCBb=3cd1pnhZxO^uuAzzRpRSt%in-U< zZA3$X2vW1`bs}&!5s|Cf01@(_xkqPmw)62g?U=ljbp!~!#LEA4AE%!qJ+&qs1ILp_ z1u;QMnz7eL(VS~s~Q3DHATj19)^PtR!+_812T9#K*?Rwm?h4>{vHt7M0`UEqR~ii^8^zWho;; zrsmx%+N{p2eS!#{IrQE(%O&W=y)lA)-Y8nia9It_HA_uz5{YUNXmmuNhALn+Rne|v zDl5FF_E$9jm|-{lXMeQnhL*xL>qWJAjb!=c1T7hI!aq)|^Zx~VF9|nU3jh;+)~CcY z$P&1VZYJ)%K+AeABk*$uqnArmuEmNvTM3R@IWDXL%KZ$7^EnI!FQj#PO@@{;0f&jo zoYH5NbD9U+Tu6`ioqne6fcNx9MMdDy0xhKDNn{2+IM#D=eDmb1&C1Cd+Ipa2DP0$t zss7bn9#Ifk&I|g4jzpUp>3tlBT*9BhlJ3JJi_hpge2_f#T@4_%@8M-mjhahPH%M&_ z;`vp@%oa`Y_8yt{YBRO7$GS%~2b_?FB3m76iV0S5>_GZn5yz-+d-}etbmiY7+KN&BKY!YoOZrj~jlP1Q`cUL7O)4-x@4w@?>T zq@$=jHT?{Aj2E)5E<~i-6li2=z0~T*4wn*BXH%NBkceJIiZWPVs4Wm(NU5tsvAoSo zS%QFs0nyzsRTS1Z8ny=ioBe%qfAVak0qODOWM$B40g~y42#Xjl6&@l2M6zm}0C8Xw zcg?r!47Wa(Q6I%*ppC_7WJxMu$CZHtG&OJJ%0LN|rHZFD1Kw56pCRZ&2N4GP`F(|@QESdky>)eVA-q;7>aBW z$w8*|k znv-Z4L*pQh0xcZ%zI)=+-x13oaU(WS=2vGRZg;B+#D}h>R{eU)RMSi#K2tjLy$XDZ zuNlz>q_4hqHwjGo%BMGzeIvyzui2@v&6&LE;3!)nE3$>5<4c;hw%XLj@M={b)cBy2 z$hd6Gps50+7nf`2UeRA?f0Ku80avY~sKmz`Q zT;Ah6Z<6YcMW;00Cpn&*8yh|wj~GQAAA90WIv;6ZV%$swOsqDsNagZ}>e0mlBCE=eUI7kQ`5o}H8=zR7+{BvOh$M(9b{mym6%dk+4y~`5 zVE6j?n?nA7bfg;nxZF}&Q-yrJ3T*^O)bz^^cE28vk9Y#Pw#utqQCby477vgw>ujtj z&t)9_zQJmI1I!fLrldO!L%ats`7ERzzt&dN>vMGPo&n2o8y^7ZL+g~&Pxvf&M(F1G z+$28c$|;dQiGWT7d2s8>vyH+rU)0af>n{vYA`R}ZPhM}PT3O1KKam7$ED>1VwL&;X zWa#c*|5UXa^%M3*7zU6dYkv0Qt(Sy^S4@6CI_BrnJLUPElRK%Nzgj^&p@YhGxes90 zPz;1)r`L^FuY>$PiP*VLf5n$UW2|=-ef)=aJ4vvLK9k2<<9UG|VNu zL5X$YUm}t_@iaxU0lI}?6zSgVwJN!T)}V=hR~>6n$e@>J#U{nRv+Aotwz*qS>NSU5 zVo7{;Q6k*Y$UPr5Sbhr;=yP}Y9j&*;Y^bfO3z3AVH$hxrh*OLiRJI(az z=8E-{z!1c1<6Z^+;!xDtlI}@`8^w6Vk!(`k5y}YYiAI^i{XLI779VpD)xh0C`NWQp zid@dV)H+Tg{ImEigGnS@dDKILyPMu^_3(%9F{4A3E_!Yz9m`7K>Pyi8xw@L{#%FCu;M`UnuM7x}IuC+!COO&?H3T{Cm@Wh?L5)6xjRvwQ8`S<7dI zS_3udlB;kT?v^6eb+p~_%wa3YAO#NN%0@QVSCOE7<^GQuk*#7)mnP!!qI0ess7$A$ z^#c0r#d}LRhOM~weFBbiwm(F&Wi)j)d`}NnI=(TP&qR+%y<3^}!zsT4vc5s1;Ad_Q zP&7zJikz#~mQp4>m$;)E!KLeXgv!|WcmQ;^k{@d9(Du^o0^sk};O@+YWL`qj%X+IFL4`0LZSD}36{OjKl&*ZrSLW#3_2 z@{_1)KEsj(37P%zb2DQD6Y1hoji~l`vbxokqnV~18J3hQZq!)w{%=P=vF)*ZruJj^ zLeL^90WsYL{3lt|ocN1p`H&M`=exX0Q#Y_y^LuU7a_<(Qj&4-$Bqyx8 zb|s{D5XDS@@1|#Qn)f}!b*nQ8=C5a6G(JqcJvW}Bgb%yf6A4J&XQVkqZ5SgmV4L2L z6{5vPpFSOS`)St5PRl3TJD9zhNyBrpXF{<$ue* zg4zsRP5%4WO^aW54yJ?%+7a1Q1WRD@wP{hMo|!Jhj#n&x zrQc(G4RN8^e{p1(q+#?uSn*MI`zy#4H>Q3?=#Ni!owdT7Gz-6X4xf1&rUkS;P@0j5 z^@uj8Tcuz-vR2<2T1Ub*kk{g`p7wDWB`veOdeF9wOdQ14E}>Z_Y8y4+mm$2dYk3+M zWDBB4{G0C=Hj{hEHqM0%bH$9!0@XO`LD{RcnOyP=;Rx1tTTqg()Pf(B2-K9#}`9QF2ip`gdS*O5`BeZojs#2q$EE3tw{jcFg zSsb8#mmk}B`^dtb=Txl3^pRL0UI-GvroFe@WK-ehzFIc0eQW$Ot2N){Y$Z?eM-~9= zs`0IaH@xP|w5u1A#~HZEw*0wMq+ix^unz{(Ms39+PxVAev@pjenV*S6tgb5#ET5@W zl~J0a1)`E@O|c7U3rDa;XYG{#XlNFBQ&=`W4gbq=5Csdna~jd}4h z0!oBe?e*Anp+C($G4+tXP0aU!s_HYrjxH14)sI$ftuT2|!dHr2xbCrce~R%cpLNKq zS{--aoCY!6fd7SIg%INRZET=IX{O7?rYGO0N=~-e?5pOt$Dnak^L-n$ts^C-JHU!| zy~qmH0>BpgeK39gT*QQeukYRIj^(K%FgvPFq-l+Gq6iop8LFu6p|N)ES)+WpQRwm& znx3_&1#=INHUcx0`6PD;Qut^=aenK#2dg54-3MLB{Uw0WJJGMSBGis~!Ru1Y4N>-! zzGNVFxv8aIZiEZesm*-Z8q$?cHMh3gP`hxzJoTcM5elLadlLb4sg4xS<(^WDi7XRy z9SXz#y2)&_hRJ*;c`5at)%cwGj~xJ}4%lYsXntK`LUzhEMlUt4IY-CsvH{3gl0m|Z z*yqF{^r;nKFaptYxcGF`?)kL^_6FElAkxY6j7v9+B}WTWsi>X_@u zz8eh1lGEc3aM1&Z-Q2~Ekxw1F`5p%A=Dw3wd5V&du)}K0w7*h9yfJ8B=~KFXqBgeW z2*N~WB8PRxnw!QJA;e?c8`62{{G1ERA(QSjC&{FE&c|ZHGbQt@fQ=~uxMStEPXxII@aNroyPSB5{gj?!x&?RXW}8WQdN-n^djbN*s)i6Mn5sl+{}qAn4$4dRRn_jc&5 zdZaiQFm7SXMcPbM@&)G4Z*Pij&y@%5Q*8>4KXEM5879}xuhqvO+fn{U=hp=95$ogU zwgIGBeM$RIm4WLHr)eBtq`Sg?K%}idPgnC>f5Pv`4lbRj9p)z{ESv$6NjIXGscy%A1q14%!0}J#WBA*SysySJJ98dXGd1p}>9GzZ%DmB1r(y zk z?0>SEJT=+6Na7f6P1EqteTA~?D5Ol`<1ikHRqLrxDsrdgdja}@pjE&?l7}cl@WB%b zDf$`0==4_TKZp+ZyZYJVnzva&SeK%nPlo4AHd2XI>RiAYSSzyqweHe@8^bC4sDHYwrFrnz4^bBDGj78dyTPS~Da z^=>rXo%Buqx^DUafNzaaC)r*F1 zm-zVvr8HUJGKDH}0Dv9UfN$a3+T`JgM^m(b?To}i#QsEI9hwd$HFdQkpRQTqz-aG8 z<`dLtx$jNYT|!~`sD+<`P;bp(lt38X`*{j`!f8`qjrzC#8#;r6K`jcMv10bBK+&+* z(MgFjIbH=JvcrfNRQbomgW>v6>^Q_v@^p4roqjbRv00oT5}Akj@W$(iw|7e&Kit9& z-SnqJa(E+Wm*ADDp=uY=xtg9*6Er5Un%tyZan^)7Iu5^I>$tqtm5GZG(CmH4tp-_|*#MRcrxn zb)bw<-^geMjeyGRx)_|%w65u0t1ZiiVem>TLu^ecTS!p9sRaO9DD2w=SXkzEjoy-H zdTgn+!EzXCw&j`1-GLZca(!BO(p9_%<^4fTJ(JvXhcCzAS5`!6TKr1>7-RVs-Kkb9H(a}O5-q9JRNb)2 z<|zT%1x3@vhMJDh(5_W zX9fh}nzL&kpy8+EypWlgO;1d>GqIz1U*-bJ<*efPG7atyh=;3sgJBcheDuDa!Tm!> z$Kii}q29XqxiTu{inV|EuCkz?!($_GBYroq)(L43GdpAb^UjhOjwd zk$qP}AYly&W&sotFrY?2(Q0e8wYJ69_DV&xP|>m~BE2fL)dr)0*47}P6ctgH`495n z`#=9Y4>{-g<~!dx@B4*0=VWGH=p5W)# zvdt!XUDPTUi!V?5jnDq0GZq>&?Q%l(!%t?$CiE{+TT6a-r0Hg*Q(4M&+fS#hDLHvY z50J@)3hMd5p0oQ3B$F*!tudT|&~8r5Cx-ieCsSHhPiNYS=jM%0AIHfx*Qd5lw(QrA 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 S{^&nBUDk^R$Jwjk<9`4Zlb+cC diff --git a/contrib/kolibri-libc/linuxtools/kgcc b/contrib/kolibri-libc/linuxtools/kgcc deleted file mode 100644 index 959763ac4a..0000000000 --- a/contrib/kolibri-libc/linuxtools/kgcc +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# Copyright maxcodehack, 2021 -# gcc options for build for KolibriOS - -# We start w/o param? -if [ -z "$*" ] -then - echo -e "\033[1;31mfatal error: \033[0mno input files" - exit 1 -fi - -# KLIBC variable exists? -if [ -z "$KLIBC" ] -then - echo -e "\033[1;31mfatal error: \033[0mKLIBC variable not set" - exit 1 -fi - -# GCC Flags for KolibriOS -FLAGS="-c -m32 -nostdinc -fno-common -fno-builtin -fno-leading-underscore -fno-pie -fno-stack-protector -fno-stack-check -mpreferred-stack-boundary=2" -KOS_PLATFORM="-Ulinux -U__linux -U__linux__ -U__gnu_linux__ -U__unix__ -U__unix -Uunix -Dkolibri -D__kolibri -D__kolibri__" - -# And, execute gcc: -gcc $FLAGS $KOS_PLATFORM -I$KLIBC/source/include $* diff --git a/contrib/kolibri-libc/linuxtools/kld b/contrib/kolibri-libc/linuxtools/kld deleted file mode 100644 index cd24437edb..0000000000 --- a/contrib/kolibri-libc/linuxtools/kld +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -# Copyright maxcodehack, 2021 -# ld options for build for KolibriOS - -# We start w/o param? -if [ -z "$*" ] -then - echo "kld: no input files" - exit 1 -fi - -# KLIBC variable exists? -if [ -z "$KLIBC" ] -then - echo "kld: KLIBC variable not set" - exit 1 -fi - -# LD Flags for KolibriOS -FLAGS="-m elf_i386 -nostdlib" - -# And, execute ld: -ld $FLAGS -L$KLIBC/lib -T$KLIBC/static.lds $KLIBC/lib/crt0.o $* diff --git a/contrib/kolibri-libc/linuxtools/mkexp b/contrib/kolibri-libc/linuxtools/mkexp deleted file mode 100755 index 845c1957669b907d4c3e44be8108250105de4803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15828 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 -#include - -int main(int argc, char** argv) { - if (argc != 3) { - printf("usage: %s [symbols.txt exports.c]\n", argv[0]); - return 0; - } - FILE *input, *output; - if ((input = fopen(argv[1], "r")) == NULL) - { - printf("error: file \"%s\" not found\n", argv[1]); - return 0; - } - char buf[10000]; - - // Head - strcpy(buf, \ - "#include \n" \ - "#include \n" \ - "#include \n" \ - "#include \n" \ - "#include \n" \ - "#include \n" \ - "#include \n" \ - "#include \n\n" \ - "ksys_coff_etable_t EXPORTS[] = {\n"); - - // Generate - char symbol[256]; - while(fscanf(input, "%s", symbol) != EOF) { - char temp[256]; - sprintf(temp, "{\"%s\", %s},\n", symbol, symbol); - strcat(buf, temp); - } - strcat(buf, "NULL,\n};"); - fclose(input); - - // Output generated - output = fopen(argv[2], "w"); - fputs(buf, output); - fclose(output); - - printf("Done, check %s!\n", argv[2]); - - return 0; -} diff --git a/contrib/kolibri-libc/linuxtools/mklib b/contrib/kolibri-libc/linuxtools/mklib deleted file mode 100755 index b8c90ca26f2d340944da5345eec9aee0de1eab45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4844 zcmc&&U2GIp6u!Hq?RJ4}!ICsU?1ZHJs9k& zopaB3&Ufy)|1;$ zr7G%3G7nYc&8}4T*_C~=!g4~vf+hEFdot1A+Oj7QdPH?;^(i z0&`sJfNvrI?mNybvb9Lgk8R$Ro>L!iZ3izL%# zOi;9lnKj~xRKlr)Y6;nZVVoFDr>IFoVEZ`ft(X_iPc0=#%SrBmRe<5L#Vy8TNp1qC zh?gXG7uRAn{4f@e7gR+JKCsYQKpPE@gvVF)Nr`-J8-a5U9P{8Z;lLeRUtDnDw0tDx zBH@@D=Zl6(hrctQDThDr8T7yAz@7b@ap2eoF0&3C+vYOozC~H#|-d!2Tn(b z47ETwwpl(m=pPcTdOsp=T|=|#lAKWrFDDZ`P(@9 zPxtEfkNT^3PQw7|W1$7z4$T+WKrlTYn%DClJ$Koo+uifGZ|ReAfuP9_6{Oh?&FPbM z*fbQ~{#>8rY0&Mfh4)}A^?di7Zo4>`-8~D{SqLx#vTz?IqbM_qf_~TZeC4}U8UzxZ z_7&pf5rzh@cG+JSo|YU4n)lRx;>s;}Ye(>~paiEt!VjGbEy{CV|5zq0bM_SXgDkcv z1_Xf&?a(B2`64jkCz)Pk<_ge{?nymgqq{CoVu(>!@tc22C2(8-(glzg^xT4|JyQY8 zjzjtzgj(TAus6{u7 z$rsbON)`+5x8UKfv3)PWHVHo0X@48+?X-Un_5|&}d-bvAD8SElZM&!E?sy7Ya6?|c zS79~o{I0g~GzRIif9bM+?y!Ffmg;ZlxoMZa=lkp}J@={S`D4MO!DGSWL1Q`|_t!R_ zk!{NT4K){?g7p#w{nRtUHC*S~u&UaF_c7x5ZZq{)sk9w^I;!QSevm&J+246CKFGg= z{6(o$iedZ%zPdNvoxX-QDndSOY(>bo_4UdQ-;UR+bYEMp`YB%^QOBdYI3ab6KY&+Taa`(N z)bUCyo|d{Bb-c=oL!g5cO{PC=4vH81;l9rdhAj==g}ow?iX^kqn6^pY_lDsIV3SwG zvnfrM*b7|M25; z6hh$iz)>j+e{1nK7@jZALQ}a2;W>cofcd;uEOO+zuOJ4mIbH)vz|qEhUVGOG;I&5d z#Wl>j1r=Pk%;&Y7qy{lRENtiYS&o7Y>ul$>J41ZV6YcoT#XQE(mhlS}0YKoLlK6*c z9FULSS>=2*~haMu)`)b|lH|GK}|}lix%99^&KS>@4Mc{4RCoKR|qW z3pj~XFVDZ@A^C?MlK(F8dH&1uAE&%oaQ-|Fc;;gNX}Q6F8GX`~|I@f3wWSC1894 -#include -#include - -typedef struct List_s { - char *this; - struct List_s *next; -} List; - -int main() { - List *root; - for (List **pitem = &root;; pitem = &(*pitem)->next) { - size_t n = 1024; - *pitem = calloc(1, sizeof(List)); - List *item = *pitem; - item->this = calloc(1, n); - fgets(item->this, n, stdin); - if (item->this[0] == '\n') { - free(*pitem); - *pitem = NULL; - break; - } else { - item->this[strlen(item->this) - 1] = '\0'; - } - } - - for (List *item = root; item; item = item->next) { - char asm_name[255]; - sprintf(asm_name, "%s.asm", item->this); - FILE *out = fopen(asm_name, "wb"); - - fprintf(out, "format ELF\n"); - fprintf(out, "include \"__lib__.inc\"\n"); - fprintf(out, "fun equ __func@%s\n", item->this); - fprintf(out, "fun_str equ '%s'\n", item->this); - fprintf(out, "section '.text'\n"); - fprintf(out, "fun_name db fun_str, 0\n"); - fprintf(out, "section '.data'\n"); - fprintf(out, "extrn lib_name\n"); - fprintf(out, "public fun as fun_str\n"); - fprintf(out, "fun dd fun_name\n"); - fprintf(out, "lib dd lib_name\n"); - - fclose(out); - } -} diff --git a/contrib/kolibri-libc/loader/__lib__.asm b/contrib/kolibri-libc/loader/__lib__.asm deleted file mode 100644 index eac1985673..0000000000 --- a/contrib/kolibri-libc/loader/__lib__.asm +++ /dev/null @@ -1,9 +0,0 @@ -format ELF - -include '__lib__.inc' - -section '.text' - -public lib_name - -lib_name db 0x55, 0xAA, lib_name_str, 0 diff --git a/contrib/kolibri-libc/loader/__lib__.inc b/contrib/kolibri-libc/loader/__lib__.inc deleted file mode 100644 index 15d14f801d..0000000000 --- a/contrib/kolibri-libc/loader/__lib__.inc +++ /dev/null @@ -1,2 +0,0 @@ -lib_name equ @libc.obj -lib_name_str equ '/sys/lib/libc.obj' diff --git a/contrib/kolibri-libc/loader/build.sh b/contrib/kolibri-libc/loader/build.sh deleted file mode 100755 index 803d0555ce..0000000000 --- a/contrib/kolibri-libc/loader/build.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -set -e - -MKLIB=../linuxtools/mklib -AR=ar -FASM=fasm - -set -e - -echo "Generate ASM files..." -cat symbols.txt | $MKLIB - -echo "Compile ASM files..." -for asm_file in $(find *.asm) -do - $FASM $asm_file > /dev/null -done - -echo "Create libc.obj.a library..." -ar -rsc ../lib/libc.obj.a *.o -mv __lib__.asm __lib__.asm.bak -rm *.o *.asm -mv __lib__.asm.bak __lib__.asm -echo "Done!" diff --git a/contrib/kolibri-libc/loader/symbols.txt b/contrib/kolibri-libc/loader/symbols.txt deleted file mode 100644 index 9dba19bb7e..0000000000 --- a/contrib/kolibri-libc/loader/symbols.txt +++ /dev/null @@ -1,112 +0,0 @@ -abs -acos -acosh -asin -asinh -atan -atan2 -atanh -atoi -atol -atoll -calloc -ceil -clearerr -closedir -cos -cosh -debug_printf -difftime -div -exit -exp -fabs -fclose -feof -ferror -fflush -fgetc -fgetpos -fgets -floor -fmod -fopen -fputc -fputs -fread -free -freopen -frexp -fseek -fsetpos -ftell -fwrite -getchar -gets -hypot -itoa -labs -ldexp -ldiv -llabs -lldiv -localtime -log -malloc -memccpy -memchr -memcmp -memcpy -memmove -memset -mktime -modf -modfl -opendir -perror -pow -pow10 -pow2 -printf -puts -readdir -realloc -remove -rename -rewind -rewinddir -seekdir -setbuf -setvbuf -sin -sinh -snprintf -sprintf -sqrt -strcat -strchr -strcmp -strcoll -strcpy -strcspn -strerror -strlen -strncat -strncmp -strncpy -strpbrk -strrchr -strrev -strspn -strstr -strtok -strxfrm -tan -tanh -telldir -time -tmpfile -tmpnam -vprintf -vsnprintf - diff --git a/contrib/kolibri-libc/samples/Makefile b/contrib/kolibri-libc/samples/Makefile deleted file mode 100644 index a01e6b8c53..0000000000 --- a/contrib/kolibri-libc/samples/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -KGCC = ../linuxtools/kgcc -KLD = ../linuxtools/kld -KPACK = kpack -KTCC=../../../programs/develop/ktcc/trunk/bin/kos32-tcc -KTCC_FLAGS = -nostdlib -stack=1048576 -I$(KLIBC)/source/include -L$(KLIBC)/lib $(KLIBC)/lib/crt0.o - -ifndef NAME -NAME = basic_gui -endif - -static_kgcc: - $(KGCC) $(NAME).c - $(KLD) $(NAME).o -o $(NAME) -lc - $(KPACK) $(NAME) - -static_tcc: - $(KTCC) $(KTCC_FLAGS) $(NAME).c -o $(NAME) -lc - $(KPACK) $(NAME) - -dynamic_kgcc: - $(KGCC) -D_DYNAMIC $(NAME).c - $(KLD) $(NAME).o -o $(NAME) -lc.obj - $(KPACK) $(NAME) - -dynamic_tcc: - $(KTCC) $(KTCC_FLAGS) -D_DYNAMIC $(NAME).c -o $(NAME)_dyn -lc.obj - $(KPACK) $(NAME)_dyn diff --git a/contrib/kolibri-libc/samples/basic_gui.c b/contrib/kolibri-libc/samples/basic_gui.c deleted file mode 100644 index b7e66386fb..0000000000 --- a/contrib/kolibri-libc/samples/basic_gui.c +++ /dev/null @@ -1,116 +0,0 @@ -#include -#include -#include -#include -#include "ksys.h" - -ksys_colors_table_t sys_color_table; - -char statusbar[255]; -ksys_proc_table_t proc_info; -char text_line[255]; - -enum BUTTONS -{ - BTN_QUIT = 1, - BTN_POP = 10, - BTN_UNLOCK = 11 -}; - -#define FONT_W 8 -#define FONT_H 14 -#define LINES 10 - -void draw_window() -{ - int win_hight, win_width, i, pos_y = _ksys_get_skin_height() + 36; // 60 == 24+36 - - // start redraw - _ksys_start_draw(); - // define&draw window - _ksys_create_window(10, 40, 600, 400, "My window", sys_color_table.work_area, 0x13); - _ksys_process_info(&proc_info, -1); - - win_width = proc_info.winx_size; - win_hight = proc_info.winy_size; - - _ksys_define_button(10, 30, 70, 20, BTN_POP, sys_color_table.work_button); - _ksys_draw_text("BUTTON1", 15, 34, 0, 0x90000000 | sys_color_table.work_button_text); //0x80000000 asciiz - - _ksys_define_button(100, 30, 80, 20, BTN_UNLOCK, sys_color_table.work_button); - _ksys_draw_text("BUTTTON2", 110, 34, 0, 0x90000000 | sys_color_table.work_button_text); - - // display statusbar - _ksys_draw_bar(6, win_hight - 17, win_width - 11, 12, 0x80000000 | sys_color_table.work_area); //0x80000000 gradient - _ksys_draw_text(statusbar, 10, win_hight - 15, 0, 0x80000000 | sys_color_table.work_text); - - // display strings - for (i = LINES; i > 0; i--){ - snprintf (text_line, sizeof text_line, "Line[%d]<>", i); - - text_line[(win_width - 10 - 5) / FONT_W + 1] = '\0'; // clip text size, seems to big lines crashing OS, and form len by window size - _ksys_draw_text(text_line, 5, pos_y, 0, 0x90000000 | sys_color_table.work_text); - pos_y += FONT_H; - - if(pos_y + 29 > win_hight) break; // 12 font + 12 statusbar + 5 border - } - // end redraw - _ksys_end_draw(); -} - -int main() -{ - int gui_event; - uint32_t pressed_button = 0, mouse_button; - ksys_pos_t mouse_pos; - strcpy(statusbar, "Program running...Double click on TEXT for details"); - - _ksys_get_colors(&sys_color_table); - _ksys_set_event_mask(0xC0000027); // mouse events only when focused window and mouse inside - - do{ - gui_event = _ksys_get_event(); - switch(gui_event) - { - case KSYS_EVENT_NONE: - break; - case KSYS_EVENT_REDRAW: - draw_window(); - break; - case KSYS_EVENT_KEY: - break; - case KSYS_EVENT_BUTTON: - pressed_button = _ksys_get_button(); - switch (pressed_button) - { - case BTN_POP: - strcpy(statusbar, "POP pressed...."); - draw_window(); - break; - case BTN_UNLOCK: - strcpy(statusbar, "UNLOCK pressed...."); - draw_window(); - break; - case BTN_QUIT: - return 0; - break; - } - break; - case KSYS_EVENT_MOUSE: - mouse_pos = _ksys_get_mouse_pos(KSYS_MOUSE_WINDOW_POS); // window relative - mouse_button = _ksys_get_mouse_eventstate(); - debug_printf("mouse ev (%d,%d)%x\n", mouse_pos.x, mouse_pos.y, mouse_button); - if (mouse_button & (1<<24)) // double click - { - int n = (mouse_pos.y - 60) / FONT_H; - if (n < 0 || n >= LINES) break; - debug_printf("click on str(%d), clip slot(%d)\n", n, LINES - n - 1); - sprintf(statusbar, "click on str(%d), clip slot(%d)\n", n, LINES - n - 1); - draw_window(); - } - break; - } - } while(1) ; /* End of main activity loop */ - - return 0; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/Makefile b/contrib/kolibri-libc/source/Makefile deleted file mode 100644 index e2bf640059..0000000000 --- a/contrib/kolibri-libc/source/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -AR = ar -rcs -CLINK = ../linuxtools/clink -MKEXP = ../linuxtools/mkexp -KPACK = kpack - -INCLUDE = include -LIB_DIR = ../lib - -LIBC.A = $(LIB_DIR)/libc.a -LIBC.OBJ = $(LIB_DIR)/libc.obj - -CFLAGS = -I$(INCLUDE) -m32 -nostdinc -nostdlib -DGNUC -Os -fno-common -fno-builtin -fno-leading-underscore -fno-pie -DIRS := string stdlib stdio sys math ctype exports setjmp shell_api - -cfiles := $(foreach dir,$(DIRS),$(patsubst %.c, %.o, $(wildcard $(dir)/*.c))) -asmfiles := $(foreach dir,$(DIRS),$(patsubst %.s, %.o, $(wildcard $(dir)/*.s))) -.PHONY: clean all - -ifdef windir -cfiles := $(subst /,\,$(cfiles)) -asmfiles := $(subst /,\,$(asmfiles)) -LIB_DIR := $(subst /,\,$(LIB_DIR)) -LIBNAME := $(subst /,\,$(LIBNAME)) -RM = del /F /Q -MKDIR_P = md -else -RM = rm -rf -MKDIR_P = mkdir -p -endif - -all: $(cfiles) $(asmfiles) $(LIB_DIR) $(LIBC.A) - fasm crt/crt0.asm $(LIB_DIR)/crt0.o - -$(LIBC.A): $(cfiles) $(asmfiles) - $(AR) $(LIBC.A) $^ - -$(LIB_DIR): - $(MKDIR_P) $(LIB_DIR) - -$(asmfiles): - $(CC) -E -x c -nostdinc -Imath $*.s > $*.sx - $(AS) --32 $*.sx -o $*.o - $(RM) $*.sx - -clean: - $(RM) $(cfiles) $(asmfiles) exports/exports.c - $(RM) $(LIBNAME) - -shared: $(cfiles) $(asmfiles) - $(CLINK) $^ - $(KPACK) a.out.obj - mv a.out.obj $(LIBC.OBJ) - -test: - make -C ../test -f Makefile.tcc - kex ../test/test diff --git a/contrib/kolibri-libc/source/Makefile.ktcc b/contrib/kolibri-libc/source/Makefile.ktcc deleted file mode 100644 index 81e24c1016..0000000000 --- a/contrib/kolibri-libc/source/Makefile.ktcc +++ /dev/null @@ -1,5 +0,0 @@ -KTCC=../../../programs/develop/ktcc/trunk/bin/kos32-tcc - -all: - make clean - env CC=$(KTCC) make diff --git a/contrib/kolibri-libc/source/Makefile.shared b/contrib/kolibri-libc/source/Makefile.shared deleted file mode 100644 index 188d215705..0000000000 --- a/contrib/kolibri-libc/source/Makefile.shared +++ /dev/null @@ -1,9 +0,0 @@ -MKEXP=../linuxtools/mkexp - -all: - $(MAKE) clean - $(MKEXP) ../loader/symbols.txt exports/exports.c - env CC=i686-w64-mingw32-gcc CPP=i686-w64-mingw32-cpp AS=i686-w64-mingw32-as $(MAKE) shared - -install: - cp ../lib/libc.obj ~/.kex/root/RD/1/LIB diff --git a/contrib/kolibri-libc/source/crt/crt0.asm b/contrib/kolibri-libc/source/crt/crt0.asm deleted file mode 100644 index 008a5cf50c..0000000000 --- a/contrib/kolibri-libc/source/crt/crt0.asm +++ /dev/null @@ -1,220 +0,0 @@ -format ELF -section '.text' executable -public start -public start as '_start' -;extrn mf_init -extrn main -;include 'debug2.inc' -include '../../../../programs/proc32.inc' -include '../../../../programs/macros.inc' -include '../../../../programs/dll.inc' -__DEBUG__=0 - -;start_: -virtual at 0 - db 'MENUET01' ; 1. Magic number (8 bytes) - dd 0x01 ; 2. Version of executable file - dd start ; 3. Start address -imgsz dd 0x0 ; 4. Size of image - dd 0x100000 ; 5. Size of needed memory - dd 0x100000 ; 6. Pointer to stack -hparams dd 0x0 ; 7. Pointer to program arguments -hpath dd 0x0 ; 8. Pointer to program path -end virtual - -start: -;DEBUGF 'Start programm\n' - ;init heap of memory - mov eax,68 - mov ebx,11 - int 0x40 - - mov [argc], 0 - mov eax, [hparams] - test eax, eax - jz .without_path - mov eax, path - cmp word ptr eax, 32fh ; '/#3' UTF8 - jne .without_path - mov word ptr eax, 12fh ; '/#1' fix to CP866 -.without_path: - mov esi, eax - call push_param -; retrieving parameters - mov esi, params - xor edx, edx ; dl - èä¸ò ïàðàìåòð(1) èëè ðàçäåëèòåëè(0) - ; dh - ñèìâîë ñ êîòîðîãî íà÷àëñÿ ïàðàìåòð (1 êàâû÷êè, 0 îñòàëüíîå) - mov ecx, 1 ; cl = 1 - ; ch = 0 ïðîñòî íîëü -.parse: - lodsb - test al, al - jz .run - test dl, dl - jnz .findendparam - ;{åñëè áûë ðàçäåëèòåëü - cmp al, ' ' - jz .parse ;çàãðóæåí ïðîáåë, ãðóçèì ñëåäóþùèé ñèìâîë - mov dl, cl ;íà÷èíàåòñÿ ïàðàìåòð - cmp al, '"' - jz @f ;çàãðóæåíû êàâû÷êè - mov dh, ch ;ïàðàìåòð áåç êàâû÷åê - dec esi - call push_param - inc esi - jmp .parse - - @@: - mov dh, cl ;ïàðàìåòð â êàâû÷åêàõ - call push_param ;åñëè íå ïðîáåë çíà÷èò íà÷èíàåòñÿ êàêîé òî ïàðàìåòð - jmp .parse ;åñëè áûë ðàçäåëèòåëü} - -.findendparam: - test dh, dh - jz @f ; áåç êàâû÷åê - cmp al, '"' - jz .clear - jmp .parse - @@: - cmp al, ' ' - jnz .parse - -.clear: - lea ebx, [esi - 1] - mov [ebx], ch - mov dl, ch - jmp .parse - -.run: - call load_imports - push argv - push [argc] - call main -.exit: - xor eax,eax - dec eax - int 0x40 - dd -1 -.crash: - jmp .exit -;============================ -push_param: -;============================ -;parameters -; esi - pointer -;description -; procedure increase argc -; and add pointer to array argv -; procedure changes ebx - mov ebx, [argc] - cmp ebx, max_parameters - jae .dont_add - mov [argv+4*ebx], esi - inc [argc] -.dont_add: - ret -;============================== - -;============================== -load_imports: -;============================== -;parameters -; none -;description -; imports must be located at end of image (but before BSS sections) -; the address of end of imports (next byte after imports) is located in imgsz -; look at each import from that address up to illegal import -; legal import is such that: -; first pointer points to procedure name -; and is smaller than imgsz -; second pointer points lo library name, starting with 0x55, 0xAA -; and is smaller than imgsz -; each library should be initialized as appropriate, once -; so as library is initialized, its name will be replaced 0x00 - mov ebx, [imgsz] ; byte after imports -.handle_next_import: - sub ebx, 4 ; ebx = pointer to pointer to library name - mov esi, dword[ebx] ; esi = pointer to library name - push ebx - push esi - call load_library ; eax = pointer to library exports - pop esi - pop ebx - test eax, eax - jz .done - sub ebx, 4 ; ebx = pointer to pointer to symbol name - push ebx - stdcall dll.GetProcAddress, eax, dword[ebx] - pop ebx - test eax, eax - jz .fail - mov dword[ebx], eax - jmp .handle_next_import -.done: - ret -.fail: - ret -;============================== - -;============================== -load_library: -;============================== -;parameters -; ebx: library name address -;description -; each library should be initialized as appropriate, once -; so as library is initialized, its name will be replaced 0x00 -; and 4 next bytes will be set to address of library - ; first two bytes of library name must be 0x55, 0xAA (is like a magic) - cld ; move esi further, not back - cmp esi, [imgsz] - ja .fail - lodsb ; al = first byte of library name - cmp al, 0x55 - jne .fail - lodsb ; al = second byte of library name - cmp al, 0xAA - jne .fail - lodsb ; al = third byte of library name (0x00 if the library is already loaded) - test al, al - jnz .load - lodsd ; if we here, then third byte is 0x00 => address of library is in next 4 bytes - ; now eax contains address of library - ret -.load: - dec esi ; we checked on 0 before, let's go back - mov eax, 68 - mov ebx, 19 - mov ecx, esi - int 0x40 ; eax = address of exports - mov byte[esi], 0 ; library is loaded, let's place 0 in first byte of name - mov [esi + 1], eax ; now next 4 bytes of library name are replaced by address of library - ; call lib_init - stdcall dll.GetProcAddress, eax, lib_init_str ; eax = address of lib_init - test eax, eax - jz .ret - stdcall dll.Init, eax -.ret: - mov eax, [esi + 1] ; put address of library into eax - ret -.fail: - mov eax, 0 - ret -;============================== - -lib_init_str db 'lib_init', 0 - -public argc as '__argc' -public params as '__argv' -public path as '__path' - -section '.bss' -buf_len = 0x400 -max_parameters=0x20 -argc rd 1 -argv rd max_parameters -path rb buf_len -params rb buf_len - -;section '.data' -;include_debug_strings ; ALWAYS present in data section diff --git a/contrib/kolibri-libc/source/ctype/is.c b/contrib/kolibri-libc/source/ctype/is.c deleted file mode 100644 index fc160bec22..0000000000 --- a/contrib/kolibri-libc/source/ctype/is.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -unsigned short __is[129] = { - 0, /* EOF */ - 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, - 0x004, 0x104, 0x104, 0x104, 0x104, 0x104, 0x004, 0x004, - 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, - 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, - 0x140, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, - 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, - 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, - 0x459, 0x459, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, - 0x0D0, 0x653, 0x653, 0x653, 0x653, 0x653, 0x653, 0x253, - 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, - 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, - 0x253, 0x253, 0x253, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, - 0x0D0, 0x473, 0x473, 0x473, 0x473, 0x473, 0x473, 0x073, - 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, - 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, - 0x073, 0x073, 0x073, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x004 - }; diff --git a/contrib/kolibri-libc/source/include/ctype.h b/contrib/kolibri-libc/source/include/ctype.h deleted file mode 100644 index 16447bd563..0000000000 --- a/contrib/kolibri-libc/source/include/ctype.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef _CTYPE_H_ -#define _CTYPE_H_ -/* -** All character classification functions except isascii(). -** Integer argument (c) must be in ASCII range (0-127) for -** dependable answers. -*/ - -#define __ALNUM 1 -#define __ALPHA 2 -#define __CNTRL 4 -#define __DIGIT 8 -#define __GRAPH 16 -#define __LOWER 32 -#define __PRINT 64 -#define __PUNCT 128 -#define __BLANK 256 -#define __UPPER 512 -#define __XDIGIT 1024 - -extern unsigned short __is[129]; - -#define isalnum(c)(__is[c+1] & __ALNUM ) /* 'a'-'z', 'A'-'Z', '0'-'9' */ -#define isalpha(c)(__is[c+1] & __ALPHA ) /* 'a'-'z', 'A'-'Z' */ -#define iscntrl(c)(__is[c+1] & __CNTRL ) /* 0-31, 127 */ -#define isdigit(c)(__is[c+1] & __DIGIT ) /* '0'-'9' */ -#define isgraph(c)(__is[c+1] & __GRAPH ) /* '!'-'~' */ -#define islower(c)(__is[c+1] & __LOWER ) /* 'a'-'z' */ -#define isprint(c)(__is[c+1] & __PRINT ) /* ' '-'~' */ -#define ispunct(c)(__is[c+1] & __PUNCT ) /* !alnum && !cntrl && !space */ -#define isspace(c)(__is[c+1] & __BLANK ) /* HT, LF, VT, FF, CR, ' ' */ -#define isupper(c)(__is[c+1] & __UPPER ) /* 'A'-'Z' */ -#define isxdigit(c)(__is[c+1] & __XDIGIT) /* '0'-'9', 'a'-'f', 'A'-'F' */ - -#define isascii(c) (!((c)&(~0x7f))) -#define toascii(c) ((c)&0x7f) - -extern unsigned char tolower(unsigned char c); -extern unsigned char toupper(unsigned char c); - -#endif \ No newline at end of file diff --git a/contrib/kolibri-libc/source/include/errno.h b/contrib/kolibri-libc/source/include/errno.h deleted file mode 100644 index 4068dbc12b..0000000000 --- a/contrib/kolibri-libc/source/include/errno.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef _ERRNO_H_ -#define _ERRNO_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern int _GLOBAL_VAR(errno); - -#define EPERM 1 /* Operation not permitted */ -#define ENOENT 2 /* No such file or directory */ -#define ESRCH 3 /* No such process */ -#define EINTR 4 /* Interrupted system call */ -#define EIO 5 /* Input/output error */ -#define ENXIO 6 /* Device not configured */ -#define E2BIG 7 /* Argument list too long */ -#define ENOEXEC 8 /* Exec format error */ -#define EBADF 9 /* Bad file descriptor */ -#define ECHILD 10 /* No child processes */ -#define EDEADLK 11 /* Resource deadlock avoided */ -/* 11 was EAGAIN */ -#define ENOMEM 12 /* Cannot allocate memory */ -#define EACCES 13 /* Permission denied */ -#define EFAULT 14 /* Bad address */ -#define ENOTBLK 15 /* Block device required */ -#define EBUSY 16 /* Device / Resource busy */ -#define EEXIST 17 /* File exists */ -#define EXDEV 18 /* Cross-device link */ -#define ENODEV 19 /* Operation not supported by device */ -#define ENOTDIR 20 /* Not a directory */ -#define EISDIR 21 /* Is a directory */ -#define EINVAL 22 /* Invalid argument */ -#define ENFILE 23 /* Too many open files in system */ -#define EMFILE 24 /* Too many open files */ -#define ENOTTY 25 /* Inappropriate ioctl for device */ -#define ETXTBSY 26 /* Text file busy */ -#define EFBIG 27 /* File too large */ -#define ENOSPC 28 /* No space left on device */ -#define ESPIPE 29 /* Illegal seek */ -#define EROFS 30 /* Read-only file system */ -#define EMLINK 31 /* Too many links */ -#define EPIPE 32 /* Broken pipe */ - -/* math software */ -#define EDOM 33 /* Numerical argument out of domain */ -#define ERANGE 34 /* Result too large */ - -/* non-blocking and interrupt i/o */ -#define EAGAIN 35 /* Resource temporarily unavailable */ -#define EWOULDBLOCK EAGAIN /* Operation would block */ -#define EINPROGRESS 36 /* Operation now in progress */ -#define EALREADY 37 /* Operation already in progress */ - -/* ipc/network software -- argument errors */ -#define ENOTSOCK 38 /* Socket operation on non-socket */ -#define EDESTADDRREQ 39 /* Destination address required */ -#define EMSGSIZE 40 /* Message too long */ -#define EPROTOTYPE 41 /* Protocol wrong type for socket */ -#define ENOPROTOOPT 42 /* Protocol not available */ -#define EPROTONOSUPPORT 43 /* Protocol not supported */ -#define ESOCKTNOSUPPORT 44 /* Socket type not supported */ -#define ENOTSUP 45 /* Operation not supported */ -#define EOPNOTSUPP ENOTSUP /* Operation not supported on socket */ -#define EPFNOSUPPORT 46 /* Protocol family not supported */ -#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */ -#define EADDRINUSE 48 /* Address already in use */ -#define EADDRNOTAVAIL 49 /* Can't assign requested address */ - -/* ipc/network software -- operational errors */ -#define ENETDOWN 50 /* Network is down */ -#define ENETUNREACH 51 /* Network is unreachable */ -#define ENETRESET 52 /* Network dropped connection on reset */ -#define ECONNABORTED 53 /* Software caused connection abort */ -#define ECONNRESET 54 /* Connection reset by peer */ -#define ENOBUFS 55 /* No buffer space available */ -#define EISCONN 56 /* Socket is already connected */ -#define ENOTCONN 57 /* Socket is not connected */ -#define ESHUTDOWN 58 /* Can't send after socket shutdown */ -#define ETOOMANYREFS 59 /* Too many references: can't splice */ -#define ETIMEDOUT 60 /* Operation timed out */ -#define ECONNREFUSED 61 /* Connection refused */ -#define ELOOP 62 /* Too many levels of symbolic links */ -#define ENAMETOOLONG 63 /* File name too long */ - -/* should be rearranged */ -#define EHOSTDOWN 64 /* Host is down */ -#define EHOSTUNREACH 65 /* No route to host */ -#define ENOTEMPTY 66 /* Directory not empty */ - -/* quotas & mush */ -#define EPROCLIM 67 /* Too many processes */ -#define EUSERS 68 /* Too many users */ -#define EDQUOT 69 /* Disc quota exceeded */ - -/* Network File System */ -#define ESTALE 70 /* Stale NFS file handle */ -#define EREMOTE 71 /* Too many levels of remote in path */ -#define EBADRPC 72 /* RPC struct is bad */ -#define ERPCMISMATCH 73 /* RPC version wrong */ -#define EPROGUNAVAIL 74 /* RPC prog. not avail */ -#define EPROGMISMATCH 75 /* Program version wrong */ -#define EPROCUNAVAIL 76 /* Bad procedure for program */ -#define ENOLCK 77 /* No locks available */ -#define ENOSYS 78 /* Function not implemented */ -#define EFTYPE 79 /* Inappropriate file type or format */ -#define EAUTH 80 /* Authentication error */ -#define ENEEDAUTH 81 /* Need authenticator */ - -/* Intelligent device errors */ -#define EPWROFF 82 /* Device power is off */ -#define EDEVERR 83 /* Device error, e.g. paper out */ -#define EOVERFLOW 84 /* Value too large to be stored in data type */ - -/* Program loading errors */ -#define EBADEXEC 85 /* Bad executable */ -#define EBADARCH 86 /* Bad CPU type in executable */ -#define ESHLIBVERS 87 /* Shared library version mismatch */ -#define EBADMACHO 88 /* Malformed Macho file */ -#define ECANCELED 89 /* Operation canceled */ -#define EIDRM 90 /* Identifier removed */ -#define ENOMSG 91 /* No message of desired type */ -#define EILSEQ 92 /* Illegal byte sequence */ -#define ENOATTR 93 /* Attribute not found */ -#define EBADMSG 94 /* Bad message */ -#define EMULTIHOP 95 /* Reserved */ -#define ENODATA 96 /* No message available on STREAM */ -#define ENOLINK 97 /* Reserved */ -#define ENOSR 98 /* No STREAM resources */ -#define ENOSTR 99 /* Not a STREAM */ -#define EPROTO 100 /* Protocol error */ -#define ETIME 101 /* STREAM ioctl timeout */ -#define ENOPOLICY 103 /* No such policy registered */ -#define ENOTRECOVERABLE 104 /* State not recoverable */ -#define EOWNERDEAD 105 /* Previous owner died */ -#define EQFULL 106 /* Interface output queue is full */ -#define ELAST 106 /* Must be equal largest errno */ - -#ifdef __cplusplus -} -#endif - -#endif // _ERRNO_H_ \ No newline at end of file diff --git a/contrib/kolibri-libc/source/include/float.h b/contrib/kolibri-libc/source/include/float.h deleted file mode 100644 index a2b4ed26a0..0000000000 --- a/contrib/kolibri-libc/source/include/float.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef _FLOAT_H_ -#define _FLOAT_H_ - -#define FLT_RADIX 2 - -/* IEEE float */ -#define FLT_MANT_DIG 24 -#define FLT_DIG 6 -#define FLT_ROUNDS 1 -#define FLT_EPSILON 1.19209290e-07F -#define FLT_MIN_EXP (-125) -#define FLT_MIN 1.17549435e-38F -#define FLT_MIN_10_EXP (-37) -#define FLT_MAX_EXP 128 -#define FLT_MAX 3.40282347e+38F -#define FLT_MAX_10_EXP 38 - -/* IEEE double */ -#define DBL_MANT_DIG 53 -#define DBL_DIG 15 -#define DBL_EPSILON 2.2204460492503131e-16 -#define DBL_MIN_EXP (-1021) -#define DBL_MIN 2.2250738585072014e-308 -#define DBL_MIN_10_EXP (-307) -#define DBL_MAX_EXP 1024 -#define DBL_MAX 1.7976931348623157e+308 -#define DBL_MAX_10_EXP 308 - -/* horrible intel long double */ -#if defined __i386__ || defined __x86_64__ - -#define LDBL_MANT_DIG 64 -#define LDBL_DIG 18 -#define LDBL_EPSILON 1.08420217248550443401e-19L -#define LDBL_MIN_EXP (-16381) -#define LDBL_MIN 3.36210314311209350626e-4932L -#define LDBL_MIN_10_EXP (-4931) -#define LDBL_MAX_EXP 16384 -#define LDBL_MAX 1.18973149535723176502e+4932L -#define LDBL_MAX_10_EXP 4932 - -#else - -/* same as IEEE double */ -#define LDBL_MANT_DIG 53 -#define LDBL_DIG 15 -#define LDBL_EPSILON 2.2204460492503131e-16 -#define LDBL_MIN_EXP (-1021) -#define LDBL_MIN 2.2250738585072014e-308 -#define LDBL_MIN_10_EXP (-307) -#define LDBL_MAX_EXP 1024 -#define LDBL_MAX 1.7976931348623157e+308 -#define LDBL_MAX_10_EXP 308 - -#endif - -#ifndef NAN -# define NAN (__nan__) -#endif - -#ifndef INFINITY -# define INFINITY (__inf__) -#endif - -#endif /* _FLOAT_H_ */ diff --git a/contrib/kolibri-libc/source/include/ksys.h b/contrib/kolibri-libc/source/include/ksys.h deleted file mode 100644 index 4f3cb33d7c..0000000000 --- a/contrib/kolibri-libc/source/include/ksys.h +++ /dev/null @@ -1,991 +0,0 @@ -#ifndef _KSYS_H_ -#define _KSYS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define asm_inline __asm__ __volatile__ -#define not_optimized __attribute__((optimize("O0"))) - -#define KSYS_FS_ERR_SUCCESS 0 // Success -#define KSYS_FS_ERR_1 1 // Base and/or partition of a hard disk is not defined (fn21.7 & fn21.8) -#define KSYS_FS_ERR_2 2 // Function is not supported for the given file system -#define KSYS_FS_ERR_3 3 // Unknown file system -#define KSYS_FS_ERR_4 4 // Reserved, is never returned in the current implementation -#define KSYS_FS_ERR_5 5 // File not found -#define KSYS_FS_ERR_EOF 6 // End of file, EOF -#define KSYS_FS_ERR_7 7 // Pointer lies outside of application memory -#define KSYS_FS_ERR_8 8 // Disk is full -#define KSYS_FS_ERR_9 9 // FAT table is destroyed -#define KSYS_FS_ERR_10 10 // Access denied -#define KSYS_FS_ERR_11 11 // Device error - -typedef struct { - unsigned char blue; - unsigned char green; - unsigned char red; -}rgb_t; - -typedef unsigned int ksys_color_t; - -#pragma pack(push,1) -typedef union{ - unsigned val; - struct{ - short x; - short y; - }; -}ksys_pos_t; - -typedef union ksys_oskey_t{ - unsigned val; - struct{ - unsigned char state; - unsigned char code; - unsigned char ctrl_key; - }; -}ksys_oskey_t; - -typedef struct{ - unsigned handle; - unsigned io_code; - unsigned *input; - int inp_size; - void *output; - int out_size; -}ksys_ioctl_t; - -typedef struct{ - void *data; - size_t size; -}ksys_ufile_t; - - -typedef struct{ - unsigned p00; - union{ - uint64_t p04; - struct { - unsigned p04dw; - unsigned p08dw; - }; - }; - unsigned p12; - union { - unsigned p16; - const char *new_name; - void *bdfe; - void *buf16; - const void *cbuf16; - }; - char p20; - const char *p21; -}ksys70_t; - - -typedef struct { - unsigned attributes; - unsigned name_cp; - char creation_time[4]; - char creation_date[4]; - char last_access_time[4]; - char last_access_date[4]; - char last_modification_time[4]; - char last_modification_date[4]; - unsigned long long size; - char name[0]; -}ksys_bdfe_t; - -typedef struct { - int cpu_usage; //+0 - int window_pos_info; //+4 - short int reserved1; //+8 - char name[12]; //+10 - int memstart; //+22 - int memused; //+26 - int pid; //+30 - int winx_start; //+34 - int winy_start; //+38 - int winx_size; //+42 - int winy_size; //+46 - short int slot_info; //+50 - short int reserved2; //+52 - int clientx; //+54 - int clienty; //+58 - int clientwidth; //+62 - int clientheight; //+66 - unsigned char window_state;//+70 - char reserved3[1024-71]; //+71 -}ksys_proc_table_t; - -typedef struct{ - ksys_color_t frame_area; - ksys_color_t grab_bar; - ksys_color_t grab_bar_button; - ksys_color_t grab_button_text; - ksys_color_t grab_text; - ksys_color_t work_area; - ksys_color_t work_button; - ksys_color_t work_button_text; - ksys_color_t work_text; - ksys_color_t work_graph; -}ksys_colors_table_t; - -typedef struct{ - unsigned pid; // PID of sending thread - unsigned datalen; // data bytes - char *data; // data begin -}ksys_ipc_msg; - -typedef struct{ - unsigned lock; // nonzero is locked - unsigned used; // used bytes in buffer - ksys_ipc_msg *data; // data begin -}ksys_ipc_buffer; - -typedef struct { - char* func_name; - void* func_ptr; -}ksys_coff_etable_t; - -#pragma pack(pop) - -enum KSYS_EVENTS { - KSYS_EVENT_NONE = 0, /* Event queue is empty */ - KSYS_EVENT_REDRAW = 1, /* Window and window elements should be redrawn */ - KSYS_EVENT_KEY = 2, /* A key on the keyboard was pressed */ - KSYS_EVENT_BUTTON = 3, /* A button was clicked with the mouse */ - KSYS_EVENT_DESKTOP = 5, /* Desktop redraw finished */ - KSYS_EVENT_MOUSE = 6, /* Mouse activity (movement, button press) was detected */ - KSYS_EVENT_IPC = 7, /* Interprocess communication notify */ - KSYS_EVENT_NETWORK = 8, /* Network event */ - KSYS_EVENT_DEBUG = 9, /* Debug subsystem event */ - KSYS_EVENT_IRQBEGIN = 16 /* 16..31 IRQ0..IRQ15 interrupt =IRQBEGIN+IRQn */ -}; - -enum KSYS_FILE_ENCODING{ - KSYS_FILE_CP866 =1, - KSYS_FILE_UTF16LE = 2, - KSYS_FILE_UTF8 = 3 -}; - -enum KSYS_CLIP_ENCODING{ - KSYS_CLIP_UTF8 = 0, - KSYS_CLIP_CP866 = 1, - KSYS_CLIP_CP1251 = 2 -}; - -enum KSYS_CLIP_TYPES{ - KSYS_CLIP_TEXT = 0, - KSYS_CLIP_IMAGE = 1, - KSYS_CLIP_RAW = 2 -}; - -enum KSYS_MOUSE_POS{ - KSYS_MOUSE_SCREEN_POS = 0, - KSYS_MOUSE_WINDOW_POS = 1 -}; - -enum KSYS_SHM_MODE{ - KSYS_SHM_OPEN = 0x00, - KSYS_SHM_OPEN_ALWAYS = 0x04, - KSYS_SHM_CREATE = 0x08, - KSYS_SHM_READ = 0x00, - KSYS_SHM_WRITE = 0x01, -}; - -static inline -int _ksys_strcmp(const char * s1, const char * s2 ) -{ - while ((*s1) && (*s1 == *s2)){ ++s1; ++s2; } - return(*(unsigned char*)s1 - *(unsigned char *)s2); -} - -// Functions for working with the graphical interface - -static inline -void _ksys_start_draw() -{ - asm_inline("int $0x40"::"a"(12),"b"(1)); -} - -static inline -void _ksys_end_draw() -{ - asm_inline("int $0x40" ::"a"(12),"b"(2)); -} - -static inline -void _ksys_create_window(int x, int y, int w, int h, const char *name, ksys_color_t workcolor, unsigned style) -{ - asm_inline( - "int $0x40" - ::"a"(0), - "b"((x << 16) | ((w-1) & 0xFFFF)), - "c"((y << 16) | ((h-1) & 0xFFFF)), - "d"((style << 24) | (workcolor & 0xFFFFFF)), - "D"(name), - "S"(0) : "memory" - ); -}; - -static inline -void _ksys_change_window(int new_x, int new_y, int new_w, int new_h) -{ - asm_inline( - "int $0x40" - ::"a"(67), "b"(new_x), "c"(new_y), "d"(new_w),"S"(new_h) - ); -} - -static inline -void _ksys_define_button(unsigned x, unsigned y, unsigned w, unsigned h, unsigned id, ksys_color_t color) -{ - asm_inline( - "int $0x40" - ::"a"(8), - "b"((x<<16)+w), - "c"((y<<16)+h), - "d"(id), - "S"(color) - ); -}; - -static inline -void _ksys_draw_line(int xs, int ys, int xe, int ye, ksys_color_t color) -{ - asm_inline( - "int $0x40" - ::"a"(38), "d"(color), - "b"((xs << 16) | xe), - "c"((ys << 16) | ye) - ); -} - -static inline -void _ksys_draw_bar(int x, int y, int w, int h, ksys_color_t color) -{ - asm_inline( - "int $0x40" - ::"a"(13), "d"(color), - "b"((x << 16) | w), - "c"((y << 16) | h) - ); -} - -static inline -void _ksys_draw_bitmap(void *bitmap, int x, int y, int w, int h) -{ - asm_inline( - "int $0x40" - ::"a"(7), "b"(bitmap), - "c"((w << 16) | h), - "d"((x << 16) | y) - ); -} - -static inline -void _ksys_draw_text(const char *text, int x, int y, int len, ksys_color_t color) -{ - asm_inline( - "int $0x40" - ::"a"(4),"d"(text), - "b"((x << 16) | y), - "S"(len),"c"(color) - :"memory" - ); -} - -static inline -void _ksys_draw_text_bg(const char *text, int x, int y, int len, ksys_color_t color, ksys_color_t bg) -{ - asm_inline( - "int $0x40" - ::"a"(4),"d"(text), - "b"((x << 16) | y), - "S"(len),"c"(color), "D"(bg) - :"memory" - ); -} - -static inline -void _ksys_draw_number(int number, int x, int y, int len, ksys_color_t color){ - unsigned fmt; - fmt = len << 16 | 0x80000000; // no leading zeros + width - asm_inline( - "int $0x40" - ::"a"(47), "b"(fmt), "c"(number), "d"((x << 16) | y), "S"(color) - ); -} - -static inline -void _ksys_draw_number_bg(unsigned number, int x, int y, int len, ksys_color_t color, ksys_color_t bg){ - unsigned fmt; - fmt = len << 16 | 0x80000000; // no leading zeros + width - asm_inline( - "int $0x40" - ::"a"(47), "b"(fmt), "c"(number), "d"((x << 16) | y), "S"(color), "D"(bg) - ); -} - -static inline -unsigned _ksys_get_skin_height() -{ - unsigned height; - asm_inline( - "int $0x40 \n\t" - :"=a"(height) - :"a"(48),"b"(4) - ); - return height; -} - -static inline -void _ksys_get_colors(ksys_colors_table_t *color_table) -{ - asm_inline( - "int $0x40" - ::"a"(48),"b"(3),"c"(color_table),"d"(40) - ); -} - -/* Functions for working with a screen. */ - -static inline -ksys_pos_t not_optimized _ksys_screen_size() -{ - ksys_pos_t size; - ksys_pos_t size_tmp; - asm_inline( - "int $0x40" - :"=a"(size_tmp) - :"a"(14) - ); - size.x = size_tmp.y; - size.y = size_tmp.x; - return size; -} - - -/* Functions for working with a mouse and cursors. */ - -static inline -ksys_pos_t _ksys_get_mouse_pos(int origin) -{ - ksys_pos_t val; - asm_inline( - "int $0x40 \n\t" - "rol $16, %%eax" - :"=a"(val) - :"a"(37),"b"(origin) - :"memory" - ); - return val; -} - -static inline -unsigned _ksys_get_mouse_buttons() -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(37),"b"(2) - ); - return val; -} - -static inline -unsigned _ksys_get_mouse_wheels() -{ - unsigned val; - asm_inline( - "int $0x40 \n\t" - :"=a"(val) - :"a"(37),"b"(7) - ); - return val; -} - -static inline -unsigned _ksys_load_cursor(void *path, unsigned flags) -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(37), "b"(4), "c"(path), "d"(flags) - ); - return val; -} - -static inline -unsigned _ksys_set_cursor(unsigned cursor) -{ - unsigned old; - asm_inline( - "int $0x40" - :"=a"(old) - :"a"(37), "b"(5), "c"(cursor) - ); - return old; -} - -static inline -int _ksys_destroy_cursor(unsigned cursor) -{ - int ret; - asm_inline( - "int $0x40" - :"=a"(ret) - :"a"(37), "b"(6), "c"(cursor) - :"memory" - ); - return ret; -} - -static inline -unsigned _ksys_get_mouse_eventstate() -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(37),"b"(3) - ); - return val; -} - - -/* Functions for working with events and buttons. */ - -static inline -unsigned _ksys_set_event_mask(unsigned mask) -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(40), "b"(mask) - ); - return val; -} - -static inline -unsigned _ksys_wait_event(unsigned time) -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(23), "b"(time) - ); - return val; -} - -static inline -unsigned _ksys_check_event() -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(11) - ); - return val; -} - -static inline -unsigned _ksys_get_event() -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(10) - ); - return val; -} - -static inline -unsigned _ksys_get_button() -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(17) - ); - return val>>8; -} - -static inline -ksys_oskey_t _ksys_get_key(void) -{ - ksys_oskey_t val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(2) - ); - return val; -} - -/* Functions for working with the clipboard */ - -static inline -int _ksys_clip_num() -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(54), "b"(0) - ); - return val; -} - -static inline -char* _ksys_clip_get(int n) // returned buffer must be freed by _ksys_free() -{ - char* val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(54), "b"(1), "c"(n) - ); - return val; -} - -static inline -int _ksys_clip_set(int n, char *buffer) -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(54), "b"(2), "c"(n), "d"(buffer) - ); - return val; -} - -static inline -int _ksys_clip_pop() -{ - unsigned val; - asm_inline ( - "int $0x40" - :"=a"(val) - :"a"(54), "b"(3) - ); - return val; -} - -static inline -int _ksys_clip_unlock() -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(54), "b"(4) - ); - return val; -} - - -/* Working with time */ - -static inline -unsigned _ksys_get_tick_count() -{ - unsigned val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(26),"b"(9) - ); - return val; -} - -static inline -uint64_t _ksys_get_ns_count() -{ - uint64_t val; - asm_inline( - "int $0x40" - :"=A"(val) - :"a"(26), "b"(10) - ); - return val; -} - -static inline -void _ksys_delay(unsigned time) -{ - asm_inline( - "int $0x40" - ::"a"(5), "b"(time) - :"memory" - ); -} - -static inline -unsigned _ksys_get_date() -{ - unsigned val; - asm_inline("int $0x40":"=a"(val):"a"(29)); - return val; -} - -static inline -unsigned _ksys_get_clock() -{ - unsigned val; - asm_inline("int $0x40":"=a"(val):"a"(3)); - return val; -} - - -/* Working with memory allocation */ - -static inline -void* _ksys_alloc(size_t size){ - void *val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(12),"c"(size) - ); - return val; -} - -static inline -int _ksys_free(void *mem) -{ - int val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(13),"c"(mem) - ); - return val; -} - -static inline -void* _ksys_realloc(void *mem, size_t size) -{ - void *val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(20),"c"(size),"d"(mem) - :"memory" - ); - return val; -} - -static inline -int* _ksys_unmap(void *base, size_t offset, size_t size) -{ - int *val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(68),"b"(26),"c"(base),"d"(offset),"S"(size) - ); - return val; -} - - -/* Loading the dynamic coff library */ - -static inline -ksys_coff_etable_t* not_optimized _ksys_cofflib_load(const char* path) -{ - ksys_coff_etable_t *table; - asm_inline( - "int $0x40" - :"=a"(table) - :"a"(68),"b"(19), "c"(path) - ); - return table; -} - -static inline -void* not_optimized _ksys_cofflib_getproc(ksys_coff_etable_t *table, const char* fun_name) -{ - unsigned i=0; - while (1){ - if (NULL == (table+i)->func_name){ - break; - }else{ - if (!_ksys_strcmp(fun_name, (table+i)->func_name)){ - return (table+i)->func_ptr; - } - } - i++; - } - return NULL; -} - - -/* Debug board functions */ - -static inline -void _ksys_debug_putc(char c) -{ - asm_inline("int $0x40"::"a"(63), "b"(1), "c"(c)); -} - -static inline -void _ksys_debug_puts(char *s) -{ - unsigned i=0; - while (*(s+i)){ - asm_inline ("int $0x40"::"a"(63), "b"(1), "c"(*(s+i))); - i++; - } -} - - -/* Working with threads and process */ - -static inline -int _ksys_start_thread(void* proc, char* stack_top) -{ - int val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(51), "b"(1), "c"(proc), "d"(stack_top) - ); - return val; -} - -static inline -void _ksys_focus_window(int slot){ - asm_inline( - "int $0x40" - ::"a"(18), "b"(3), "c"(slot) - ); -} - -static inline -int _ksys_get_thread_slot(int tid){ - int val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(18), "b"(21), "c"(tid) - ); - return val; -} - -static inline -int _ksys_process_info(ksys_proc_table_t* table, int pid) -{ - int val; - asm_inline( - "int $0x40" - :"=a"(val) - :"a"(9), "b"(table), "c"(pid) - :"memory" - ); - return val; -} - -static inline -void _ksys_exit() -{ - asm_inline("int $0x40"::"a"(-1)); -} - - -/* Working with files and directories */ - -static inline -void _ksys_setcwd(char* dir){ - asm_inline( - "int $0x40" - ::"a"(30), "b"(1), "c"(dir) - ); -} - -static inline -int _ksys_getcwd(char* buf, int bufsize){ - register int val; - asm_inline( - "int $0x40" - :"=a"(val):"a"(30), "b"(2), "c"(buf), "d"(bufsize) - ); - return val; -} - -static inline -ksys_ufile_t _ksys_load_file(const char *path) -{ - ksys_ufile_t uf; - asm_inline( - "int $0x40" - :"=a"(uf.data), "=d"(uf.size) - :"a"(68), "b"(27),"c"(path) - ); - return uf; -} - -static inline -ksys_ufile_t _ksys_load_file_enc(const char *path, unsigned file_encoding) -{ - ksys_ufile_t uf; - asm_inline( - "int $0x40" - :"=a"(uf.data), "=d"(uf.size) - :"a"(68), "b"(28),"c"(path), "d"(file_encoding) - ); - return uf; -} - -static inline -int not_optimized _ksys_work_files(const ksys70_t *k) -{ - int status; - asm_inline( - "int $0x40" - :"=a"(status) - :"a"(70), "b"(k) - ); - return status; -} - -static inline -int not_optimized _ksys_file_read_file(const char *name, unsigned long long offset, unsigned size, void *buf, unsigned *bytes_read) -{ - ksys70_t k; - k.p00 = 0; - k.p04 = offset; - k.p12 = size; - k.buf16 = buf; - k.p20 = 0; - k.p21 = name; - int status; - unsigned bytes_read_v; - asm_inline( - "int $0x40" - :"=a"(status), "=b"(bytes_read_v) - :"a"(70), "b"(&k) - ); - if (!status) { - *bytes_read = bytes_read_v; - } - return status; -} - -static inline -int not_optimized _ksys_file_write_file(const char *name, unsigned long long offset, unsigned size, const void *buf, unsigned *bytes_written) -{ - ksys70_t k; - k.p00 = 3; - k.p04 = offset; - k.p12 = size; - k.cbuf16 = buf; - k.p20 = 0; - k.p21 = name; - int status; - unsigned bytes_written_v; - asm_inline( - "int $0x40" - :"=a"(status), "=b"(bytes_written_v) - :"a"(70), "b"(&k) - ); - if (!status) { - *bytes_written = bytes_written_v; - } - return status; -} - -static inline -int not_optimized _ksys_file_get_info(const char *name, ksys_bdfe_t *bdfe) -{ - ksys70_t k; - k.p00 = 5; - k.bdfe = bdfe; - k.p20 = 0; - k.p21 = name; - return _ksys_work_files(&k); -} - -static inline -int not_optimized _ksys_file_delete(const char *name) -{ - ksys70_t k; - k.p00 = 8; - k.p20 = 0; - k.p21 = name; - return _ksys_work_files(&k); -} - -static inline -int not_optimized _ksys_file_rename(const char *name, const char *new_name) -{ - ksys70_t k; - k.p00 = 10; - k.new_name = new_name; - k.p20 = 0; - k.p21 = name; - return _ksys_work_files(&k); -} - - -static inline -int not_optimized _ksys_exec(char *app_name, char *args) -{ - ksys70_t file_opt; - file_opt.p00 = 7; - file_opt.p04dw = 0; - file_opt.p08dw = (unsigned)args; - file_opt.p21 = app_name; - return _ksys_work_files(&file_opt); -} - -static inline -int not_optimized _ksys_mkdir(const char *path) -{ - ksys70_t dir_opt; - dir_opt.p00 = 9; - dir_opt.p21 = path; - return _ksys_work_files(&dir_opt); -} - -/* Working with a named shared memory area. */ - -static inline -int _ksys_shm_open(char *name, int mode, int size, char **new_shm) -{ - int error; - asm_inline( - "int $0x40" - :"=a"(*new_shm), "=d"(error) - :"a"(68), "b"(22), "c"(name), "d"(size), "S"(mode) - ); - return error; -} - - -static inline -void _ksys_shm_close(char *shm_name) -{ - asm_inline( - "int $0x40": - :"a"(68), "b"(23), "c"(shm_name) - ); -} - -#ifdef __cplusplus -} -#endif - -#endif // _KSYS_H_ diff --git a/contrib/kolibri-libc/source/include/limits.h b/contrib/kolibri-libc/source/include/limits.h deleted file mode 100644 index e08af576e7..0000000000 --- a/contrib/kolibri-libc/source/include/limits.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _LIMITS_H_ -#define _LIMITS_H_ - - -#define INT_MAX 2147483647 -#define UINT_MAX (INT_MAX * 2U + 1) - - -#ifndef ARG_MAX -#define ARG_MAX 4096 -#endif - -#ifndef PATH_MAX -#define PATH_MAX 4096 -#endif - - -#endif /* _LIMITS_H_ */ \ No newline at end of file diff --git a/contrib/kolibri-libc/source/include/math.h b/contrib/kolibri-libc/source/include/math.h deleted file mode 100644 index b1749dc50b..0000000000 --- a/contrib/kolibri-libc/source/include/math.h +++ /dev/null @@ -1,171 +0,0 @@ -/* Copyright (C) 1999 DJ Delorie, see COPYING.DJ for details */ -/* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#ifndef _MATH_H_ -#define _MATH_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern double _FUNC(acos)(double _x); -extern double _FUNC(asin)(double _x); -extern double _FUNC(atan)(double _x); -extern double _FUNC(atan2)(double _y, double _x); -extern double _FUNC(ceil)(double _x); -extern double _FUNC(cos)(double _x); -extern double _FUNC(cosh)(double _x); -extern double _FUNC(exp)(double _x); -extern double _FUNC(fabs)(double _x); -extern double _FUNC(floor)(double _x); -extern double _FUNC(fmod)(double _x, double _y); -extern double _FUNC(frexp)(double _x, int *_pexp); -extern double _FUNC(ldexp)(double _x, int _exp); -extern double _FUNC(log)(double _y); -extern double _FUNC(log10)(double _x); -extern double _FUNC(modf)(double _x, double *_pint); -extern double _FUNC(pow)(double _x, double _y); -extern double _FUNC(sin)(double _x); -extern double _FUNC(sinh)(double _x); -extern double _FUNC(sqrt)(double _x); -extern double _FUNC(tan)(double _x); -extern double _FUNC(tanh)(double _x); - -#define M_E 2.7182818284590452354 -#define M_LOG2E 1.4426950408889634074 -#define M_LOG10E 0.43429448190325182765 -#define M_LN2 0.69314718055994530942 -#define M_LN10 2.30258509299404568402 -#define M_PI 3.14159265358979323846 -#define M_PI_2 1.57079632679489661923 -#define M_PI_4 0.78539816339744830962 -#define M_1_PI 0.31830988618379067154 -#define M_2_PI 0.63661977236758134308 -#define M_2_SQRTPI 1.12837916709551257390 -#define M_SQRT2 1.41421356237309504880 -#define M_SQRT1_2 0.70710678118654752440 -#define PI M_PI -#define PI2 M_PI_2 - -extern double _FUNC(acosh)(double); -extern double _FUNC(asinh)(double); -extern double _FUNC(atanh)(double); -extern double _FUNC(cbrt)(double); -extern double _FUNC(exp10)(double _x); -extern double _FUNC(exp2)(double _x); -extern double _FUNC(expm1)(double); -extern double _FUNC(hypot)(double, double); -extern double _FUNC(log1p)(double); -extern double _FUNC(log2)(double _x); -extern long double _FUNC(modfl)(long double _x, long double *_pint); -extern double _FUNC(pow10)(double _x); -extern double _FUNC(pow2)(double _x); -extern double _FUNC(powi)(double, int); -extern void _FUNC(sincos)(double, double *, double *); - -/* These are in libm.a (Cygnus). You must link -lm to get these */ -/* See libm/math.h for comments */ - -#ifndef __cplusplus -struct exception { - int type; - const char *name; - double arg1; - double arg2; - double retval; - int err; -}; -#endif - -extern double _FUNC(erf)(double); -extern double _FUNC(erfc)(double); -extern double _FUNC(gamma)(double); -extern int _FUNC(isinf)(double); -extern int _FUNC(isnan)(double); -extern int _FUNC(finite)(double); -extern double _FUNC(j0)(double); -extern double _FUNC(j1)(double); -extern double _FUNC(jn)(int, double); -extern double _FUNC(lgamma)(double); -extern double _FUNC(nan)(const char*); -extern double _FUNC(y0)(double); -extern double _FUNC(y1)(double); -extern double _FUNC(yn)(int, double); -extern double _FUNC(logb)(double); -extern double _FUNC(nextafter)(double, double); -extern double _FUNC(remainder)(double, double); -extern double _FUNC(scalb)(double, double); -#ifndef __cplusplus -extern int _FUNC(matherr)(struct exception *); -#endif -extern double _FUNC(significand)(double); -extern double _FUNC(copysign)(double, double); -extern int _FUNC(ilogb)(double); -extern double _FUNC(rint)(double); -extern double _FUNC(scalbn)(double, int); -extern double _FUNC(drem)(double, double); -extern double _FUNC(gamma_r)(double, int *); -extern double _FUNC(lgamma_r)(double, int *); -extern float _FUNC(acosf)(float); -extern float _FUNC(asinf)(float); -extern float _FUNC(atanf)(float); -extern float _FUNC(atan2f)(float, float); -extern float _FUNC(cosf)(float); -extern float _FUNC(sinf)(float); -extern float _FUNC(tanf)(float); -extern float _FUNC(coshf)(float); -extern float _FUNC(sinhf)(float); -extern float _FUNC(tanhf)(float); -extern float _FUNC(expf)(float); -extern float _FUNC(frexpf)(float, int *); -extern float _FUNC(ldexpf)(float, int); -extern float _FUNC(logf)(float); -extern float _FUNC(log10f)(float); -extern float _FUNC(modff)(float, float *); -extern float _FUNC(powf)(float, float); -extern float _FUNC(sqrtf)(float); -extern float _FUNC(ceilf)(float); -extern float _FUNC(fabsf)(float); -extern float _FUNC(floorf)(float); -extern float _FUNC(fmodf)(float, float); -extern float _FUNC(erff)(float); -extern float _FUNC(erfcf)(float); -extern float _FUNC(gammaf)(float); -extern float _FUNC(hypotf)(float, float); -extern int _FUNC(isinff)(float); -extern int _FUNC(isnanf)(float); -extern int _FUNC(finitef)(float); -extern float _FUNC(j0f)(float); -extern float _FUNC(j1f)(float); -extern float _FUNC(jnf)(int, float); -extern float _FUNC(lgammaf)(float); -extern float _FUNC(nanf)(const char*); -extern float _FUNC(y0f)(float); -extern float _FUNC(y1f)(float); -extern float _FUNC(ynf)(int, float); -extern float _FUNC(acoshf)(float); -extern float _FUNC(asinhf)(float); -extern float _FUNC(atanhf)(float); -extern float _FUNC(cbrtf)(float); -extern float _FUNC(logbf)(float); -extern float _FUNC(nextafterf)(float, float); -extern float _FUNC(remainderf)(float, float); -extern float _FUNC(scalbf)(float, float); -extern float _FUNC(significandf)(float); -extern float _FUNC(copysignf)(float, float); -extern int _FUNC(ilogbf)(float); -extern float _FUNC(rintf)(float); -extern float _FUNC(scalbnf)(float, int); -extern float _FUNC(dremf)(float, float); -extern float _FUNC(expm1f)(float); -extern float _FUNC(log1pf)(float); -extern float _FUNC(gammaf_r)(float, int *); -extern float _FUNC(lgammaf_r)(float, int *); - -#ifdef __cplusplus -} -#endif - -#endif /* _MATH_H_ */ \ No newline at end of file diff --git a/contrib/kolibri-libc/source/include/setjmp.h b/contrib/kolibri-libc/source/include/setjmp.h deleted file mode 100644 index aa1993680e..0000000000 --- a/contrib/kolibri-libc/source/include/setjmp.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _SETJMP_H_ -#define _SETJMP_H_ - -#include - -typedef unsigned long __jmp_buf[6]; - -typedef struct __jmp_buf_tag { - __jmp_buf __jb; - unsigned long __fl; - unsigned long __ss[128/sizeof(long)]; -} jmp_buf[1]; - -extern int _FUNC(setjmp)(jmp_buf env); -extern void _FUNC(longjmp)(jmp_buf env, int val); - -#endif // _SETJMP_H_ diff --git a/contrib/kolibri-libc/source/include/shell_api.h b/contrib/kolibri-libc/source/include/shell_api.h deleted file mode 100644 index 60fd6552a7..0000000000 --- a/contrib/kolibri-libc/source/include/shell_api.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _SHELL_API_H_ -#define _SHELL_API_H_ - -#include - -extern void _FUNC(shell_printf)(const char* format, ...); -extern void _FUNC(shell_puts)(const char *s); -extern void _FUNC(shell_putc)(char c); -extern char _FUNC(shell_getc)(); -extern void _FUNC(shell_gets)(char *str); -extern void _FUNC(shell_cls)(); -extern void _FUNC(shell_exit)(); -extern unsigned _FUNC(shell_get_pid)(); -extern int _FUNC(shell_ping)(); -#endif \ No newline at end of file diff --git a/contrib/kolibri-libc/source/include/stdarg.h b/contrib/kolibri-libc/source/include/stdarg.h deleted file mode 100644 index bd0928d891..0000000000 --- a/contrib/kolibri-libc/source/include/stdarg.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef _STDARG_H_ -#define _STDARG_H_ - -#include - -#ifdef __x86_64__ -#ifndef _WIN64 - -//This should be in sync with the declaration on our lib/libtcc1.c -/* GCC compatible definition of va_list. */ -typedef struct { - unsigned int gp_offset; - unsigned int fp_offset; - union { - unsigned int overflow_offset; - char *overflow_arg_area; - }; - char *reg_save_area; -} __va_list_struct; - -typedef __va_list_struct va_list[1]; - -extern void _FUNC(__va_start)(__va_list_struct *ap, void *fp); -extern void* _FUNC(__va_arg)(__va_list_struct *ap, int arg_type, int size, int align); - -#define va_start(ap, last) __va_start(ap, __builtin_frame_address(0)) -#define va_arg(ap, type) \ - (*(type *)(__va_arg(ap, __builtin_va_arg_types(type), sizeof(type), __alignof__(type)))) -#define va_copy(dest, src) (*(dest) = *(src)) -#define va_end(ap) - -#else /* _WIN64 */ -typedef char *va_list; -#define va_start(ap,last) __builtin_va_start(ap,last) -#define va_arg(ap,type) (ap += 8, sizeof(type)<=8 ? *(type*)ap : **(type**)ap) -#define va_copy(dest, src) ((dest) = (src)) -#define va_end(ap) -#endif - -#elif __arm__ -typedef char *va_list; -#define _tcc_alignof(type) ((int)&((struct {char c;type x;} *)0)->x) -#define _tcc_align(addr,type) (((unsigned)addr + _tcc_alignof(type) - 1) \ - & ~(_tcc_alignof(type) - 1)) -#define va_start(ap,last) ap = ((char *)&(last)) + ((sizeof(last)+3)&~3) -#define va_arg(ap,type) (ap = (void *) ((_tcc_align(ap,type)+sizeof(type)+3) \ - &~3), *(type *)(ap - ((sizeof(type)+3)&~3))) -#define va_copy(dest, src) (dest) = (src) -#define va_end(ap) - -#elif defined(__aarch64__) -typedef struct { - void *__stack; - void *__gr_top; - void *__vr_top; - int __gr_offs; - int __vr_offs; -} va_list; -#define va_start(ap, last) __va_start(ap, last) -#define va_arg(ap, type) __va_arg(ap, type) -#define va_end(ap) -#define va_copy(dest, src) ((dest) = (src)) - -#else /* __i386__ */ -typedef char *va_list; -/* only correct for i386 */ -#define va_start(ap,last) ap = ((char *)&(last)) + ((sizeof(last)+3)&~3) -#define va_arg(ap,type) (ap += (sizeof(type)+3)&~3, *(type *)(ap - ((sizeof(type)+3)&~3))) -#define va_copy(dest, src) (dest) = (src) -#define va_end(ap) -#endif - -/* fix a buggy dependency on GCC in libio.h */ -typedef va_list __gnuc_va_list; -#define _VA_LIST_DEFINED - -#endif /* _STDARG_H */ diff --git a/contrib/kolibri-libc/source/include/stdbool.h b/contrib/kolibri-libc/source/include/stdbool.h deleted file mode 100644 index 0af22124ae..0000000000 --- a/contrib/kolibri-libc/source/include/stdbool.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _STDBOOL_H_ -#define _STDBOOL_H_ - -/* ISOC99 boolean */ - -#define bool _Bool -#define true 1 -#define false 0 -#define __bool_true_false_are_defined 1 - -#endif /* _STDBOOL_H */ diff --git a/contrib/kolibri-libc/source/include/stddef.h b/contrib/kolibri-libc/source/include/stddef.h deleted file mode 100644 index 37054f62ee..0000000000 --- a/contrib/kolibri-libc/source/include/stddef.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef _STDDEF_H_ -#define _STDDEF_H_ - -typedef __SIZE_TYPE__ size_t; -typedef __PTRDIFF_TYPE__ ssize_t; -typedef __WCHAR_TYPE__ wchar_t; -typedef __PTRDIFF_TYPE__ ptrdiff_t; -typedef __PTRDIFF_TYPE__ intptr_t; -typedef __SIZE_TYPE__ uintptr_t; - -#ifndef __int8_t_defined -#define __int8_t_defined -typedef signed char int8_t; -typedef signed short int int16_t; -typedef signed int int32_t; -typedef signed long long int int64_t; -typedef unsigned char uint8_t; -typedef unsigned short int uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long int uint64_t; -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; -#endif - -#ifndef NULL - #define NULL ((void*)0) -#endif - -#ifdef _DYNAMIC - #define _FUNC(func) (*func) - #define _GLOBAL_VAR(var) *var -#else - #define _FUNC(func) func - #define _GLOBAL_VAR(var) var -#endif - -#define offsetof(type, field) ((size_t)&((type *)0)->field) - -#endif /* _STDDEF_H_ */ \ No newline at end of file diff --git a/contrib/kolibri-libc/source/include/stdint.h b/contrib/kolibri-libc/source/include/stdint.h deleted file mode 100644 index 916e999f6f..0000000000 --- a/contrib/kolibri-libc/source/include/stdint.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _STDINT_H_ -#define _STDINT_H_ - -#include - -#define INT8_MIN (-128) -#define INT8_MAX (127) -#define UINT8_MAX (255) - -#define INT16_MIN (-32768) -#define INT16_MAX (32767) -#define UINT16_MAX (65535) - -#define INT32_MIN (-2147483647L-1) -#define INT32_MAX (2147483647L) -#define UINT32_MAX (4294967295UL) - -#if __have_long64 -#define INT64_MIN (-9223372036854775807L-1L) -#define INT64_MAX (9223372036854775807L) -#define UINT64_MAX (18446744073709551615U) -#elif __have_longlong64 -#define INT64_MIN (-9223372036854775807LL-1LL) -#define INT64_MAX (9223372036854775807LL) -#define UINT64_MAX (18446744073709551615ULL) -#endif - -#endif /* _STDINT_H_*/ diff --git a/contrib/kolibri-libc/source/include/stdio.h b/contrib/kolibri-libc/source/include/stdio.h deleted file mode 100644 index 7593a722c4..0000000000 --- a/contrib/kolibri-libc/source/include/stdio.h +++ /dev/null @@ -1,143 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// \author (c) Marco Paland (info@paland.com) -// 2014-2019, PALANDesign Hannover, Germany -// -// \license The MIT License (MIT) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// -// \brief Tiny printf, sprintf and snprintf implementation, optimized for speed on -// embedded systems with a very limited resources. -// Use this instead of bloated standard/newlib printf. -// These routines are thread safe and reentrant. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _STDIO_H_ -#define _STDIO_H_ - -#include -#include -#include - -extern int _FUNC(puts)(const char *str); -extern int _FUNC(printf)(const char* format, ...); -extern int _FUNC(sprintf)(char* buffer, const char* format, ...); -extern int _FUNC(snprintf)(char* buffer, size_t count, const char* format, ...); -extern int _FUNC(vsnprintf)(char* buffer, size_t count, const char* format, va_list va); -extern int _FUNC(vprintf)(const char* format, va_list va); - -extern void _FUNC(debug_printf)(const char* format, ...); - -typedef size_t fpos_t; - -#define _STDIO_F_R 1 << 0 // Read -#define _STDIO_F_W 1 << 1 // Write -#define _STDIO_F_A 1 << 2 // Append -#define _STDIO_F_X 1 << 3 // eXclusive -#define _STDIO_F_B 1 << 4 // Binary - -typedef struct FILE_s { - char *name; - fpos_t position; - int error; - int eof; - int kind; // 0 - undiefned, 1 - text, 2 - binary - int orientation; // 0 - undiefned, 1 - byte, 2 - wide - int mode; // flags _STDIO_F_* - int append_offset; // do not seek before this point ("a" mode) - int __ungetc_emu_buff; // Uses __ungetc_emu (temporary solution!) -} FILE; - -#define _IOFBF 0 -#define _IOLBF 1 -#define _IONBF 2 - -#define BUFSIZ 1024 - -#define EOF -1 - -#define FOPEN_MAX 0xffffffff - -#define FILENAME_MAX 255 - -#define L_tmpnam FILENAME_MAX - -#define SEEK_CUR 0 -#define SEEK_END 1 -#define SEEK_SET 2 - -#define TMP_MAX FOPEN_MAX - -#define stderr 0is7ye -#define stdin 8yfg8e -#define stdout 7hdgys - -extern int _FUNC(fgetc)(FILE *); -extern char* _FUNC(fgets)(char *restrict, int, FILE *restrict); -extern int _FUNC(fprintf)(FILE *restrict, const char *restrict, ...); -extern int _FUNC(fputc)(int, FILE *); -extern int _FUNC(fputs)(const char *restrict, FILE *restrict); -extern size_t _FUNC(fread)(void *restrict, size_t size, size_t count, FILE *restrict); -extern int _FUNC(fscanf)(FILE *restrict, const char *restrict, ...); -extern size_t _FUNC(fwrite)(const void *restrict, size_t size, size_t count, FILE *restrict); -extern int _FUNC(getc)(FILE *); -#define getc _FUNC(fgetc) -extern int _FUNC(getchar)(void); -extern int _FUNC(printf)(const char *restrict, ...); -extern int _FUNC(putc)(int, FILE *); -extern int _FUNC(putchar)(int); -extern int _FUNC(puts)(const char *); -extern int _FUNC(scanf)(const char *restrict, ...); -extern char* _FUNC(gets)(char *str); -//extern int _FUNC(ungetc)(int, FILE *); -extern int _FUNC(vfprintf)(FILE *restrict, const char *restrict, va_list); -extern int _FUNC(vfscanf)(FILE *restrict, const char *restrict, va_list); -extern int _FUNC(vprintf)(const char *restrict, va_list); -extern int _FUNC(vscanf)(const char *restrict, va_list); -extern int _FUNC(vsscanf)(const char *, const char*, va_list); - -extern int _FUNC(remove)(const char *); -extern int _FUNC(rename)(const char *, const char *); -extern FILE* _FUNC(tmpfile)(void); -extern char* _FUNC(tmpnam)(char *); - -extern int _FUNC(fclose)(FILE *); -extern int _FUNC(fflush)(FILE *); -extern FILE* _FUNC(fopen)(const char *restrict, const char *restrict); -extern FILE* _FUNC(freopen)(const char *restrict, const char *restrict, FILE *restrict); -extern void _FUNC(setbuf)(FILE *restrict, char *restrict); -extern int _FUNC(setvbuf)(FILE *restrict, char *restrict, int, size_t); - -extern int _FUNC(fgetpos)(FILE *restrict, fpos_t *restrict); -extern int _FUNC(fseek)(FILE *, long, int); -extern int _FUNC(fsetpos)(FILE *, const fpos_t *); -extern long _FUNC(ftell)(FILE *); -extern void _FUNC(rewind)(FILE *); - -extern void _FUNC(clearerr)(FILE *); -extern int _FUNC(feof)(FILE *); -extern int _FUNC(ferror)(FILE *); -extern void _FUNC(perror)(const char *); - -extern size_t _FUNC(fread)(void *restrict, size_t, size_t, FILE *restrict); - -extern int _FUNC(getchar)(void); - -#endif // _STDIO_H_ diff --git a/contrib/kolibri-libc/source/include/stdlib.h b/contrib/kolibri-libc/source/include/stdlib.h deleted file mode 100644 index 27520b1947..0000000000 --- a/contrib/kolibri-libc/source/include/stdlib.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef _STDLIB_H_ -#define _STDLIB_H_ - -#include - -#define RAND_MAX 65535 -#ifndef NULL -# define NULL ((void*)0) -#endif - -#define min(a, b) ((a)<(b) ? (a) : (b)) -#define max(a, b) ((a)>(b) ? (a) : (b)) - -extern int _FUNC(atoi)(const char *s); -extern long _FUNC(atol)(const char *); -extern long long _FUNC(atoll)(const char *); -extern void _FUNC(itoa)(int n, char* s); - -extern int _FUNC(abs)(int); -extern long _FUNC(labs)(long); -extern long long _FUNC(llabs)(long long); - -typedef struct { int quot, rem; } div_t; -typedef struct { long quot, rem; } ldiv_t; -typedef struct { long long quot, rem; } lldiv_t; - -extern div_t _FUNC(div)(int, int); -extern ldiv_t _FUNC(ldiv)(long, long); -extern lldiv_t _FUNC(lldiv)(long long, long long); - -extern void* _FUNC(malloc)(size_t size); -extern void* _FUNC(calloc)(size_t num, size_t size); -extern void* _FUNC(realloc)(void *ptr, size_t newsize); -extern void _FUNC(free)(void *ptr); - -extern void _FUNC(exit)(int status); - -#endif \ No newline at end of file diff --git a/contrib/kolibri-libc/source/include/string.h b/contrib/kolibri-libc/source/include/string.h deleted file mode 100644 index e351309c53..0000000000 --- a/contrib/kolibri-libc/source/include/string.h +++ /dev/null @@ -1,186 +0,0 @@ -/* String handling - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#ifndef _STRING_H_ -#define _STRING_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* String function conventions */ - -/* - In any of the following functions taking a size_t n to specify the length of - an array or size of a memory region, n may be 0, but the pointer arguments to - the call shall still be valid unless otherwise stated. -*/ - -/* Copying functions */ - -extern void* _FUNC(memccpy)(void *restrict dest, const void *restrict src, int c, size_t n); - -/* Copy a number of n characters from the memory area pointed to by s2 to the - area pointed to by s1. If the two areas overlap, behaviour is undefined. - Returns the value of s1. -*/ -extern void* _FUNC(memcpy)(void* s1, const void* s2, size_t n); - -/* Copy a number of n characters from the memory area pointed to by s2 to the - area pointed to by s1. The two areas may overlap. - Returns the value of s1. -*/ -extern void* _FUNC(memmove)(void* s1, const void* s2, size_t n); - -/* Copy the character array s2 (including terminating '\0' byte) into the - character array s1. - Returns the value of s1. -*/ -extern char* _FUNC(strcpy)(char* s1, const char* s2); - -/* Copy a maximum of n characters from the character array s2 into the character - array s1. If s2 is shorter than n characters, '\0' bytes will be appended to - the copy in s1 until n characters have been written. If s2 is longer than n - characters, NO terminating '\0' will be written to s1. If the arrays overlap, - behaviour is undefined. - Returns the value of s1. -*/ -extern char* _FUNC(strncpy)(char* s1, const char* s2, size_t n); - -/* Concatenation functions */ - -/* Append the contents of the character array s2 (including terminating '\0') to - the character array s1 (first character of s2 overwriting the '\0' of s1). If - the arrays overlap, behaviour is undefined. - Returns the value of s1. -*/ -extern char* _FUNC(strcat)(char* s1, const char* s2); - -/* Append a maximum of n characters from the character array s2 to the character - array s1 (first character of s2 overwriting the '\0' of s1). A terminating - '\0' is ALWAYS appended, even if the full n characters have already been - written. If the arrays overlap, behaviour is undefined. - Returns the value of s1. -*/ -extern char* _FUNC(strncat)(char* s1, const char* s2, size_t n); - -/* Comparison functions */ - -/* Compare the first n characters of the memory areas pointed to by s1 and s2. - Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if - s1 > s2. -*/ -extern int _FUNC(memcmp)(const void * s1, const void* s2, size_t n); - -/* Compare the character arrays s1 and s2. - Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if - s1 > s2. -*/ -extern int _FUNC(strcmp)(const char * s1, const char* s2); - -/* Compare the character arrays s1 and s2, interpreted as specified by the - LC_COLLATE category of the current locale. - Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if - s1 > s2. - TODO: Currently a dummy wrapper for strcmp() as PDCLib does not yet support - locales. -*/ -extern int _FUNC(strcoll)(const char* s1, const char* s2); - -/* Compare no more than the first n characters of the character arrays s1 and - s2. - Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if - s1 > s2. -*/ -extern int _FUNC(strncmp)(const char* s1, const char* s2, size_t n); - -/* Transform the character array s2 as appropriate for the LC_COLLATE setting of - the current locale. If length of resulting string is less than n, store it in - the character array pointed to by s1. Return the length of the resulting - string. -*/ -extern size_t _FUNC(strxfrm)(char* s1, const char* s2, size_t n); - -/* Search functions */ - -/* Search the first n characters in the memory area pointed to by s for the - character c (interpreted as unsigned char). - Returns a pointer to the first instance found, or NULL. -*/ -extern void* _FUNC(memchr)(const void* s, int c, size_t n); - -/* Search the character array s (including terminating '\0') for the character c - (interpreted as char). - Returns a pointer to the first instance found, or NULL. -*/ -extern char* _FUNC(strchr)(const char* s, int c); - -/* Determine the length of the initial substring of character array s1 which - consists only of characters not from the character array s2. - Returns the length of that substring. -*/ -extern size_t _FUNC(strcspn)(const char* s1, const char* s2); - -/* Search the character array s1 for any character from the character array s2. - Returns a pointer to the first occurrence, or NULL. -*/ -extern char* _FUNC(strpbrk)(const char* s1, const char* s2); - -/* Search the character array s (including terminating '\0') for the character c - (interpreted as char). - Returns a pointer to the last instance found, or NULL. -*/ -extern char* _FUNC(strrchr)(const char * s, int c ); - -/* Determine the length of the initial substring of character array s1 which - consists only of characters from the character array s2. - Returns the length of that substring. -*/ -extern size_t _FUNC(strspn)(const char * s1, const char * s2); - -/* Search the character array s1 for the substring in character array s2. - Returns a pointer to that sbstring, or NULL. If s2 is of length zero, - returns s1. -*/ -extern char* _FUNC(strstr)(const char * s1, const char * s2); - -/* In a series of subsequent calls, parse a C string into tokens. - On the first call to strtok(), the first argument is a pointer to the to-be- - parsed C string. On subsequent calls, the first argument is NULL unless you - want to start parsing a new string. s2 holds an array of separator characters - which can differ from call to call. Leading separators are skipped, the first - trailing separator overwritten with '\0'. - Returns a pointer to the next token. - WARNING: This function uses static storage, and as such is not reentrant. -*/ -extern char* _FUNC(strtok)(char* s1, const char* s2); - -/* Miscellaneous functions */ - -/* Write the character c (interpreted as unsigned char) to the first n - characters of the memory area pointed to by s. - Returns s. -*/ -extern void* _FUNC(memset)(void* s, int c, size_t n); - -/* Map an error number to a (locale-specific) error message string. Error - numbers are typically errno values, but any number is mapped to a message. - TODO: PDCLib does not yet support locales. -*/ -extern char* _FUNC(strerror)(int errnum); - -/* Returns the length of the string s (excluding terminating '\0').*/ -extern size_t _FUNC(strlen)(const char * s); - -/* The function reverses the sequence of characters in the string pointed to by str. */ -extern char* _FUNC(strrev)(char *str); - -/* The strdup function executes the function pointed to by the str argument. */ -extern char* _FUNC(strdup)(const char *str); - -#endif diff --git a/contrib/kolibri-libc/source/include/sys/dirent.h b/contrib/kolibri-libc/source/include/sys/dirent.h deleted file mode 100644 index 584adbea1c..0000000000 --- a/contrib/kolibri-libc/source/include/sys/dirent.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#ifndef _DIRENT_H_ -#define _DIRENT_H_ - -#include -#include - -#define IS_FOLDER 16 -#define IS_FILE 0 - -typedef unsigned ino_t; - -struct dirent{ - ino_t d_ino; //File serial number. - char d_name[PATH_MAX]; // Name of entry. - unsigned d_type; -}; - -typedef struct{ - struct dirent* objs; - ino_t pos; - ino_t num_objs; -}DIR; - - -int _FUNC(closedir)(DIR *dir); -DIR* _FUNC(opendir)(const char *path); -struct dirent* _FUNC(readdir)(DIR *); -void _FUNC(rewinddir)(DIR *dir); -void _FUNC(seekdir)(DIR *dir, unsigned pos); -unsigned _FUNC(telldir)(DIR *dir); - -#endif // _DIRENT_H_ \ No newline at end of file diff --git a/contrib/kolibri-libc/source/include/sys/socket.h b/contrib/kolibri-libc/source/include/sys/socket.h deleted file mode 100644 index 9dceffd1d0..0000000000 --- a/contrib/kolibri-libc/source/include/sys/socket.h +++ /dev/null @@ -1,244 +0,0 @@ -/* Copyright (C) 2019-2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#ifndef _SOCKET_H_ -#define _SOCKET_H_ - -#include -#include -#include - -// Socket Types -#define SOCK_STREAM 1 -#define SOCK_DGRAM 2 -#define SOCK_RAW 3 - -// IP protocols -#define IPPROTO_IP 0 -#define IPPROTO_ICMP 1 -#define IPPROTO_TCP 6 -#define IPPROTO_UDP 17 -#define IPPROTO_RAW 255 - -// IP options -#define IP_TTL 2 - -// Address families -#define AF_UNSPEC 0 -#define AF_LOCAL 1 -#define AF_INET 2 // Default INET=IPv4 -#define AF_INET4 2 // IPv4 -#define AF_INET6 10 // IPv6 - -#define PF_UNSPEC AF_UNSPEC -#define PF_LOCAL AF_LOCAL -#define PF_INET4 AF_INET4 -#define PF_INET6 AF_INET6 - -// internal definition -#define AI_SUPPORTED 0x40F - -// for system function 76 -#define API_ETH (0<<16) -#define API_IPv4 (1<<16) -#define API_ICMP (2<<16) -#define API_UDP (3<<16) -#define API_TCP (4<<16) -#define API_ARP (5<<16) -#define API_PPPOE (6<<16) - -// Socket flags for user calls -#define MSG_NOFLAG 0 -#define MSG_PEEK 0x02 -#define MSG_DONTWAIT 0x40 - -// Socket levels -#define SOL_SOCKET 0xffff - -//Socket options -#define SO_BINDTODEVICE (1<<9) -#define SO_NONBLOCK (1<<31) - -#define PORT(X) (X<<8) - -#pragma pack(push,1) -struct sockaddr{ - unsigned short sin_family; - unsigned short sin_port; - unsigned int sin_addr; - unsigned long long sin_zero; -}; - -typedef struct{ - unsigned int level; - unsigned int optionname; - unsigned int optlenght; - unsigned char options; -}optstruct; -#pragma pack(pop) - -static inline -void _conv_socket_err(){ - switch(errno){ - case 1: errno = ENOBUFS; break; - case 2: errno = EINPROGRESS; break; - case 4: errno = EOPNOTSUPP; break; - case 6: errno = EWOULDBLOCK; break; - case 9: errno = ENOTCONN; break; - case 10: errno = EALREADY; break; - case 11: errno = EINVAL; break; - case 12: errno = EMSGSIZE; break; - case 18: errno = ENOMEM; break; - case 20: errno = EADDRINUSE; break; - case 61: errno = ECONNREFUSED; break; - case 52: errno = ECONNRESET; break; - case 56: errno = EISCONN; break; - case 60: errno = ETIMEDOUT; break; - case 54: errno = ECONNABORTED; break; - default: errno = 0; break; - } -} - -static inline -int socket(int domain, int type, int protocol) -{ - int socket; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(socket) - :"a"(75), "b"(0), "c"(domain), "d"(type), "S"(protocol) - ); - _conv_socket_err(); - return socket; -} - -static inline -int close(int socket) -{ - int status; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(status) - :"a"(75), "b"(1), "c"(socket) - ); - _conv_socket_err(); - return status; -} - -static inline -int bind(int socket, const struct sockaddr *addres, int addres_len) -{ - int status; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(status) - :"a"(75), "b"(2), "c"(socket), "d"(addres), "S"(addres_len) - ); - _conv_socket_err(); - return status; -} - -static inline -int listen(int socket, int backlog) -{ - int status; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(status) - :"a"(75), "b"(3), "c"(socket), "d"(backlog) - ); - _conv_socket_err(); - return status; -} - -static inline -int connect(int socket, const struct sockaddr* address, int socket_len) -{ - int status; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(status) - :"a"(75), "b"(4), "c"(socket), "d"(address), "S"(socket_len) - ); - _conv_socket_err(); - return status; -} - -static inline int -accept(int socket, const struct sockaddr *address, int address_len) -{ - int new_socket; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(new_socket) - :"a"(75), "b"(5), "c"(socket), "d"(address), "S"(address_len) - ); - _conv_socket_err(); - return new_socket; -} - -static inline -int send(int socket, const void *message, size_t msg_len, int flag) -{ - int status; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(status) - :"a"(75), "b"(6), "c"(socket), "d"(message), "S"(msg_len), "D"(flag) - ); - _conv_socket_err(); - return status; -} - -static inline -int recv(int socket, void *buffer, size_t buff_len, int flag) -{ - int status; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(status) - :"a"(75), "b"(7), "c"(socket), "d"(buffer), "S"(buff_len), "D"(flag) - ); - _conv_socket_err(); - return status; -} - -static inline -int setsockopt(int socket,const optstruct* opt) -{ - int status; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(status) - :"a"(75), "b"(8), "c"(socket),"d"(opt) - ); - _conv_socket_err(); - return status; -} - -static inline -int getsockopt(int socket, optstruct* opt) -{ - int status; - asm_inline( - "int $0x40" - :"=b"(errno), "=a"(status) - :"a"(75), "b"(9), "c"(socket),"d"(opt) - ); - _conv_socket_err(); - return status; -} - -static inline -int socketpair(int *socket1, int *socket2) -{ - asm_inline( - "int $0x40" - :"=b"(*socket2), "=a"(*socket1) - :"a"(75), "b"(10) - ); - errno=*socket2; - _conv_socket_err(); - return *socket1; -} - -#endif //_SOCKET_H_ diff --git a/contrib/kolibri-libc/source/include/time.h b/contrib/kolibri-libc/source/include/time.h deleted file mode 100644 index d2b8b17536..0000000000 --- a/contrib/kolibri-libc/source/include/time.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _TIME_H_ -#define _TIME_H_ - -#include - -typedef unsigned long int clock_t; -typedef unsigned long int time_t; -#define clock() _ksys_get_clock() -#define CLOCKS_PER_SEC 100 - -struct tm { - int tm_sec; /* seconds after the minute 0-61*/ - int tm_min; /* minutes after the hour 0-59 */ - int tm_hour; /* hours since midnight 0-23 */ - int tm_mday; /* day of the month 1-31 */ - int tm_mon; /* months since January 0-11 */ - int tm_year; /* years since 1900 */ - int tm_wday; /* days since Sunday 0-6 */ - int tm_yday; /* days since January 1 0-365 */ - int tm_isdst; /* Daylight Saving Time flag */ -}; - -extern time_t _FUNC(mktime)(struct tm * timeptr); -extern time_t _FUNC(time)(time_t* timer); -extern struct tm * _FUNC(localtime)(const time_t * timer); /* non-standard! ignore parameter and return just time now, not generate tm_isdst, tm_yday, tm_wday == -1 */ -extern double _FUNC(difftime)(time_t end, time_t beginning); - -extern struct tm buffertime; - -#endif \ No newline at end of file diff --git a/contrib/kolibri-libc/source/math/acos.s b/contrib/kolibri-libc/source/math/acos.s deleted file mode 100644 index 80e6ffbe78..0000000000 --- a/contrib/kolibri-libc/source/math/acos.s +++ /dev/null @@ -1,22 +0,0 @@ -#include "libc/asm.h" - - .text -LC0: - .double 0d1.00000000000000000000e+00 - -MK_C_SYM(acos) - fldl 4(%esp) - fld1 - fsubp %st(0),%st(1) - fsqrt - - fldl 4(%esp) - fld1 - faddp %st(0),%st(1) - fsqrt - - fpatan - - fld %st(0) - faddp - ret diff --git a/contrib/kolibri-libc/source/math/acosh.c b/contrib/kolibri-libc/source/math/acosh.c deleted file mode 100644 index 6e13bbe6ec..0000000000 --- a/contrib/kolibri-libc/source/math/acosh.c +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - -double -acosh(double x) -{ - return log(x + sqrt(x*x - 1)); -} diff --git a/contrib/kolibri-libc/source/math/asin.s b/contrib/kolibri-libc/source/math/asin.s deleted file mode 100644 index 2d40b73f7d..0000000000 --- a/contrib/kolibri-libc/source/math/asin.s +++ /dev/null @@ -1,14 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -MK_C_SYM(asin) - fldl 4(%esp) - fld %st(0) - fmulp - fld1 - fsubp - fsqrt - fldl 4(%esp) - fxch %st(1) - fpatan - ret - diff --git a/contrib/kolibri-libc/source/math/asinh.c b/contrib/kolibri-libc/source/math/asinh.c deleted file mode 100644 index e27e20da7e..0000000000 --- a/contrib/kolibri-libc/source/math/asinh.c +++ /dev/null @@ -1,9 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - -double -asinh(double x) -{ - return x>0 ? log(x + sqrt(x*x + 1)) : -log(sqrt(x*x+1)-x); -} - diff --git a/contrib/kolibri-libc/source/math/atan.s b/contrib/kolibri-libc/source/math/atan.s deleted file mode 100644 index c75489b646..0000000000 --- a/contrib/kolibri-libc/source/math/atan.s +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -MK_C_SYM(atan) - fldl 4(%esp) - fld1 - fpatan - ret - diff --git a/contrib/kolibri-libc/source/math/atan2.s b/contrib/kolibri-libc/source/math/atan2.s deleted file mode 100644 index ffbbf10d74..0000000000 --- a/contrib/kolibri-libc/source/math/atan2.s +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" - -.data - .align 2 -nan: - .long 0xffffffff - .byte 0xff - .byte 0xff - .byte 0xff - .byte 0x7f - -.text -MK_C_SYM(atan2) - fldl 4(%esp) - fldl 12(%esp) - ftst - fnstsw %ax - sahf - jne doit - fxch %st(1) - ftst - fnstsw %ax - sahf - je isanan - fxch %st(1) -doit: - fpatan - ret -isanan: - movl $1,C_SYM(errno) - fstp %st(0) - fstp %st(0) - fldl nan - ret diff --git a/contrib/kolibri-libc/source/math/atanh.c b/contrib/kolibri-libc/source/math/atanh.c deleted file mode 100644 index 8335dc78b3..0000000000 --- a/contrib/kolibri-libc/source/math/atanh.c +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - -double -atanh(double x) -{ - return log((1+x)/(1-x)) / 2.0; -} diff --git a/contrib/kolibri-libc/source/math/ceil.s b/contrib/kolibri-libc/source/math/ceil.s deleted file mode 100644 index c8d02e1ef9..0000000000 --- a/contrib/kolibri-libc/source/math/ceil.s +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -MK_C_SYM(ceil) - pushl %ebp - movl %esp,%ebp - subl $8,%esp - - fstcw -4(%ebp) - fwait - movw -4(%ebp),%ax - andw $0xf3ff,%ax - orw $0x0800,%ax - movw %ax,-2(%ebp) - fldcw -2(%ebp) - - fldl 8(%ebp) - frndint - - fldcw -4(%ebp) - - movl %ebp,%esp - popl %ebp - ret - diff --git a/contrib/kolibri-libc/source/math/cos.s b/contrib/kolibri-libc/source/math/cos.s deleted file mode 100644 index 7749c73e05..0000000000 --- a/contrib/kolibri-libc/source/math/cos.s +++ /dev/null @@ -1,15 +0,0 @@ -#include "libc/asm.h" -L0: - .quad 0xffffffffffffffff - -MK_C_SYM(cos) - fldl 4(%esp) - fcos - fstsw - sahf - jnp L1 - fstp %st(0) - fldl L0 -L1: - ret - diff --git a/contrib/kolibri-libc/source/math/cosh.c b/contrib/kolibri-libc/source/math/cosh.c deleted file mode 100644 index c2cca978ac..0000000000 --- a/contrib/kolibri-libc/source/math/cosh.c +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - -double cosh(double x) -{ - const double ebig = exp(fabs(x)); - return (ebig + 1.0/ebig) / 2.0; -} diff --git a/contrib/kolibri-libc/source/math/exp.s b/contrib/kolibri-libc/source/math/exp.s deleted file mode 100644 index da49f57369..0000000000 --- a/contrib/kolibri-libc/source/math/exp.s +++ /dev/null @@ -1,31 +0,0 @@ -#include "libc/asm.h" - .data -LCW1: - .word 0 -LCW2: - .word 0 -LC0: - .double 0d1.0e+00 - - .text - -MK_C_SYM(exp) - fldl 4(%esp) - fldl2e - fmulp - fstcw LCW1 - fstcw LCW2 - fwait - andw $0xf3ff,LCW2 - orw $0x0400,LCW2 - fldcw LCW2 - fldl %st(0) - frndint - fldcw LCW1 - fxch %st(1) - fsub %st(1),%st - f2xm1 - faddl LC0 - fscale - fstp %st(1) - ret diff --git a/contrib/kolibri-libc/source/math/fabs.s b/contrib/kolibri-libc/source/math/fabs.s deleted file mode 100644 index a40b3179c0..0000000000 --- a/contrib/kolibri-libc/source/math/fabs.s +++ /dev/null @@ -1,6 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -MK_C_SYM(fabs) - fldl 4(%esp) - fabs - ret diff --git a/contrib/kolibri-libc/source/math/floor.s b/contrib/kolibri-libc/source/math/floor.s deleted file mode 100644 index 75f8c4b969..0000000000 --- a/contrib/kolibri-libc/source/math/floor.s +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -MK_C_SYM(floor) - pushl %ebp - movl %esp,%ebp - subl $8,%esp - - fstcw -4(%ebp) - fwait - movw -4(%ebp),%ax - andw $0xf3ff,%ax - orw $0x0400,%ax - movw %ax,-2(%ebp) - fldcw -2(%ebp) - - fldl 8(%ebp) - frndint - - fldcw -4(%ebp) - - movl %ebp,%esp - popl %ebp - ret - diff --git a/contrib/kolibri-libc/source/math/fmod.s b/contrib/kolibri-libc/source/math/fmod.s deleted file mode 100644 index e74e4e009c..0000000000 --- a/contrib/kolibri-libc/source/math/fmod.s +++ /dev/null @@ -1,29 +0,0 @@ -#include "libc/asm.h" -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ - .data -LCW1: - .word 0 - .align 4 - - .text - -MK_C_SYM(fmod) - fldl 4(%esp) - fldl 12(%esp) - ftst - fnstsw %ax - fxch %st(1) - sahf - jnz next - fstpl %st(0) - jmp out -next: - fprem - fnstsw %ax - sahf - jpe next - fstpl %st(1) -out: - ret - - diff --git a/contrib/kolibri-libc/source/math/frexp.c b/contrib/kolibri-libc/source/math/frexp.c deleted file mode 100644 index 913f16f06b..0000000000 --- a/contrib/kolibri-libc/source/math/frexp.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - -double -frexp(double x, int *exptr) -{ - union { - double d; - unsigned char c[8]; - } u; - - u.d = x; - /* - * The format of the number is: - * Sign, 12 exponent bits, 51 mantissa bits - * The exponent is 1023 biased and there is an implicit zero. - * We get the exponent from the upper bits and set the exponent - * to 0x3fe (1022). - */ - *exptr = (int)(((u.c[7] & 0x7f) << 4) | (u.c[6] >> 4)) - 1022; - u.c[7] &= 0x80; - u.c[7] |= 0x3f; - u.c[6] &= 0x0f; - u.c[6] |= 0xe0; - return u.d; -} diff --git a/contrib/kolibri-libc/source/math/hypot.c b/contrib/kolibri-libc/source/math/hypot.c deleted file mode 100644 index 00b81691b4..0000000000 --- a/contrib/kolibri-libc/source/math/hypot.c +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -/* - * hypot() function for DJGPP. - * - * hypot() computes sqrt(x^2 + y^2). The problem with the obvious - * naive implementation is that it might fail for very large or - * very small arguments. For instance, for large x or y the result - * might overflow even if the value of the function should not, - * because squaring a large number might trigger an overflow. For - * very small numbers, their square might underflow and will be - * silently replaced by zero; this won't cause an exception, but might - * have an adverse effect on the accuracy of the result. - * - * This implementation tries to avoid the above pitfals, without - * inflicting too much of a performance hit. - * - */ - -/// #include -#include -#include - -/* Approximate square roots of DBL_MAX and DBL_MIN. Numbers - between these two shouldn't neither overflow nor underflow - when squared. */ -#define __SQRT_DBL_MAX 1.3e+154 -#define __SQRT_DBL_MIN 2.3e-162 - -double -hypot(double x, double y) -{ - double abig = fabs(x), asmall = fabs(y); - double ratio; - - /* Make abig = max(|x|, |y|), asmall = min(|x|, |y|). */ - if (abig < asmall) - { - double temp = abig; - - abig = asmall; - asmall = temp; - } - - /* Trivial case. */ - if (asmall == 0.) - return abig; - - /* Scale the numbers as much as possible by using its ratio. - For example, if both ABIG and ASMALL are VERY small, then - X^2 + Y^2 might be VERY inaccurate due to loss of - significant digits. Dividing ASMALL by ABIG scales them - to a certain degree, so that accuracy is better. */ - - if ((ratio = asmall / abig) > __SQRT_DBL_MIN && abig < __SQRT_DBL_MAX) - return abig * sqrt(1.0 + ratio*ratio); - else - { - /* Slower but safer algorithm due to Moler and Morrison. Never - produces any intermediate result greater than roughly the - larger of X and Y. Should converge to machine-precision - accuracy in 3 iterations. */ - - double r = ratio*ratio, t, s, p = abig, q = asmall; - - do { - t = 4. + r; - if (t == 4.) - break; - s = r / t; - p += 2. * s * p; - q *= s; - r = (q / p) * (q / p); - } while (1); - - return p; - } -} - -#ifdef TEST - -#include - -int -main(void) -{ - printf("hypot(3, 4) =\t\t\t %25.17e\n", hypot(3., 4.)); - printf("hypot(3*10^150, 4*10^150) =\t %25.17g\n", hypot(3.e+150, 4.e+150)); - printf("hypot(3*10^306, 4*10^306) =\t %25.17g\n", hypot(3.e+306, 4.e+306)); - printf("hypot(3*10^-320, 4*10^-320) =\t %25.17g\n", - hypot(3.e-320, 4.e-320)); - printf("hypot(0.7*DBL_MAX, 0.7*DBL_MAX) =%25.17g\n", - hypot(0.7*DBL_MAX, 0.7*DBL_MAX)); - printf("hypot(DBL_MAX, 1.0) =\t\t %25.17g\n", hypot(DBL_MAX, 1.0)); - printf("hypot(1.0, DBL_MAX) =\t\t %25.17g\n", hypot(1.0, DBL_MAX)); - printf("hypot(0.0, DBL_MAX) =\t\t %25.17g\n", hypot(0.0, DBL_MAX)); - - return 0; -} - -#endif diff --git a/contrib/kolibri-libc/source/math/ldexp.c b/contrib/kolibri-libc/source/math/ldexp.c deleted file mode 100644 index 818cab7578..0000000000 --- a/contrib/kolibri-libc/source/math/ldexp.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include - -double -ldexp(double v, int e) -{ - double two = 2.0; - - if (e < 0) - { - e = -e; /* This just might overflow on two-complement machines. */ - if (e < 0) return 0.0; - while (e > 0) - { - if (e & 1) v /= two; - two *= two; - e >>= 1; - } - } - else if (e > 0) - { - while (e > 0) - { - if (e & 1) v *= two; - two *= two; - e >>= 1; - } - } - return v; -} - diff --git a/contrib/kolibri-libc/source/math/libc/asm.h b/contrib/kolibri-libc/source/math/libc/asm.h deleted file mode 100644 index e86280bebb..0000000000 --- a/contrib/kolibri-libc/source/math/libc/asm.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef __LIBC_ASM_H -#define __LIBC_ASM_H - -#define C_SYM(x) x -// #define C_SYM(x) _##x - -#define MK_C_SYM(x) .global C_SYM(x); C_SYM(x): - -#endif diff --git a/contrib/kolibri-libc/source/math/log.s b/contrib/kolibri-libc/source/math/log.s deleted file mode 100644 index 7390fb8fd1..0000000000 --- a/contrib/kolibri-libc/source/math/log.s +++ /dev/null @@ -1,7 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -MK_C_SYM(log) - fldln2 - fldl 4(%esp) - fyl2x - ret diff --git a/contrib/kolibri-libc/source/math/modf.s b/contrib/kolibri-libc/source/math/modf.s deleted file mode 100644 index af742a7f2b..0000000000 --- a/contrib/kolibri-libc/source/math/modf.s +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ - .text -#include "libc/asm.h" -MK_C_SYM(modf) - pushl %ebp - movl %esp,%ebp - subl $16,%esp - pushl %ebx - fnstcw -4(%ebp) - fwait - movw -4(%ebp),%ax - orw $0x0c3f,%ax - movw %ax,-8(%ebp) - fldcw -8(%ebp) - fwait - fldl 8(%ebp) - frndint - fstpl -16(%ebp) - fwait - movl -16(%ebp),%edx - movl -12(%ebp),%ecx - movl 16(%ebp),%ebx - movl %edx,(%ebx) - movl %ecx,4(%ebx) - fldl 8(%ebp) - fsubl -16(%ebp) - leal -20(%ebp),%esp - fclex - fldcw -4(%ebp) - fwait - popl %ebx - leave - ret diff --git a/contrib/kolibri-libc/source/math/modfl.s b/contrib/kolibri-libc/source/math/modfl.s deleted file mode 100644 index a4cca97a4c..0000000000 --- a/contrib/kolibri-libc/source/math/modfl.s +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -MK_C_SYM(__modfl) -MK_C_SYM(modfl) - pushl %ebp - movl %esp,%ebp - subl $4,%esp - fldt 8(%ebp) - movl 20(%ebp),%eax - fnstcw -2(%ebp) - movw -2(%ebp),%dx - orb $0x0c,%dh - movw %dx,-4(%ebp) - fldcw -4(%ebp) - fld %st(0) - frndint - fldcw -2(%ebp) - fld %st(0) - fstpt (%eax) - fsubrp %st,%st(1) - leave - ret diff --git a/contrib/kolibri-libc/source/math/pow.s b/contrib/kolibri-libc/source/math/pow.s deleted file mode 100644 index f6a3e8bf64..0000000000 --- a/contrib/kolibri-libc/source/math/pow.s +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" - .data -yint: - .word 0,0 -LCW1: - .word 0 -LCW2: - .word 0 - - .text -LC0: - .double 0d1.0e+00 - -frac: - fstcw LCW1 - fstcw LCW2 - fwait - andw $0xf3ff,LCW2 - orw $0x0400,LCW2 - fldcw LCW2 - fldl %st(0) - frndint - fldcw LCW1 - fxch %st(1) - fsub %st(1),%st - ret - -Lpow2: - call frac - f2xm1 - faddl LC0 - fscale - fstp %st(1) - ret - -MK_C_SYM(pow) - fldl 12(%esp) - fldl 4(%esp) - ftst - fnstsw %ax - sahf - jbe xltez - fyl2x - jmp Lpow2 -xltez: - jb xltz - fstp %st(0) - ftst - fnstsw %ax - sahf - ja ygtz - jb error - fstp %st(0) - fld1 - fchs -error: - fsqrt - ret -ygtz: - fstp %st(0) - fldz - ret -xltz: - fabs - fxch %st(1) - call frac - ftst - fnstsw %ax - fstp %st(0) - sahf - je yisint - fstp %st(0) - fchs - jmp error -yisint: - fistl yint - fxch %st(1) - fyl2x - call Lpow2 - andl $1,yint - jz yeven - fchs -yeven: - ret - diff --git a/contrib/kolibri-libc/source/math/pow10.s b/contrib/kolibri-libc/source/math/pow10.s deleted file mode 100644 index 461336ebeb..0000000000 --- a/contrib/kolibri-libc/source/math/pow10.s +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" - .data -LCW1: - .word 0 -LCW2: - .word 0 -LC0: - .double 0d1.0e+00 - - .text - -MK_C_SYM(__pow10) -MK_C_SYM(pow10) - fldl 4(%esp) - fldl2t - fmulp - fstcw LCW1 - fstcw LCW2 - fwait - andw $0xf3ff,LCW2 - orw $0x0400,LCW2 - fldcw LCW2 - fldl %st(0) - frndint - fldcw LCW1 - fxch %st(1) - fsub %st(1),%st - f2xm1 - faddl LC0 - fscale - fstp %st(1) - ret diff --git a/contrib/kolibri-libc/source/math/pow2.s b/contrib/kolibri-libc/source/math/pow2.s deleted file mode 100644 index df86a345e5..0000000000 --- a/contrib/kolibri-libc/source/math/pow2.s +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" - .data -LCW1: - .word 0 -LCW2: - .word 0 -LC0: - .double 0d1.0e+00 - - .text - -MK_C_SYM(__pow2) -MK_C_SYM(pow2) - fldl 4(%esp) - fstcw LCW1 - fstcw LCW2 - fwait - andw $0xf3ff,LCW2 - orw $0x0400,LCW2 - fldcw LCW2 - fldl %st(0) - frndint - fldcw LCW1 - fxch %st(1) - fsub %st(1),%st - f2xm1 - faddl LC0 - fscale - fstp %st(1) - ret diff --git a/contrib/kolibri-libc/source/math/sin.s b/contrib/kolibri-libc/source/math/sin.s deleted file mode 100644 index d914133b05..0000000000 --- a/contrib/kolibri-libc/source/math/sin.s +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -L0: - .quad 0xffffffffffffffff - -MK_C_SYM(sin) - fldl 4(%esp) - fsin - fstsw - sahf - jnp L1 - fstp %st(0) - fldl L0 -L1: - ret - diff --git a/contrib/kolibri-libc/source/math/sinh.c b/contrib/kolibri-libc/source/math/sinh.c deleted file mode 100644 index d00e2803e1..0000000000 --- a/contrib/kolibri-libc/source/math/sinh.c +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - -double sinh(double x) -{ - if(x >= 0.0) - { - const double epos = exp(x); - return (epos - 1.0/epos) / 2.0; - } - else - { - const double eneg = exp(-x); - return (1.0/eneg - eneg) / 2.0; - } -} diff --git a/contrib/kolibri-libc/source/math/sqrt.s b/contrib/kolibri-libc/source/math/sqrt.s deleted file mode 100644 index 42f5be7757..0000000000 --- a/contrib/kolibri-libc/source/math/sqrt.s +++ /dev/null @@ -1,6 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -MK_C_SYM(sqrt) - fldl 4(%esp) - fsqrt - ret diff --git a/contrib/kolibri-libc/source/math/tan.s b/contrib/kolibri-libc/source/math/tan.s deleted file mode 100644 index 447463143b..0000000000 --- a/contrib/kolibri-libc/source/math/tan.s +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include "libc/asm.h" -L0: - .quad 0xffffffffffffffff - -MK_C_SYM(tan) - fldl 4(%esp) - fptan - fstsw - fstp %st(0) - sahf - jnp L1 -/* fstp %st(0) - if exception, there is nothing on the stack */ - fldl L0 -L1: - ret diff --git a/contrib/kolibri-libc/source/math/tanh.c b/contrib/kolibri-libc/source/math/tanh.c deleted file mode 100644 index c2eb966319..0000000000 --- a/contrib/kolibri-libc/source/math/tanh.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ -#include - -double tanh(double x) -{ - if (x > 50) - return 1; - else if (x < -50) - return -1; - else - { - const double ebig = exp(x); - const double esmall = 1.0/ebig; - return (ebig - esmall) / (ebig + esmall); - } -} - diff --git a/contrib/kolibri-libc/source/setjmp/longjmp.s b/contrib/kolibri-libc/source/setjmp/longjmp.s deleted file mode 100644 index f946d34c21..0000000000 --- a/contrib/kolibri-libc/source/setjmp/longjmp.s +++ /dev/null @@ -1,15 +0,0 @@ -.global _longjmp -.global longjmp - -_longjmp: -longjmp: - mov 4(%esp),%edx - mov 8(%esp),%eax - cmp $1,%eax - adc $0, %al - mov (%edx),%ebx - mov 4(%edx),%esi - mov 8(%edx),%edi - mov 12(%edx),%ebp - mov 16(%edx),%esp - jmp *20(%edx) diff --git a/contrib/kolibri-libc/source/setjmp/setjmp.s b/contrib/kolibri-libc/source/setjmp/setjmp.s deleted file mode 100644 index d59c79c2ba..0000000000 --- a/contrib/kolibri-libc/source/setjmp/setjmp.s +++ /dev/null @@ -1,20 +0,0 @@ -.global ___setjmp -.global __setjmp -.global _setjmp -.global setjmp - -___setjmp: -__setjmp: -_setjmp: -setjmp: - mov 4(%esp), %eax - mov %ebx, (%eax) - mov %esi, 4(%eax) - mov %edi, 8(%eax) - mov %ebp, 12(%eax) - lea 4(%esp), %ecx - mov %ecx, 16(%eax) - mov (%esp), %ecx - mov %ecx, 20(%eax) - xor %eax, %eax - ret diff --git a/contrib/kolibri-libc/source/stdio/clearerr.c b/contrib/kolibri-libc/source/stdio/clearerr.c deleted file mode 100644 index b50b929362..0000000000 --- a/contrib/kolibri-libc/source/stdio/clearerr.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -void clearerr(FILE *stream) { - stream->error = 0; - stream->eof = 0; -} diff --git a/contrib/kolibri-libc/source/stdio/conio.c b/contrib/kolibri-libc/source/stdio/conio.c deleted file mode 100644 index 74af6ee943..0000000000 --- a/contrib/kolibri-libc/source/stdio/conio.c +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include "conio.h" - -static char* __con_caption = "Console application"; -static char* __con_dllname = "/sys/lib/console.obj"; - -int __con_is_load = 0; - -unsigned *__con_dll_ver; -void stdcall (*__con_init_hidden)(int wnd_width, int wnd_height,int scr_width, int scr_height, const char* title); -void stdcall (*__con_write_asciiz)(const char* str); -void stdcall (*__con_write_string)(const char* str, unsigned length); -int stdcall (*__con_getch)(void); -short stdcall (*__con_getch2)(void); -int stdcall (*__con_kbhit)(void); -char* stdcall (*__con_gets)(char* str, int n); -char* stdcall (*__con_gets2)(__con_gets2_callback callback, char* str, int n); -void stdcall (*__con_exit)(int status); - -static void __con_lib_link(ksys_coff_etable_t *exp) -{ - __con_dll_ver = _ksys_cofflib_getproc(exp, "con_dll_ver"); - __con_init_hidden = _ksys_cofflib_getproc(exp, "con_init"); - __con_write_asciiz = _ksys_cofflib_getproc(exp, "con_write_asciiz"); - __con_write_string = _ksys_cofflib_getproc(exp, "con_write_string"); - __con_getch = _ksys_cofflib_getproc(exp, "con_getch"); - __con_getch2 = _ksys_cofflib_getproc(exp, "con_getch2"); - __con_kbhit = _ksys_cofflib_getproc(exp, "con_kbhit"); - __con_gets = _ksys_cofflib_getproc(exp, "con_gets"); - __con_gets2 = _ksys_cofflib_getproc(exp, "con_gets2"); - __con_exit = _ksys_cofflib_getproc(exp, "con_exit"); -} - - -int __con_init(void) -{ - return __con_init_opt(-1, -1, -1, -1, __con_caption); -} - - -int __con_init_opt(int wnd_width, int wnd_height,int scr_width, int scr_height, const char* title) -{ - if(!__con_is_load){ - ksys_coff_etable_t *__con_lib; - __con_lib = _ksys_cofflib_load(__con_dllname); - if(__con_lib==NULL){ - _ksys_debug_puts("Error! Can't load console.obj lib\n"); - return 1; - } - __con_lib_link(__con_lib); - __con_init_hidden(wnd_width, wnd_height, scr_width, scr_height, title); - __con_is_load= 1; - return 0; - } - return 1; -} diff --git a/contrib/kolibri-libc/source/stdio/conio.h b/contrib/kolibri-libc/source/stdio/conio.h deleted file mode 100644 index b5a4cef206..0000000000 --- a/contrib/kolibri-libc/source/stdio/conio.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - -This is adapded thunk for console.obj sys library -Only for internal use in stdio.h - -Adapted for tcc by Siemargl, 2016 - -*/ -#ifndef _CONIO_H_ -#define _CONIO_H_ - -#define cdecl __attribute__ ((cdecl)) -#define stdcall __attribute__ ((stdcall)) - -extern void stdcall (*__con_write_asciiz)(const char* str); -/* Display ASCIIZ-string to the console at the current position, shifting -the current position. */ - -extern void stdcall (*__con_write_string)(const char* str, unsigned length); -/* Similar to __con_write_asciiz, but length of the string must be given as a -separate parameter */ - -extern int stdcall (*__con_getch)(void); -/* Get one character from the keyboard. - -For normal characters function returns ASCII-code. For extended -characters (eg, Fx, and arrows), first function call returns 0 -and second call returns the extended code (similar to the DOS-function -input). Starting from version 7, after closing the console window, -this function returns 0. */ - -extern short stdcall (*__con_getch2)(void); -/* Reads a character from the keyboard. Low byte contains the ASCII-code -(0 for extended characters), high byte - advanced code (like in BIOS -input functions). Starting from version 7, after closing the console -window, this function returns 0. */ - -extern int stdcall (*__con_kbhit)(void); -/* Returns 1 if a key was pressed, 0 otherwise. To read pressed keys use -__con_getch and __con_getch2. Starting from version 6, after closing -the console window, this function returns 1. */ - -extern char* stdcall (*__con_gets)(char* str, int n); -/* Reads a string from the keyboard. Reading is interrupted when got -"new line" character, or after reading the (n-1) characters (depending on -what comes first). In the first case the newline is also recorded in the -str. The acquired line is complemented by a null character. -Starting from version 6, the function returns a pointer to the entered -line if reading was successful, and NULL if the console window was closed. */ - -typedef int (stdcall * __con_gets2_callback)(int keycode, char** pstr, int* pn, - int* ppos); - -extern char* stdcall (*__con_gets2)(__con_gets2_callback callback, char* str, int n); -/* Con_gets completely analogous, except that when the user -press unrecognized key, it calls the specified callback-procedure -(which may, for example, handle up / down for history and tab to enter -autocompletion). You should pass to the procedure: key code and three pointers -- to the string, to the maximum length and to the current position. -function may change the contents of string and may change the string -itself (for example, to reallocate memory for increase the limit), -maximum length, and position of the line - pointers are passed for it. -Return value: 0 = line wasn't changed 1 = line changed, you should -remove old string and display new, 2 = line changed, it is necessary -to display it; 3 = immediately exit the function. -Starting from version 6, the function returns a pointer to the entered -line with the successful reading, and NULL if the console window was closed. */ - -extern int __con_is_load; -extern unsigned *__con_dll_ver; - -extern int __con_init(void); -extern int __con_init_opt(int wnd_width, int wnd_height, int scr_width, int scr_height, const char* title); -extern void stdcall (*__con_exit)(int status); - -#endif diff --git a/contrib/kolibri-libc/source/stdio/debug_printf.c b/contrib/kolibri-libc/source/stdio/debug_printf.c deleted file mode 100644 index 0487ff8712..0000000000 --- a/contrib/kolibri-libc/source/stdio/debug_printf.c +++ /dev/null @@ -1,14 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include -#include - -void debug_printf(const char *format,...) -{ - va_list ap; - char log_board[300]; - va_start (ap, format); - vsnprintf(log_board, 300, format, ap); - va_end(ap); - _ksys_debug_puts(log_board); -} diff --git a/contrib/kolibri-libc/source/stdio/fclose.c b/contrib/kolibri-libc/source/stdio/fclose.c deleted file mode 100644 index 8f558f4778..0000000000 --- a/contrib/kolibri-libc/source/stdio/fclose.c +++ /dev/null @@ -1,7 +0,0 @@ -#include -#include - -int fclose(FILE *stream) { - free(stream); - return 0; -} diff --git a/contrib/kolibri-libc/source/stdio/feof.c b/contrib/kolibri-libc/source/stdio/feof.c deleted file mode 100644 index 4b5cb4bde2..0000000000 --- a/contrib/kolibri-libc/source/stdio/feof.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -int feof(FILE *stream) { - return stream->eof; -} diff --git a/contrib/kolibri-libc/source/stdio/ferror.c b/contrib/kolibri-libc/source/stdio/ferror.c deleted file mode 100644 index c87d1516a2..0000000000 --- a/contrib/kolibri-libc/source/stdio/ferror.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -int ferror(FILE *stream) { - return stream->error; -} diff --git a/contrib/kolibri-libc/source/stdio/fflush.c b/contrib/kolibri-libc/source/stdio/fflush.c deleted file mode 100644 index d6ad8ab510..0000000000 --- a/contrib/kolibri-libc/source/stdio/fflush.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -int fflush(FILE *stream) { - return 0; -} diff --git a/contrib/kolibri-libc/source/stdio/fgetc.c b/contrib/kolibri-libc/source/stdio/fgetc.c deleted file mode 100644 index 3e74db15e3..0000000000 --- a/contrib/kolibri-libc/source/stdio/fgetc.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include - -int fgetc(FILE* stream) -{ - unsigned bytes_read; - char c; - - unsigned status = _ksys_file_read_file(stream->name, stream->position, 1, &c, &bytes_read); - - if (status != KSYS_FS_ERR_SUCCESS) { - switch (status) { - case KSYS_FS_ERR_EOF: - stream->eof = 1; - break; - case KSYS_FS_ERR_1: - case KSYS_FS_ERR_2: - case KSYS_FS_ERR_3: - case KSYS_FS_ERR_4: - case KSYS_FS_ERR_5: - case KSYS_FS_ERR_7: - case KSYS_FS_ERR_8: - case KSYS_FS_ERR_9: - case KSYS_FS_ERR_10: - case KSYS_FS_ERR_11: - default: - // Just some IO error, who knows what exactly happened - errno = EIO; - stream->error = errno; - break; - } - return EOF; - } - - stream->position++; - return c; -} diff --git a/contrib/kolibri-libc/source/stdio/fgetpos.c b/contrib/kolibri-libc/source/stdio/fgetpos.c deleted file mode 100644 index cce4f9a2d9..0000000000 --- a/contrib/kolibri-libc/source/stdio/fgetpos.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int fgetpos(FILE *restrict stream, fpos_t *restrict pos) { - *pos = stream->position; - return 0; -} diff --git a/contrib/kolibri-libc/source/stdio/fgets.c b/contrib/kolibri-libc/source/stdio/fgets.c deleted file mode 100644 index 300ae09f7d..0000000000 --- a/contrib/kolibri-libc/source/stdio/fgets.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include "conio.h" -#include - -char *fgets(char *str, int n, FILE *stream) -{ - int i=0, sym_code; - - if(!stream || !str){ - errno = EINVAL; - return NULL; - } - - while (i -#include - -FILE *fopen(const char *restrict _name, const char *restrict _mode) { - FILE *out = malloc(sizeof(FILE)); - return freopen(_name, _mode, out); -} diff --git a/contrib/kolibri-libc/source/stdio/format_print.c b/contrib/kolibri-libc/source/stdio/format_print.c deleted file mode 100644 index dd56107781..0000000000 --- a/contrib/kolibri-libc/source/stdio/format_print.c +++ /dev/null @@ -1,816 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// \author (c) Marco Paland (info@paland.com) -// 2014-2019, PALANDesign Hannover, Germany -// -// \license The MIT License (MIT) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// -// \brief Tiny printf, sprintf and (v)snprintf implementation, optimized for speed on -// embedded systems with a very limited resources. These routines are thread -// safe and reentrant! -// Use this instead of the bloated standard/newlib printf cause these use -// malloc for printf (and may not be thread safe). -// -/////////////////////////////////////////////////////////////////////////////// - -#include -#include -#include -#include "format_print.h" - -// 'ntoa' conversion buffer size, this must be big enough to hold one converted -// numeric number including padded zeros (dynamically created on stack) -// default: 32 byte -#ifndef PRINTF_NTOA_BUFFER_SIZE -#define PRINTF_NTOA_BUFFER_SIZE 32U -#endif - -// 'ftoa' conversion buffer size, this must be big enough to hold one converted -// float number including padded zeros (dynamically created on stack) -// default: 32 byte -#ifndef PRINTF_FTOA_BUFFER_SIZE -#define PRINTF_FTOA_BUFFER_SIZE 32U -#endif - -// support for the floating point type (%f) -// default: activated -#ifndef PRINTF_DISABLE_SUPPORT_FLOAT -#define PRINTF_SUPPORT_FLOAT -#endif - -// support for exponential floating point notation (%e/%g) -// default: activated -#ifndef PRINTF_DISABLE_SUPPORT_EXPONENTIAL -#define PRINTF_SUPPORT_EXPONENTIAL -#endif - -// define the default floating point precision -// default: 6 digits -#ifndef PRINTF_DEFAULT_FLOAT_PRECISION -#define PRINTF_DEFAULT_FLOAT_PRECISION 6U -#endif - -// define the largest float suitable to print with %f -// default: 1e9 -#ifndef PRINTF_MAX_FLOAT -#define PRINTF_MAX_FLOAT 1e9 -#endif - -// support for the long long types (%llu or %p) -// default: activated -#ifndef PRINTF_DISABLE_SUPPORT_LONG_LONG -#define PRINTF_SUPPORT_LONG_LONG -#endif - -// support for the ptrdiff_t type (%t) -// ptrdiff_t is normally defined in as long or long long type -// default: activated -#ifndef PRINTF_DISABLE_SUPPORT_PTRDIFF_T -#define PRINTF_SUPPORT_PTRDIFF_T -#endif - -/////////////////////////////////////////////////////////////////////////////// - -// internal flag definitions -#define FLAGS_ZEROPAD (1U << 0U) -#define FLAGS_LEFT (1U << 1U) -#define FLAGS_PLUS (1U << 2U) -#define FLAGS_SPACE (1U << 3U) -#define FLAGS_HASH (1U << 4U) -#define FLAGS_UPPERCASE (1U << 5U) -#define FLAGS_CHAR (1U << 6U) -#define FLAGS_SHORT (1U << 7U) -#define FLAGS_LONG (1U << 8U) -#define FLAGS_LONG_LONG (1U << 9U) -#define FLAGS_PRECISION (1U << 10U) -#define FLAGS_ADAPT_EXP (1U << 11U) - - -// import float.h for DBL_MAX -#if defined(PRINTF_SUPPORT_FLOAT) -#include -#endif - - -// internal buffer output -void _out_buffer(char character, void* buffer, size_t idx, size_t maxlen) -{ - if (idx < maxlen) { - ((char*)buffer)[idx] = character; - } -} - - -// internal null output -void _out_null(char character, void* buffer, size_t idx, size_t maxlen) -{ - (void)character; (void)buffer; (void)idx; (void)maxlen; -} - - -// internal secure strlen -// \return The length of the string (excluding the terminating 0) limited by 'maxsize' -static inline unsigned int _strnlen_s(const char* str, size_t maxsize) -{ - const char* s; - for (s = str; *s && maxsize--; ++s); - return (unsigned int)(s - str); -} - - -// internal test if char is a digit (0-9) -// \return true if char is a digit -static inline bool _is_digit(char ch) -{ - return (ch >= '0') && (ch <= '9'); -} - - -// internal ASCII string to unsigned int conversion -static unsigned int _atoi(const char** str) -{ - unsigned int i = 0U; - while (_is_digit(**str)) { - i = i * 10U + (unsigned int)(*((*str)++) - '0'); - } - return i; -} - - -// output the specified string in reverse, taking care of any zero-padding -static size_t _out_rev(out_fct_type out, char* buffer, size_t idx, size_t maxlen, const char* buf, size_t len, unsigned int width, unsigned int flags) -{ - const size_t start_idx = idx; - - // pad spaces up to given width - if (!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { - for (size_t i = len; i < width; i++) { - out(' ', buffer, idx++, maxlen); - } - } - - // reverse string - while (len) { - out(buf[--len], buffer, idx++, maxlen); - } - - // append pad spaces up to given width - if (flags & FLAGS_LEFT) { - while (idx - start_idx < width) { - out(' ', buffer, idx++, maxlen); - } - } - - return idx; -} - - -// internal itoa format -static size_t _ntoa_format(out_fct_type out, char* buffer, size_t idx, size_t maxlen, char* buf, size_t len, bool negative, unsigned int base, unsigned int prec, unsigned int width, unsigned int flags) -{ - // pad leading zeros - if (!(flags & FLAGS_LEFT)) { - if (width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) { - width--; - } - while ((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { - buf[len++] = '0'; - } - while ((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { - buf[len++] = '0'; - } - } - - // handle hash - if (flags & FLAGS_HASH) { - if (!(flags & FLAGS_PRECISION) && len && ((len == prec) || (len == width))) { - len--; - if (len && (base == 16U)) { - len--; - } - } - if ((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { - buf[len++] = 'x'; - } - else if ((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { - buf[len++] = 'X'; - } - else if ((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { - buf[len++] = 'b'; - } - if (len < PRINTF_NTOA_BUFFER_SIZE) { - buf[len++] = '0'; - } - } - - if (len < PRINTF_NTOA_BUFFER_SIZE) { - if (negative) { - buf[len++] = '-'; - } - else if (flags & FLAGS_PLUS) { - buf[len++] = '+'; // ignore the space if the '+' exists - } - else if (flags & FLAGS_SPACE) { - buf[len++] = ' '; - } - } - - return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); -} - - -// internal itoa for 'long' type -static size_t _ntoa_long(out_fct_type out, char* buffer, size_t idx, size_t maxlen, unsigned long value, bool negative, unsigned long base, unsigned int prec, unsigned int width, unsigned int flags) -{ - char buf[PRINTF_NTOA_BUFFER_SIZE]; - size_t len = 0U; - - // no hash for 0 values - if (!value) { - flags &= ~FLAGS_HASH; - } - - // write if precision != 0 and value is != 0 - if (!(flags & FLAGS_PRECISION) || value) { - do { - const char digit = (char)(value % base); - buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; - value /= base; - } while (value && (len < PRINTF_NTOA_BUFFER_SIZE)); - } - - return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); -} - - -// internal itoa for 'long long' type -#if defined(PRINTF_SUPPORT_LONG_LONG) -static size_t _ntoa_long_long(out_fct_type out, char* buffer, size_t idx, size_t maxlen, unsigned long long value, bool negative, unsigned long long base, unsigned int prec, unsigned int width, unsigned int flags) -{ - char buf[PRINTF_NTOA_BUFFER_SIZE]; - size_t len = 0U; - - // no hash for 0 values - if (!value) { - flags &= ~FLAGS_HASH; - } - - // write if precision != 0 and value is != 0 - if (!(flags & FLAGS_PRECISION) || value) { - do { - const char digit = (char)(value % base); - buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; - value /= base; - } while (value && (len < PRINTF_NTOA_BUFFER_SIZE)); - } - - return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); -} -#endif // PRINTF_SUPPORT_LONG_LONG - - -#if defined(PRINTF_SUPPORT_FLOAT) - -#if defined(PRINTF_SUPPORT_EXPONENTIAL) -// forward declaration so that _ftoa can switch to exp notation for values > PRINTF_MAX_FLOAT -static size_t _etoa(out_fct_type out, char* buffer, size_t idx, size_t maxlen, double value, unsigned int prec, unsigned int width, unsigned int flags); -#endif - - -// internal ftoa for fixed decimal floating point -static size_t _ftoa(out_fct_type out, char* buffer, size_t idx, size_t maxlen, double value, unsigned int prec, unsigned int width, unsigned int flags) -{ - char buf[PRINTF_FTOA_BUFFER_SIZE]; - size_t len = 0U; - double diff = 0.0; - - // powers of 10 - static const double pow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; - - // test for special values - if (value != value) - return _out_rev(out, buffer, idx, maxlen, "nan", 3, width, flags); - if (value < -DBL_MAX) - return _out_rev(out, buffer, idx, maxlen, "fni-", 4, width, flags); - if (value > DBL_MAX) - return _out_rev(out, buffer, idx, maxlen, (flags & FLAGS_PLUS) ? "fni+" : "fni", (flags & FLAGS_PLUS) ? 4U : 3U, width, flags); - - // test for very large values - // standard printf behavior is to print EVERY whole number digit -- which could be 100s of characters overflowing your buffers == bad - if ((value > PRINTF_MAX_FLOAT) || (value < -PRINTF_MAX_FLOAT)) { -#if defined(PRINTF_SUPPORT_EXPONENTIAL) - return _etoa(out, buffer, idx, maxlen, value, prec, width, flags); -#else - return 0U; -#endif - } - - // test for negative - bool negative = false; - if (value < 0) { - negative = true; - value = 0 - value; - } - - // set default precision, if not set explicitly - if (!(flags & FLAGS_PRECISION)) { - prec = PRINTF_DEFAULT_FLOAT_PRECISION; - } - // limit precision to 9, cause a prec >= 10 can lead to overflow errors - while ((len < PRINTF_FTOA_BUFFER_SIZE) && (prec > 9U)) { - buf[len++] = '0'; - prec--; - } - - int whole = (int)value; - double tmp = (value - whole) * pow10[prec]; - unsigned long frac = (unsigned long)tmp; - diff = tmp - frac; - - if (diff > 0.5) { - ++frac; - // handle rollover, e.g. case 0.99 with prec 1 is 1.0 - if (frac >= pow10[prec]) { - frac = 0; - ++whole; - } - } - else if (diff < 0.5) { - } - else if ((frac == 0U) || (frac & 1U)) { - // if halfway, round up if odd OR if last digit is 0 - ++frac; - } - - if (prec == 0U) { - diff = value - (double)whole; - if ((!(diff < 0.5) || (diff > 0.5)) && (whole & 1)) { - // exactly 0.5 and ODD, then round up - // 1.5 -> 2, but 2.5 -> 2 - ++whole; - } - } - else { - unsigned int count = prec; - // now do fractional part, as an unsigned number - while (len < PRINTF_FTOA_BUFFER_SIZE) { - --count; - buf[len++] = (char)(48U + (frac % 10U)); - if (!(frac /= 10U)) { - break; - } - } - // add extra 0s - while ((len < PRINTF_FTOA_BUFFER_SIZE) && (count-- > 0U)) { - buf[len++] = '0'; - } - if (len < PRINTF_FTOA_BUFFER_SIZE) { - // add decimal - buf[len++] = '.'; - } - } - - // do whole part, number is reversed - while (len < PRINTF_FTOA_BUFFER_SIZE) { - buf[len++] = (char)(48 + (whole % 10)); - if (!(whole /= 10)) { - break; - } - } - - // pad leading zeros - if (!(flags & FLAGS_LEFT) && (flags & FLAGS_ZEROPAD)) { - if (width && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) { - width--; - } - while ((len < width) && (len < PRINTF_FTOA_BUFFER_SIZE)) { - buf[len++] = '0'; - } - } - - if (len < PRINTF_FTOA_BUFFER_SIZE) { - if (negative) { - buf[len++] = '-'; - } - else if (flags & FLAGS_PLUS) { - buf[len++] = '+'; // ignore the space if the '+' exists - } - else if (flags & FLAGS_SPACE) { - buf[len++] = ' '; - } - } - - return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); -} - - -#if defined(PRINTF_SUPPORT_EXPONENTIAL) -// internal ftoa variant for exponential floating-point type, contributed by Martijn Jasperse -static size_t _etoa(out_fct_type out, char* buffer, size_t idx, size_t maxlen, double value, unsigned int prec, unsigned int width, unsigned int flags) -{ - // check for NaN and special values - if ((value != value) || (value > DBL_MAX) || (value < -DBL_MAX)) { - return _ftoa(out, buffer, idx, maxlen, value, prec, width, flags); - } - - // determine the sign - const bool negative = value < 0; - if (negative) { - value = -value; - } - - // default precision - if (!(flags & FLAGS_PRECISION)) { - prec = PRINTF_DEFAULT_FLOAT_PRECISION; - } - - // determine the decimal exponent - // based on the algorithm by David Gay (https://www.ampl.com/netlib/fp/dtoa.c) - union { - uint64_t U; - double F; - } conv; - - conv.F = value; - int exp2 = (int)((conv.U >> 52U) & 0x07FFU) - 1023; // effectively log2 - conv.U = (conv.U & ((1ULL << 52U) - 1U)) | (1023ULL << 52U); // drop the exponent so conv.F is now in [1,2) - // now approximate log10 from the log2 integer part and an expansion of ln around 1.5 - int expval = (int)(0.1760912590558 + exp2 * 0.301029995663981 + (conv.F - 1.5) * 0.289529654602168); - // now we want to compute 10^expval but we want to be sure it won't overflow - exp2 = (int)(expval * 3.321928094887362 + 0.5); - const double z = expval * 2.302585092994046 - exp2 * 0.6931471805599453; - const double z2 = z * z; - conv.U = (uint64_t)(exp2 + 1023) << 52U; - // compute exp(z) using continued fractions, see https://en.wikipedia.org/wiki/Exponential_function#Continued_fractions_for_ex - conv.F *= 1 + 2 * z / (2 - z + (z2 / (6 + (z2 / (10 + z2 / 14))))); - // correct for rounding errors - if (value < conv.F) { - expval--; - conv.F /= 10; - } - - // the exponent format is "%+03d" and largest value is "307", so set aside 4-5 characters - unsigned int minwidth = ((expval < 100) && (expval > -100)) ? 4U : 5U; - - // in "%g" mode, "prec" is the number of *significant figures* not decimals - if (flags & FLAGS_ADAPT_EXP) { - // do we want to fall-back to "%f" mode? - if ((value >= 1e-4) && (value < 1e6)) { - if ((int)prec > expval) { - prec = (unsigned)((int)prec - expval - 1); - } - else { - prec = 0; - } - flags |= FLAGS_PRECISION; // make sure _ftoa respects precision - // no characters in exponent - minwidth = 0U; - expval = 0; - } - else { - // we use one sigfig for the whole part - if ((prec > 0) && (flags & FLAGS_PRECISION)) { - --prec; - } - } - } - - // will everything fit? - unsigned int fwidth = width; - if (width > minwidth) { - // we didn't fall-back so subtract the characters required for the exponent - fwidth -= minwidth; - } else { - // not enough characters, so go back to default sizing - fwidth = 0U; - } - if ((flags & FLAGS_LEFT) && minwidth) { - // if we're padding on the right, DON'T pad the floating part - fwidth = 0U; - } - - // rescale the float value - if (expval) { - value /= conv.F; - } - - // output the floating part - const size_t start_idx = idx; - idx = _ftoa(out, buffer, idx, maxlen, negative ? -value : value, prec, fwidth, flags & ~FLAGS_ADAPT_EXP); - - // output the exponent part - if (minwidth) { - // output the exponential symbol - out((flags & FLAGS_UPPERCASE) ? 'E' : 'e', buffer, idx++, maxlen); - // output the exponent value - idx = _ntoa_long(out, buffer, idx, maxlen, (expval < 0) ? -expval : expval, expval < 0, 10, 0, minwidth-1, FLAGS_ZEROPAD | FLAGS_PLUS); - // might need to right-pad spaces - if (flags & FLAGS_LEFT) { - while (idx - start_idx < width) out(' ', buffer, idx++, maxlen); - } - } - return idx; -} -#endif // PRINTF_SUPPORT_EXPONENTIAL -#endif // PRINTF_SUPPORT_FLOAT - - -// internal vsnprintf -int _vsnprintf(out_fct_type out, char* buffer, const size_t maxlen, const char* format, va_list va) -{ - unsigned int flags, width, precision, n; - size_t idx = 0U; - - if (!buffer) { - // use null output function - out = _out_null; - } - - while (*format) - { - // format specifier? %[flags][width][.precision][length] - if (*format != '%') { - // no - out(*format, buffer, idx++, maxlen); - format++; - continue; - } - else { - // yes, evaluate it - format++; - } - - // evaluate flags - flags = 0U; - do { - switch (*format) { - case '0': flags |= FLAGS_ZEROPAD; format++; n = 1U; break; - case '-': flags |= FLAGS_LEFT; format++; n = 1U; break; - case '+': flags |= FLAGS_PLUS; format++; n = 1U; break; - case ' ': flags |= FLAGS_SPACE; format++; n = 1U; break; - case '#': flags |= FLAGS_HASH; format++; n = 1U; break; - default : n = 0U; break; - } - } while (n); - - // evaluate width field - width = 0U; - if (_is_digit(*format)) { - width = _atoi(&format); - } - else if (*format == '*') { - const int w = va_arg(va, int); - if (w < 0) { - flags |= FLAGS_LEFT; // reverse padding - width = (unsigned int)-w; - } - else { - width = (unsigned int)w; - } - format++; - } - - // evaluate precision field - precision = 0U; - if (*format == '.') { - flags |= FLAGS_PRECISION; - format++; - if (_is_digit(*format)) { - precision = _atoi(&format); - } - else if (*format == '*') { - const int prec = (int)va_arg(va, int); - precision = prec > 0 ? (unsigned int)prec : 0U; - format++; - } - } - - // evaluate length field - switch (*format) { - case 'l' : - flags |= FLAGS_LONG; - format++; - if (*format == 'l') { - flags |= FLAGS_LONG_LONG; - format++; - } - break; - case 'h' : - flags |= FLAGS_SHORT; - format++; - if (*format == 'h') { - flags |= FLAGS_CHAR; - format++; - } - break; -#if defined(PRINTF_SUPPORT_PTRDIFF_T) - case 't' : - flags |= (sizeof(ptrdiff_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); - format++; - break; -#endif - case 'j' : - flags |= (sizeof(intmax_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); - format++; - break; - case 'z' : - flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); - format++; - break; - default : - break; - } - - // evaluate specifier - switch (*format) { - case 'd' : - case 'i' : - case 'u' : - case 'x' : - case 'X' : - case 'o' : - case 'b' : { - // set the base - unsigned int base; - if (*format == 'x' || *format == 'X') { - base = 16U; - } - else if (*format == 'o') { - base = 8U; - } - else if (*format == 'b') { - base = 2U; - } - else { - base = 10U; - flags &= ~FLAGS_HASH; // no hash for dec format - } - // uppercase - if (*format == 'X') { - flags |= FLAGS_UPPERCASE; - } - - // no plus or space flag for u, x, X, o, b - if ((*format != 'i') && (*format != 'd')) { - flags &= ~(FLAGS_PLUS | FLAGS_SPACE); - } - - // ignore '0' flag when precision is given - if (flags & FLAGS_PRECISION) { - flags &= ~FLAGS_ZEROPAD; - } - - // convert the integer - if ((*format == 'i') || (*format == 'd')) { - // signed - if (flags & FLAGS_LONG_LONG) { -#if defined(PRINTF_SUPPORT_LONG_LONG) - const long long value = va_arg(va, long long); - idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value : 0 - value), value < 0, base, precision, width, flags); -#endif - } - else if (flags & FLAGS_LONG) { - const long value = va_arg(va, long); - idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)(value > 0 ? value : 0 - value), value < 0, base, precision, width, flags); - } - else { - const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, int) : va_arg(va, int); - idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value), value < 0, base, precision, width, flags); - } - } - else { - // unsigned - if (flags & FLAGS_LONG_LONG) { -#if defined(PRINTF_SUPPORT_LONG_LONG) - idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags); -#endif - } - else if (flags & FLAGS_LONG) { - idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); - } - else { - const unsigned int value = (flags & FLAGS_CHAR) ? (unsigned char)va_arg(va, unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); - idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); - } - } - format++; - break; - } -#if defined(PRINTF_SUPPORT_FLOAT) - case 'f' : - case 'F' : - if (*format == 'F') flags |= FLAGS_UPPERCASE; - idx = _ftoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags); - format++; - break; -#if defined(PRINTF_SUPPORT_EXPONENTIAL) - case 'e': - case 'E': - case 'g': - case 'G': - if ((*format == 'g')||(*format == 'G')) flags |= FLAGS_ADAPT_EXP; - if ((*format == 'E')||(*format == 'G')) flags |= FLAGS_UPPERCASE; - idx = _etoa(out, buffer, idx, maxlen, va_arg(va, double), precision, width, flags); - format++; - break; -#endif // PRINTF_SUPPORT_EXPONENTIAL -#endif // PRINTF_SUPPORT_FLOAT - case 'c' : { - unsigned int l = 1U; - // pre padding - if (!(flags & FLAGS_LEFT)) { - while (l++ < width) { - out(' ', buffer, idx++, maxlen); - } - } - // char output - out((char)va_arg(va, int), buffer, idx++, maxlen); - // post padding - if (flags & FLAGS_LEFT) { - while (l++ < width) { - out(' ', buffer, idx++, maxlen); - } - } - format++; - break; - } - - case 's' : { - const char* p = va_arg(va, char*); - unsigned int l = _strnlen_s(p, precision ? precision : (size_t)-1); - // pre padding - if (flags & FLAGS_PRECISION) { - l = (l < precision ? l : precision); - } - if (!(flags & FLAGS_LEFT)) { - while (l++ < width) { - out(' ', buffer, idx++, maxlen); - } - } - // string output - while ((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { - out(*(p++), buffer, idx++, maxlen); - } - // post padding - if (flags & FLAGS_LEFT) { - while (l++ < width) { - out(' ', buffer, idx++, maxlen); - } - } - format++; - break; - } - - case 'p' : { - width = sizeof(void*) * 2U; - flags |= FLAGS_ZEROPAD | FLAGS_UPPERCASE; -#if defined(PRINTF_SUPPORT_LONG_LONG) - const bool is_ll = sizeof(uintptr_t) == sizeof(long long); - if (is_ll) { - idx = _ntoa_long_long(out, buffer, idx, maxlen, (uintptr_t)va_arg(va, void*), false, 16U, precision, width, flags); - } - else { -#endif - idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void*)), false, 16U, precision, width, flags); -#if defined(PRINTF_SUPPORT_LONG_LONG) - } -#endif - format++; - break; - } - - case '%' : - out('%', buffer, idx++, maxlen); - format++; - break; - - default : - out(*format, buffer, idx++, maxlen); - format++; - break; - } - } - - // termination - out((char)0, buffer, idx < maxlen ? idx : maxlen - 1U, maxlen); - - // return written chars without terminating \0 - return (int)idx; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/format_print.h b/contrib/kolibri-libc/source/stdio/format_print.h deleted file mode 100644 index 1f13c4c41c..0000000000 --- a/contrib/kolibri-libc/source/stdio/format_print.h +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include - -typedef struct { - void (*fct)(char character, void* arg); - void* arg; -} out_fct_wrap_type; - -typedef void (*out_fct_type)(char character, void* buffer, size_t idx, size_t maxlen); -extern void _out_buffer(char character, void* buffer, size_t idx, size_t maxlen); -extern void _out_null(char character, void* buffer, size_t idx, size_t maxlen); -extern int _vsnprintf(out_fct_type out, char* buffer, const size_t maxlen, const char* format, va_list va); diff --git a/contrib/kolibri-libc/source/stdio/format_scan.c b/contrib/kolibri-libc/source/stdio/format_scan.c deleted file mode 100644 index 84b74fa339..0000000000 --- a/contrib/kolibri-libc/source/stdio/format_scan.c +++ /dev/null @@ -1,403 +0,0 @@ -/* - function for format read from any source - -Siemargl formats as http://www.cplusplus.com/reference/cstdio/scanf/, no wchar though -http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap05.html is used too - -todo: -[characters], [^characters] --%n nothing scanned, filled only if good result --%d, i, u, o, x, p read similar - detect base by prefix 0 or 0x --%a --can overflow unsigned as signed --radix point always '.', no LOCALEs -*/ - -#include -#include -#include -#include -#include "format_scan.h" - -static int __try_parse_real(long double *real, int ch, const void *src, void *save, virtual_getc vgetc, virtual_ungetc vungetc) -// returns 1 if OK, -1 == EOF, -2 parse broken -{ - int sign = 1, have_digits = 0; - long long div; - - if (ch == '+') - { - ch = vgetc(save, src); - if (ch == EOF) return EOF; - } else - if (ch == '-') - { - sign = -1; - ch = vgetc(save, src); - if (ch == EOF) return EOF; - }; - *real = 0.0; - for (;;) // mantissa before point - { - // test ch is valid - if (isdigit(ch)) - { - *real = *real * 10 + ch - '0'; - have_digits++; - ch = vgetc(save, src); - if (ch == EOF || isspace(ch)) break; // ok, just finish num - } else - if (ch == '.' || ch == 'E' || ch == 'e') - { - break; // ok - } - else - { - vungetc(save, ch, src); - break; - } - } - if (ch != '.' && ch != 'E' && ch != 'e') // ok, just integer part - { - *real *= sign; - if (have_digits) - return 1; - else - return -2; - } - - if(ch == '.') - { - ch = vgetc(save, src); - div = 10; // use as divisor - for (;;) // mantissa after point - { - // test ch is valid - if (isdigit(ch)) - { - *real += (double)(ch - '0') / div; - div *= 10; - have_digits++; - ch = vgetc(save, src); - if (ch == EOF || isspace(ch)) break; // ok, just finish num - } else - if (ch == 'E' || ch == 'e') - { - break; // ok - } - else - { - vungetc(save, ch, src); - break; - } - } - if (ch != 'E' && ch != 'e') // ok, real as XX.YY - { - *real *= sign; - if (have_digits) - return 1; - else - return -2; - } - } - - ch = vgetc(save, src); - *real *= sign; - // exponent - sign = 1; - if (ch == '+') - { - ch = vgetc(save, src); - if (ch == EOF) return EOF; - } else - if (ch == '-') - { - sign = -1; - ch = vgetc(save, src); - if (ch == EOF) return EOF; - }; - div = 0; - for (;;) - { - // test ch is valid - if (isdigit(ch)) - { - div = div * 10 + ch - '0'; - ch = vgetc(save, src); - if (ch == EOF || isspace(ch)) break; // ok, just finish num - } - else - { - vungetc(save, ch, src); - break; - } - } - div *= sign; - *real *= pow(10, div); - - return 1; -} - -static int __try_parse_int(long long *digit, int ch, const void *src, void *save, virtual_getc vgetc, virtual_ungetc vungetc) -{ - int sign = 1, base = 10, have_digits = 0; - - if (ch == '+') - { - ch = vgetc(save, src); - if (ch == EOF) return EOF; - } else - if (ch == '-') - { - sign = -1; - ch = vgetc(save, src); - if (ch == EOF) return EOF; - }; - - if (ch == '0') // octal or hex, read next - { - base = 8; - ch = vgetc(save, src); - if (ch == EOF || isspace(ch)) - have_digits++; - else - if (ch == 'x' || ch == 'X') - { - base = 16; - ch = vgetc(save, src); - if (ch == EOF) return EOF; - } - } - *digit = 0; - for (;;) - { - // test ch is valid - if ((isdigit(ch) && base == 10) || - (isdigit(ch) && base == 8 && ch < '8') || - (isxdigit(ch) && base == 16)) - { - if (base == 16) - { - if (ch <= '9') ch-= '0'; - else - if (ch <= 'F') ch = 10 + ch - 'A'; - else - ch = 10 + ch - 'a'; - } - else - ch -= '0'; - *digit = *digit * base + ch; - have_digits++; - ch = vgetc(save, src); - if (ch == EOF || isspace(ch)) break; // ok, just finish num - } - else if (ch == EOF || isspace(ch)) - break; - else - { - vungetc(save, ch, src); - break; - } - } - *digit *= sign; - if (have_digits) - return 1; - else - return -2; -} - - - -int _format_scan(const void *src, const char *fmt, va_list argp, virtual_getc vgetc, virtual_ungetc vungetc) -{ - int i; - int length; - int fmt1, fmt2; // width, precision - size_t pos, posc; - const char *fmtc; // first point to %, fmtc points to specifier - int ch; - int format_flag; - int flag_long; // 2 = long double or long long int or wchar - int *point_to_n = NULL, nread = 0; - int flags; // parsed flags - int save = 0; - char *arg_str; - int *arg_int; - long *arg_long; - long long *arg_longlong; - float *arg_float; - double *arg_double; - long double *arg_longdouble; - long long digit; - long double real; - - - pos = 0; - while(*fmt) - { - while (*fmt && isspace(*fmt)) fmt++; // skip paces in format str - - if (*fmt != '%') // usual char - { - ch = vgetc(&save, src); - if (ch != *fmt++) // char not match format - { - vungetc(&save, ch, src); - break; - } - pos++; - continue; - } - - if (*(fmt + 1) == '%') // %% - { - ch = vgetc(&save, src); - if (ch != '%') // char not match format - { - vungetc(&save, ch, src); - break; - } - pos++; - fmt += 2; - continue; - } - //checking to containg format in the string - fmtc = fmt; - posc = pos; - - flags = 0; - format_flag = 0; - flag_long = 0; // 2 = long double or long long int or wchar - - while(*fmtc != '\0' && !format_flag) // searching end of format - { - fmtc++; posc++; - switch( *fmtc ) - { - case 'a': - format_flag = 1; - flags |= flag_unsigned; - break; - case 'c': case 'd': case 'i': case 'e': case 'f': case 'g': case 's': case 'n': - format_flag = 1; - break; - case 'l': - flag_long = flag_long ? 2 : 1; // ll.eq.L - break; - case 'L': - flag_long = 2; - break; - case 'o': case 'u': case 'x': case 'p': - format_flag = 1; - flags |= flag_unsigned; - break; - case '*': case '.': // just skip - break; - default: - if(isdigit(*fmtc)) break; - goto exit_me; // non format char found - user error - } - } - - if (format_flag == 0) - { - goto exit_me; // format char not found - user error - } - - fmt1 = 0; - fmt2 = 0; - if (posc - pos > 1) // try to read width, precision - { - fmt++; - for(i = pos + 1; i < posc; i++) - { - switch(*fmt) - { - case '0': - if(fmt1 == 0 && (flags & flag_point) == 0) flags |= flag_lead_zeros; - case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - if ((flags & flag_point) == 0) - fmt1 = fmt1 * 10 + (*fmt -'0'); - else - fmt2 = fmt2 * 10 + (*fmt -'0'); - break; - case '*': // ignoring - break; - case '.': - flags |= flag_point; - break; - case 'l': case 'L': // valid chars - skip - break; - default: // must be error - goto exit_me; // format char not found - user error - } - fmt++; - } - } - - // do real work - format arguments values - // skip input spaces - do { - ch = vgetc(&save, src); - if (ch == EOF) goto exit_me; - } while (isspace(ch)); - - switch(*fmtc) - { - case 'n': - point_to_n = va_arg(argp, int*); - vungetc(&save, ch, src); - break; - case 'c': // read width chars, ever spaces - arg_str = va_arg(argp, char*); - if (fmt1 == 0) length = 1; - else length = fmt1; - for (i = 0; i < length;) - { - *arg_str++ = ch; i++; - ch = vgetc(&save, src); - if (ch == EOF) break; - } - if (i < length) goto exit_me; // not enough chars - break; - case 's': - arg_str = va_arg(argp, char*); - if (fmt1 == 0) length = 4095; // max string scan 4096 - else length = fmt1; - for (i = 0; i < length; i++) - { - *arg_str++ = ch; - ch = vgetc(&save, src); - if (ch == EOF || isspace(ch)) break; // ok, just finish string - } - *arg_str++ = '\0'; - break; - case 'd': case 'i': case 'u': - case 'o': case 'p': case 'x': - i = __try_parse_int(&digit, ch, src, &save, vgetc, vungetc); - if (i < 0) goto exit_me; - - if (flag_long == 0) { arg_int = va_arg(argp, int*); *arg_int = (int)digit; } else - if (flag_long == 1) { arg_long = va_arg(argp, long*); *arg_long = (long)digit; } else - if (flag_long == 2) { arg_longlong = va_arg(argp, long long*); *arg_longlong = digit; } - break; - case 'a': case 'A': case 'f': case 'F': - case 'e': case 'E': - case 'g': case 'G': - i = __try_parse_real(&real, ch, src, &save, vgetc, vungetc); - if (i < 0) goto exit_me; - - if (flag_long == 0) { arg_float = va_arg(argp, float*); *arg_float = (float)real; } else - if (flag_long == 1) { arg_double = va_arg(argp, double*); *arg_double = (double)real; } else - if (flag_long == 2) { arg_longdouble = va_arg(argp, long double*); *arg_longdouble = real; } - break; - } - - fmt = fmtc + 1; - nread++; - } -exit_me: - if (point_to_n) *point_to_n = nread; - return nread; -} diff --git a/contrib/kolibri-libc/source/stdio/format_scan.h b/contrib/kolibri-libc/source/stdio/format_scan.h deleted file mode 100644 index b362d20b15..0000000000 --- a/contrib/kolibri-libc/source/stdio/format_scan.h +++ /dev/null @@ -1,20 +0,0 @@ -#include - -typedef int (*virtual_getc)(void *sp, const void *obj); -typedef void (*virtual_ungetc)(void *sp, int c, const void *obj); - -enum flags_t -{ - flag_unsigned = 0x02, - flag_register = 0x04, - flag_plus = 0x08, - flag_left_just = 0x10, - flag_lead_zeros = 0x20, - flag_space_plus = 0x40, - flag_hash_sign = 0x80, - flag_point = 0x100 -}; - -extern char *__scanf_buffer; - -int _format_scan(const void *src, const char *fmt, va_list argp, virtual_getc vgetc, virtual_ungetc vungetc); \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/fputc.c b/contrib/kolibri-libc/source/stdio/fputc.c deleted file mode 100644 index 90230721d4..0000000000 --- a/contrib/kolibri-libc/source/stdio/fputc.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include - -int fputc(int c, FILE *stream) -{ - unsigned bytes_written; - - unsigned status = _ksys_file_write_file(stream->name, stream->position, 1, &c, &bytes_written); - - if (status != KSYS_FS_ERR_SUCCESS) { - switch (status) { - case KSYS_FS_ERR_1: - case KSYS_FS_ERR_2: - case KSYS_FS_ERR_3: - case KSYS_FS_ERR_4: - case KSYS_FS_ERR_5: - case KSYS_FS_ERR_EOF: - case KSYS_FS_ERR_7: - case KSYS_FS_ERR_8: - case KSYS_FS_ERR_9: - case KSYS_FS_ERR_10: - case KSYS_FS_ERR_11: - default: - // Just some IO error, who knows what exactly happened - errno = EIO; - stream->error = errno; - break; - } - return EOF; - } - - stream->position++; - return c; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/fputs.c b/contrib/kolibri-libc/source/stdio/fputs.c deleted file mode 100644 index 21c60df760..0000000000 --- a/contrib/kolibri-libc/source/stdio/fputs.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include - -int fputs(const char *str, FILE *stream){ - for(size_t i = 0; i < strlen(str); i++){ - if (fputc(str[i], stream) == EOF) { - return EOF; - } - } - return 0; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/fread.c b/contrib/kolibri-libc/source/stdio/fread.c deleted file mode 100644 index 31bb3ab5aa..0000000000 --- a/contrib/kolibri-libc/source/stdio/fread.c +++ /dev/null @@ -1,20 +0,0 @@ -#include - -size_t fread(void *restrict ptr, size_t size, size_t nmemb, FILE *restrict stream) { - unsigned bytes_read = 0; - unsigned bytes_count = size * nmemb; - - for (size_t i = 0; i < bytes_count; i++) { - char c = fgetc(stream); - - if (c == EOF) { - break; - } - - *(char*)(ptr+i) = c; - - bytes_read++; - } - - return bytes_read / size; -} diff --git a/contrib/kolibri-libc/source/stdio/freopen.c b/contrib/kolibri-libc/source/stdio/freopen.c deleted file mode 100644 index f914d92096..0000000000 --- a/contrib/kolibri-libc/source/stdio/freopen.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -#include - -FILE *freopen(const char *restrict _name, const char *restrict _mode, FILE *restrict out) { - ksys_bdfe_t info; - if (_ksys_file_get_info(_name, &info)) { - return NULL; - } - - if (!out) { - return NULL; - } - - out->name = strdup(_name); - out->position = 0; - out->error = 0; - out->eof = 0; - out->kind = 0; - out->orientation = 0; - out->mode = 0; - - if (strchr(_mode, 'b')) { out->mode |= _STDIO_F_B; } - if (strchr(_mode, 'x')) { out->mode |= _STDIO_F_X; } - if (strchr(_mode, 'a')) { out->mode |= _STDIO_F_A; } - if (strchr(_mode, 'r')) { out->mode |= _STDIO_F_R; } - if (strchr(_mode, 'w')) { out->mode |= _STDIO_F_W; } - if (strchr(_mode, '+')) { out->mode |= _STDIO_F_R | _STDIO_F_W; } - - if (out->mode & _STDIO_F_A) { - out->position = info.size; - out->append_offset = info.size; - } - - return out; -} diff --git a/contrib/kolibri-libc/source/stdio/fscanf.c b/contrib/kolibri-libc/source/stdio/fscanf.c deleted file mode 100644 index 2cc5d332dc..0000000000 --- a/contrib/kolibri-libc/source/stdio/fscanf.c +++ /dev/null @@ -1,13 +0,0 @@ -#include - -int fscanf(FILE* stream, const char* format, ...) -{ - va_list arg; - int n; - va_start(arg, format); - n = vfscanf(stream, format, arg); - va_end(arg); - return n; -} - - diff --git a/contrib/kolibri-libc/source/stdio/fseek.c b/contrib/kolibri-libc/source/stdio/fseek.c deleted file mode 100644 index 592043310b..0000000000 --- a/contrib/kolibri-libc/source/stdio/fseek.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -int fseek(FILE *stream, long int offset, int whence) { - if (whence == SEEK_SET) { - stream->position = offset; - } else if (whence == SEEK_CUR) { - stream->position += offset; - } else if (whence == SEEK_END) { - ksys_bdfe_t info; - if (_ksys_file_get_info(stream->name, &info)) { - return -1; - } - stream->position = info.size + offset; - } - stream->eof = 0; -} diff --git a/contrib/kolibri-libc/source/stdio/fsetpos.c b/contrib/kolibri-libc/source/stdio/fsetpos.c deleted file mode 100644 index 0247dc8b03..0000000000 --- a/contrib/kolibri-libc/source/stdio/fsetpos.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -int fsetpos(FILE *stream, const fpos_t *pos) { - stream->position = *pos; - stream->eof = 0; - return 0; -} diff --git a/contrib/kolibri-libc/source/stdio/ftell.c b/contrib/kolibri-libc/source/stdio/ftell.c deleted file mode 100644 index ba5c8ce6ab..0000000000 --- a/contrib/kolibri-libc/source/stdio/ftell.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -long int ftell(FILE *stream) { - return stream->position; -} diff --git a/contrib/kolibri-libc/source/stdio/fwrite.c b/contrib/kolibri-libc/source/stdio/fwrite.c deleted file mode 100644 index 0324b2da43..0000000000 --- a/contrib/kolibri-libc/source/stdio/fwrite.c +++ /dev/null @@ -1,17 +0,0 @@ -#include - -size_t fwrite(const void *restrict ptr, size_t size, size_t nmemb, FILE *restrict stream) { - unsigned bytes_written = 0; - unsigned bytes_count = size * nmemb; - - for (size_t i = 0; i < bytes_count; i++) { - char c = *(char*)(ptr+i); - if (fputc(c, stream) != c) { - break; - } - - bytes_written++; - } - - return bytes_written / size; -} diff --git a/contrib/kolibri-libc/source/stdio/getchar.c b/contrib/kolibri-libc/source/stdio/getchar.c deleted file mode 100644 index 829ee18807..0000000000 --- a/contrib/kolibri-libc/source/stdio/getchar.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include "conio.h" - -int getchar(void) { - int c = __con_getch(); - if (c == 0) { - c = EOF; - } - return c; -} diff --git a/contrib/kolibri-libc/source/stdio/gets.c b/contrib/kolibri-libc/source/stdio/gets.c deleted file mode 100644 index f6f4025a00..0000000000 --- a/contrib/kolibri-libc/source/stdio/gets.c +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include -#include "conio.h" -#include - -char *gets(char* str) -{ - __con_init(); - if(__con_gets(str, 4096)==NULL){ - errno = EIO; - return NULL; - } - str[strlen(str)-1]='\0'; - return str; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/perror.c b/contrib/kolibri-libc/source/stdio/perror.c deleted file mode 100644 index f4b32c0b66..0000000000 --- a/contrib/kolibri-libc/source/stdio/perror.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -void perror(const char *s) { - printf("%s: It's some error, maybe...", s); -} diff --git a/contrib/kolibri-libc/source/stdio/printf.c b/contrib/kolibri-libc/source/stdio/printf.c deleted file mode 100644 index f0a6f616e4..0000000000 --- a/contrib/kolibri-libc/source/stdio/printf.c +++ /dev/null @@ -1,13 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include -#include - -#include "format_print.h" - -int printf(const char *format, ...) -{ - va_list arg; - va_start(arg, format); - return vprintf(format, arg); -} diff --git a/contrib/kolibri-libc/source/stdio/puts.c b/contrib/kolibri-libc/source/stdio/puts.c deleted file mode 100644 index b6af23e0ab..0000000000 --- a/contrib/kolibri-libc/source/stdio/puts.c +++ /dev/null @@ -1,13 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include -#include -#include "conio.h" - -int puts(const char *str) -{ - __con_init(); - __con_write_asciiz(str); - __con_write_asciiz("\n"); - return strlen(str); -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/remove.c b/contrib/kolibri-libc/source/stdio/remove.c deleted file mode 100644 index f89f43b21a..0000000000 --- a/contrib/kolibri-libc/source/stdio/remove.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -int remove(const char *name) { - return _ksys_file_delete(name); -} diff --git a/contrib/kolibri-libc/source/stdio/rename.c b/contrib/kolibri-libc/source/stdio/rename.c deleted file mode 100644 index c8d02f1285..0000000000 --- a/contrib/kolibri-libc/source/stdio/rename.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -int rename(const char *name, const char *new_name) { - return _ksys_file_rename(name, new_name); -} diff --git a/contrib/kolibri-libc/source/stdio/rewind.c b/contrib/kolibri-libc/source/stdio/rewind.c deleted file mode 100644 index 5b2a663dd6..0000000000 --- a/contrib/kolibri-libc/source/stdio/rewind.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -void rewind(FILE *stream) { - stream->position = 0; -} diff --git a/contrib/kolibri-libc/source/stdio/scanf.c b/contrib/kolibri-libc/source/stdio/scanf.c deleted file mode 100644 index 1f0e46c7ea..0000000000 --- a/contrib/kolibri-libc/source/stdio/scanf.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "format_scan.h" -#include - -int scanf ( const char * format, ...) -{ - va_list arg; - int n; - va_start(arg, format); - - if(__scanf_buffer == NULL) __scanf_buffer = malloc(4096); - if(__scanf_buffer == NULL) return -3; - - *__scanf_buffer = 0; - n = vscanf(format, arg); - - va_end(arg); - return n; -} - - diff --git a/contrib/kolibri-libc/source/stdio/setbuf.c b/contrib/kolibri-libc/source/stdio/setbuf.c deleted file mode 100644 index 9a027de5b1..0000000000 --- a/contrib/kolibri-libc/source/stdio/setbuf.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -void setbuf(FILE *restrict stream, char *restrict buf) { - return; -} diff --git a/contrib/kolibri-libc/source/stdio/setvbuf.c b/contrib/kolibri-libc/source/stdio/setvbuf.c deleted file mode 100644 index 038826faa6..0000000000 --- a/contrib/kolibri-libc/source/stdio/setvbuf.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -int setvbuf(FILE *restrict stream, char *restrict buf, int mode, size_t size) { - return 0; -} diff --git a/contrib/kolibri-libc/source/stdio/snprintf.c b/contrib/kolibri-libc/source/stdio/snprintf.c deleted file mode 100644 index ef0db0f201..0000000000 --- a/contrib/kolibri-libc/source/stdio/snprintf.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include "format_print.h" - -int snprintf(char* buffer, size_t count, const char* format, ...) -{ - va_list va; - va_start(va, format); - const int ret = _vsnprintf(_out_buffer, buffer, count, format, va); - va_end(va); - return ret; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/sprintf.c b/contrib/kolibri-libc/source/stdio/sprintf.c deleted file mode 100644 index fa50d2b699..0000000000 --- a/contrib/kolibri-libc/source/stdio/sprintf.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include "format_print.h" - -int sprintf(char* buffer, const char* format, ...) -{ - va_list va; - va_start(va, format); - const int ret = _vsnprintf(_out_buffer, buffer, (size_t)-1, format, va); - va_end(va); - return ret; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/sscanf.c b/contrib/kolibri-libc/source/stdio/sscanf.c deleted file mode 100644 index 2268f978ab..0000000000 --- a/contrib/kolibri-libc/source/stdio/sscanf.c +++ /dev/null @@ -1,12 +0,0 @@ -#include - -int sscanf(const char * s, const char * format, ...) -{ - va_list arg; - int n; - va_start(arg, format); - n = vsscanf(s, format, arg); - va_end(arg); - return n; -} - diff --git a/contrib/kolibri-libc/source/stdio/tmpfile.c b/contrib/kolibri-libc/source/stdio/tmpfile.c deleted file mode 100644 index 9d3e3fd9a1..0000000000 --- a/contrib/kolibri-libc/source/stdio/tmpfile.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -FILE *tmpfile(void) { - char name[FILENAME_MAX + 1]; - - if (!tmpnam(name)) { - return NULL; - } - - return fopen(name, "wb+"); -} diff --git a/contrib/kolibri-libc/source/stdio/tmpnam.c b/contrib/kolibri-libc/source/stdio/tmpnam.c deleted file mode 100644 index a6831d6867..0000000000 --- a/contrib/kolibri-libc/source/stdio/tmpnam.c +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include -#include - -static char buf[FILENAME_MAX + 1]; -static int static_index = 0; - -char *tmpnam(char *name) { - ksys_proc_table_t table; - _ksys_process_info(&table, -1); - - char *out = name ? name : buf; - // PID is also unique for each thread - sprintf(out, "/tmp0/1/%x_%x.tmp", table.pid, static_index++); - return out; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/vfscanf.c b/contrib/kolibri-libc/source/stdio/vfscanf.c deleted file mode 100644 index dd2fe560b6..0000000000 --- a/contrib/kolibri-libc/source/stdio/vfscanf.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include -#include "format_scan.h" -#include - -// non standard realization - support for virtually change ONLY ONE char - -static int __ungetc_emu(int c, FILE* stream) -{ - unsigned res; - if(stream){ - errno = EINVAL; - return EOF; - } - if ((stream->mode & 3) != _STDIO_F_R && (stream->mode & _STDIO_F_A) == 0){ - errno = EACCES; - return EOF; - } - ksys_bdfe_t *file_info = malloc(sizeof(ksys_bdfe_t)); - if(file_info==NULL){ - errno = ENOMEM; - return EOF; - } - if(!_ksys_file_get_info(stream->name, file_info)){ - errno = ENFILE; - return EOF; - } - if (stream->position > file_info->size || stream->position == 0 || c == EOF || stream->__ungetc_emu_buff != EOF){ - errno = EOF; - return EOF; - } - - stream->__ungetc_emu_buff = c; - stream->position --; - return c; -} - -static int __virtual_getc_file(void *sp, const void *obj) -{ - FILE *f = (FILE *)obj; - int ch = fgetc(f); - return ch; -} - -static void __virtual_ungetc_file(void *sp, int c, const void *obj) -{ - FILE *f = (FILE *)obj; - if (f) __ungetc_emu(c, f); -} - -int vfscanf(FILE * stream, const char * format, va_list arg) -{ - return _format_scan(stream, format, arg, &__virtual_getc_file, &__virtual_ungetc_file); -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/vprintf.c b/contrib/kolibri-libc/source/stdio/vprintf.c deleted file mode 100644 index 80e8415443..0000000000 --- a/contrib/kolibri-libc/source/stdio/vprintf.c +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include -#include - -#include "conio.h" -#include "format_print.h" - -int vprintf ( const char * format, va_list arg ) -{ - int len = 0; - char s[4096]; - - __con_init(); - len = vsnprintf(s, 4096, format, arg); - __con_write_string(s, len); - return(len); -} diff --git a/contrib/kolibri-libc/source/stdio/vscanf.c b/contrib/kolibri-libc/source/stdio/vscanf.c deleted file mode 100644 index c3b0a703ec..0000000000 --- a/contrib/kolibri-libc/source/stdio/vscanf.c +++ /dev/null @@ -1,44 +0,0 @@ -#include "format_scan.h" -#include - -char *__scanf_buffer=NULL; - -static int __virtual_getc_con(void *sp, const void *obj) -// get next chat from string obj, save point is ptr to string char ptr -{ - int ch; - const char**spc= (const char**)sp; - if (!spc) return EOF; // error - if (!*spc) *spc = __scanf_buffer; // first call, init savepoint - - while (!**spc) // need to read more - { - if(!gets(__scanf_buffer)) return EOF; - *spc = __scanf_buffer; - strcat(__scanf_buffer,"\n"); // imitate delimiter - } - if (**spc == 26 || **spc == 3) // ^C ^Z end of scan, clear buffer - { - *spc = __scanf_buffer; - *__scanf_buffer = 0; - return EOF; // ^C ^Z - } - - ch = **spc; (*spc)++ ; - return ch; -} - -static void __virtual_ungetc_con(void *sp, int c, const void *obj) -// if can, one step back savepoint in s -{ - const char**spc= (const char**)sp; - - if (spc && *spc > __scanf_buffer) (*spc)--; -//printf("Ungetc '%c'[%d];", c, c); -} - - -int vscanf(const char * format, va_list arg) -{ - return _format_scan(NULL, format, arg, &__virtual_getc_con, &__virtual_ungetc_con); -} diff --git a/contrib/kolibri-libc/source/stdio/vsnprintf.c b/contrib/kolibri-libc/source/stdio/vsnprintf.c deleted file mode 100644 index 2758036af5..0000000000 --- a/contrib/kolibri-libc/source/stdio/vsnprintf.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "format_print.h" - -int vsnprintf(char* buffer, size_t count, const char* format, va_list va) -{ - return _vsnprintf(_out_buffer, buffer, count, format, va); -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdio/vsscanf.c b/contrib/kolibri-libc/source/stdio/vsscanf.c deleted file mode 100644 index a39b35d595..0000000000 --- a/contrib/kolibri-libc/source/stdio/vsscanf.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "format_scan.h" - -static int __virtual_getc_str(void *sp, const void *obj) -// get next chat from string obj, save point is ptr to string char ptr -{ - int ch; - const char *s = (const char *)obj; - const char**spc= (const char**)sp; - if (!s || !spc) return EOF; // error - - if (!*spc) *spc = s; // first call, init savepoint - - if (!**spc) return EOF; // EOS - - ch = **spc; (*spc)++ ; - - return ch; -} - -void __virtual_ungetc_str(void *sp, int c, const void *obj) -// if can, one step back savepoint in s -{ - const char *s = (const char *)obj; - const char**spc= (const char**)sp; - - if (s && spc && *spc > s) (*spc)--; -} - -int vsscanf(const char * s, const char * format, va_list arg) -{ - return _format_scan(s, format, arg, &__virtual_getc_str, &__virtual_ungetc_str); -}; \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/___chkstk_ms.c b/contrib/kolibri-libc/source/stdlib/___chkstk_ms.c deleted file mode 100644 index c446841ab4..0000000000 --- a/contrib/kolibri-libc/source/stdlib/___chkstk_ms.c +++ /dev/null @@ -1 +0,0 @@ -void ___chkstk_ms() {} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/abs.c b/contrib/kolibri-libc/source/stdlib/abs.c deleted file mode 100644 index 0e7cebef28..0000000000 --- a/contrib/kolibri-libc/source/stdlib/abs.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int abs(int a) -{ - return a>0 ? a : -a; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/atoi.c b/contrib/kolibri-libc/source/stdlib/atoi.c deleted file mode 100644 index 5252fc8a20..0000000000 --- a/contrib/kolibri-libc/source/stdlib/atoi.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include - -/* -** atoi(s) - convert s to integer. -*/ -int atoi(const char *s) -{ - int sign, n; - while(isspace(*s)) ++s; - sign = 1; - - switch(*s) { - case '-': sign = -1; - case '+': ++s; - } - - n = 0; - while(isdigit(*s)) n = 10 * n + *s++ - '0'; - return (sign * n); -} diff --git a/contrib/kolibri-libc/source/stdlib/atol.c b/contrib/kolibri-libc/source/stdlib/atol.c deleted file mode 100644 index fc6251e6a9..0000000000 --- a/contrib/kolibri-libc/source/stdlib/atol.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -long atol(const char *s) -{ - long n=0; - int neg=0; - while (isspace(*s)) s++; - switch (*s) { - case '-': neg=1; - case '+': s++; - } - /* Compute n as a negative number to avoid overflow on LONG_MIN */ - while (isdigit(*s)) - n = 10*n - (*s++ - '0'); - return neg ? n : -n; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/atoll.c b/contrib/kolibri-libc/source/stdlib/atoll.c deleted file mode 100644 index f8060d7546..0000000000 --- a/contrib/kolibri-libc/source/stdlib/atoll.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -long long atoll(const char *s) -{ - long long n=0; - int neg=0; - while (isspace(*s)) s++; - switch (*s) { - case '-': neg=1; - case '+': s++; - } - /* Compute n as a negative number to avoid overflow on LLONG_MIN */ - while (isdigit(*s)) - n = 10*n - (*s++ - '0'); - return neg ? n : -n; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/calloc.c b/contrib/kolibri-libc/source/stdlib/calloc.c deleted file mode 100644 index ad25ea534a..0000000000 --- a/contrib/kolibri-libc/source/stdlib/calloc.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -void *calloc(size_t num, size_t size) { - return _ksys_alloc(num*size); -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/difftime.c b/contrib/kolibri-libc/source/stdlib/difftime.c deleted file mode 100644 index 44c7323c28..0000000000 --- a/contrib/kolibri-libc/source/stdlib/difftime.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -double difftime (time_t end, time_t beginning) -{ - return end - beginning; -} diff --git a/contrib/kolibri-libc/source/stdlib/div.c b/contrib/kolibri-libc/source/stdlib/div.c deleted file mode 100644 index 99bce10157..0000000000 --- a/contrib/kolibri-libc/source/stdlib/div.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -div_t div(int num, int den) -{ - return (div_t){ num/den, num%den }; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/exit.c b/contrib/kolibri-libc/source/stdlib/exit.c deleted file mode 100644 index 9cd49f33a3..0000000000 --- a/contrib/kolibri-libc/source/stdlib/exit.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include "../stdio/conio.h" -#include - -void exit(int status) -{ - if(__con_is_load){ - __con_exit(status); - } - _ksys_exit(); -} diff --git a/contrib/kolibri-libc/source/stdlib/free.c b/contrib/kolibri-libc/source/stdlib/free.c deleted file mode 100644 index 027b9b71cc..0000000000 --- a/contrib/kolibri-libc/source/stdlib/free.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -void free(void *ptr) { - _ksys_free(ptr); -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/itoa.c b/contrib/kolibri-libc/source/stdlib/itoa.c deleted file mode 100644 index 27ede3a726..0000000000 --- a/contrib/kolibri-libc/source/stdlib/itoa.c +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include - -char *__reverse(char *str) -{ - char tmp, *src, *dst; - size_t len; - if (str != NULL){ - len = strlen (str); - if (len > 1) { - src = str; - dst = src + len - 1; - while (src < dst) { - tmp = *src; - *src++ = *dst; - *dst-- = tmp; - } - } - } - return str; -} - -/* itoa from K&R */ -void itoa(int n, char s[]) -{ - int i, sign; - - if ((sign = n) < 0) /* record sign */ - n = -n; /* make n positive */ - i = 0; - - do { /* generate digits in reverse order */ - s[i++] = n % 10 + '0'; /* get next digit */ - } while ((n /= 10) > 0); /* delete it */ - - if (sign < 0) - s[i++] = '-'; - - __reverse(s); - s[i] = '\0'; - return; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/labs.c b/contrib/kolibri-libc/source/stdlib/labs.c deleted file mode 100644 index 2aca5fc182..0000000000 --- a/contrib/kolibri-libc/source/stdlib/labs.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -long labs(long a) -{ - return a>0 ? a : -a; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/ldiv.c b/contrib/kolibri-libc/source/stdlib/ldiv.c deleted file mode 100644 index e19a084ea2..0000000000 --- a/contrib/kolibri-libc/source/stdlib/ldiv.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -ldiv_t ldiv(long num, long den) -{ - return (ldiv_t){ num/den, num%den }; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/libtcc1.c b/contrib/kolibri-libc/source/stdlib/libtcc1.c deleted file mode 100644 index 576f6ca9c4..0000000000 --- a/contrib/kolibri-libc/source/stdlib/libtcc1.c +++ /dev/null @@ -1,763 +0,0 @@ -/* TCC runtime library. - Parts of this code are (c) 2002 Fabrice Bellard - - Copyright (C) 1987, 1988, 1992, 1994, 1995 Free Software Foundation, Inc. - -This file is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. - -In addition to the permissions in the GNU General Public License, the -Free Software Foundation gives you unlimited permission to link the -compiled version of this file into combinations with other programs, -and to distribute those combinations without any restriction coming -from the use of this file. (The General Public License restrictions -do apply in other respects; for example, they cover modification of -the file, and distribution when not linked into a combine -executable.) - -This file is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -*/ - -//#include -#define TCC_TARGET_I386 - -#define W_TYPE_SIZE 32 -#define BITS_PER_UNIT 8 - -typedef int Wtype; -typedef unsigned int UWtype; -typedef unsigned int USItype; -typedef long long DWtype; -typedef unsigned long long UDWtype; - -struct DWstruct { - Wtype low, high; -}; - -typedef union -{ - struct DWstruct s; - DWtype ll; -} DWunion; - -typedef long double XFtype; -#define WORD_SIZE (sizeof (Wtype) * BITS_PER_UNIT) -#define HIGH_WORD_COEFF (((UDWtype) 1) << WORD_SIZE) - -/* the following deal with IEEE single-precision numbers */ -#define EXCESS 126 -#define SIGNBIT 0x80000000 -#define HIDDEN (1 << 23) -#define SIGN(fp) ((fp) & SIGNBIT) -#define EXP(fp) (((fp) >> 23) & 0xFF) -#define MANT(fp) (((fp) & 0x7FFFFF) | HIDDEN) -#define PACK(s,e,m) ((s) | ((e) << 23) | (m)) - -/* the following deal with IEEE double-precision numbers */ -#define EXCESSD 1022 -#define HIDDEND (1 << 20) -#define EXPD(fp) (((fp.l.upper) >> 20) & 0x7FF) -#define SIGND(fp) ((fp.l.upper) & SIGNBIT) -#define MANTD(fp) (((((fp.l.upper) & 0xFFFFF) | HIDDEND) << 10) | \ - (fp.l.lower >> 22)) -#define HIDDEND_LL ((long long)1 << 52) -#define MANTD_LL(fp) ((fp.ll & (HIDDEND_LL-1)) | HIDDEND_LL) -#define PACKD_LL(s,e,m) (((long long)((s)+((e)<<20))<<32)|(m)) - -/* the following deal with x86 long double-precision numbers */ -#define EXCESSLD 16382 -#define EXPLD(fp) (fp.l.upper & 0x7fff) -#define SIGNLD(fp) ((fp.l.upper) & 0x8000) - -/* only for x86 */ -union ldouble_long { - long double ld; - struct { - unsigned long long lower; - unsigned short upper; - } l; -}; - -union double_long { - double d; -#if 1 - struct { - unsigned int lower; - int upper; - } l; -#else - struct { - int upper; - unsigned int lower; - } l; -#endif - long long ll; -}; - -union float_long { - float f; - unsigned int l; -}; - -/* XXX: we don't support several builtin supports for now */ -#if !defined(TCC_TARGET_X86_64) && !defined(TCC_TARGET_ARM) - -/* XXX: use gcc/tcc intrinsic ? */ -#if defined(TCC_TARGET_I386) -#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ - __asm__ ("subl %5,%1\n\tsbbl %3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "0" ((USItype) (ah)), \ - "g" ((USItype) (bh)), \ - "1" ((USItype) (al)), \ - "g" ((USItype) (bl))) -#define umul_ppmm(w1, w0, u, v) \ - __asm__ ("mull %3" \ - : "=a" ((USItype) (w0)), \ - "=d" ((USItype) (w1)) \ - : "%0" ((USItype) (u)), \ - "rm" ((USItype) (v))) -#define udiv_qrnnd(q, r, n1, n0, dv) \ - __asm__ ("divl %4" \ - : "=a" ((USItype) (q)), \ - "=d" ((USItype) (r)) \ - : "0" ((USItype) (n0)), \ - "1" ((USItype) (n1)), \ - "rm" ((USItype) (dv))) -#define count_leading_zeros(count, x) \ - do { \ - USItype __cbtmp; \ - __asm__ ("bsrl %1,%0" \ - : "=r" (__cbtmp) : "rm" ((USItype) (x))); \ - (count) = __cbtmp ^ 31; \ - } while (0) -#else -#error unsupported CPU type -#endif - -/* most of this code is taken from libgcc2.c from gcc */ -UDWtype __udivmoddi4 (UDWtype n, UDWtype d, UDWtype *rp) -{ - DWunion ww; - DWunion nn, dd; - DWunion rr; - UWtype d0, d1, n0, n1, n2; - UWtype q0, q1; - UWtype b, bm; - - nn.ll = n; - dd.ll = d; - - d0 = dd.s.low; - d1 = dd.s.high; - n0 = nn.s.low; - n1 = nn.s.high; - -#if !defined(UDIV_NEEDS_NORMALIZATION) - if (d1 == 0) - { - if (d0 > n1) - { - /* 0q = nn / 0D */ - - udiv_qrnnd (q0, n0, n1, n0, d0); - q1 = 0; - - /* Remainder in n0. */ - } - else - { - /* qq = NN / 0d */ - - if (d0 == 0) - d0 = 1 / d0; /* Divide intentionally by zero. */ - - udiv_qrnnd (q1, n1, 0, n1, d0); - udiv_qrnnd (q0, n0, n1, n0, d0); - - /* Remainder in n0. */ - } - - if (rp != 0) - { - rr.s.low = n0; - rr.s.high = 0; - *rp = rr.ll; - } - } - -#else /* UDIV_NEEDS_NORMALIZATION */ - - if (d1 == 0) - { - if (d0 > n1) - { - /* 0q = nn / 0D */ - - count_leading_zeros (bm, d0); - - if (bm != 0) - { - /* Normalize, i.e. make the most significant bit of the - denominator set. */ - - d0 = d0 << bm; - n1 = (n1 << bm) | (n0 >> (W_TYPE_SIZE - bm)); - n0 = n0 << bm; - } - - udiv_qrnnd (q0, n0, n1, n0, d0); - q1 = 0; - - /* Remainder in n0 >> bm. */ - } - else - { - /* qq = NN / 0d */ - - if (d0 == 0) - d0 = 1 / d0; /* Divide intentionally by zero. */ - - count_leading_zeros (bm, d0); - - if (bm == 0) - { - /* From (n1 >= d0) /\ (the most significant bit of d0 is set), - conclude (the most significant bit of n1 is set) /\ (the - leading quotient digit q1 = 1). - - This special case is necessary, not an optimization. - (Shifts counts of W_TYPE_SIZE are undefined.) */ - - n1 -= d0; - q1 = 1; - } - else - { - /* Normalize. */ - - b = W_TYPE_SIZE - bm; - - d0 = d0 << bm; - n2 = n1 >> b; - n1 = (n1 << bm) | (n0 >> b); - n0 = n0 << bm; - - udiv_qrnnd (q1, n1, n2, n1, d0); - } - - /* n1 != d0... */ - - udiv_qrnnd (q0, n0, n1, n0, d0); - - /* Remainder in n0 >> bm. */ - } - - if (rp != 0) - { - rr.s.low = n0 >> bm; - rr.s.high = 0; - *rp = rr.ll; - } - } -#endif /* UDIV_NEEDS_NORMALIZATION */ - - else - { - if (d1 > n1) - { - /* 00 = nn / DD */ - - q0 = 0; - q1 = 0; - - /* Remainder in n1n0. */ - if (rp != 0) - { - rr.s.low = n0; - rr.s.high = n1; - *rp = rr.ll; - } - } - else - { - /* 0q = NN / dd */ - - count_leading_zeros (bm, d1); - if (bm == 0) - { - /* From (n1 >= d1) /\ (the most significant bit of d1 is set), - conclude (the most significant bit of n1 is set) /\ (the - quotient digit q0 = 0 or 1). - - This special case is necessary, not an optimization. */ - - /* The condition on the next line takes advantage of that - n1 >= d1 (true due to program flow). */ - if (n1 > d1 || n0 >= d0) - { - q0 = 1; - sub_ddmmss (n1, n0, n1, n0, d1, d0); - } - else - q0 = 0; - - q1 = 0; - - if (rp != 0) - { - rr.s.low = n0; - rr.s.high = n1; - *rp = rr.ll; - } - } - else - { - UWtype m1, m0; - /* Normalize. */ - - b = W_TYPE_SIZE - bm; - - d1 = (d1 << bm) | (d0 >> b); - d0 = d0 << bm; - n2 = n1 >> b; - n1 = (n1 << bm) | (n0 >> b); - n0 = n0 << bm; - - udiv_qrnnd (q0, n1, n2, n1, d1); - umul_ppmm (m1, m0, q0, d0); - - if (m1 > n1 || (m1 == n1 && m0 > n0)) - { - q0--; - sub_ddmmss (m1, m0, m1, m0, d1, d0); - } - - q1 = 0; - - /* Remainder in (n1n0 - m1m0) >> bm. */ - if (rp != 0) - { - sub_ddmmss (n1, n0, n1, n0, m1, m0); - rr.s.low = (n1 << b) | (n0 >> bm); - rr.s.high = n1 >> bm; - *rp = rr.ll; - } - } - } - } - - ww.s.low = q0; - ww.s.high = q1; - return ww.ll; -} - -#define __negdi2(a) (-(a)) - -long long __divdi3(long long u, long long v) -{ - int c = 0; - DWunion uu, vv; - DWtype w; - - uu.ll = u; - vv.ll = v; - - if (uu.s.high < 0) { - c = ~c; - uu.ll = __negdi2 (uu.ll); - } - if (vv.s.high < 0) { - c = ~c; - vv.ll = __negdi2 (vv.ll); - } - w = __udivmoddi4 (uu.ll, vv.ll, (UDWtype *) 0); - if (c) - w = __negdi2 (w); - return w; -} - -// https://github.com/KaMeHb-UA/UE4m/blob/1d9ad5bfead06520570c7f24dad062f9f8717c1a/\ -Engine/Extras/ThirdPartyNotUE/emsdk/emscripten/incoming/system/lib/compiler-rt/lib/\ -builtins/divmoddi4.c -long long __divmoddi4(long long a, long long b, long long* rem) -{ - long long d = __divdi3(a, b); - *rem = a - (d * b); - return d; -} - -long long __moddi3(long long u, long long v) -{ - int c = 0; - DWunion uu, vv; - DWtype w; - - uu.ll = u; - vv.ll = v; - - if (uu.s.high < 0) { - c = ~c; - uu.ll = __negdi2 (uu.ll); - } - if (vv.s.high < 0) - vv.ll = __negdi2 (vv.ll); - - __udivmoddi4 (uu.ll, vv.ll, (UDWtype *) &w); - if (c) - w = __negdi2 (w); - return w; -} - -unsigned long long __udivdi3(unsigned long long u, unsigned long long v) -{ - return __udivmoddi4 (u, v, (UDWtype *) 0); -} - -unsigned long long __umoddi3(unsigned long long u, unsigned long long v) -{ - UDWtype w; - - __udivmoddi4 (u, v, &w); - return w; -} - -/* XXX: fix tcc's code generator to do this instead */ -long long __ashrdi3(long long a, int b) -{ -#ifdef __TINYC__ - DWunion u; - u.ll = a; - if (b >= 32) { - u.s.low = u.s.high >> (b - 32); - u.s.high = u.s.high >> 31; - } else if (b != 0) { - u.s.low = ((unsigned)u.s.low >> b) | (u.s.high << (32 - b)); - u.s.high = u.s.high >> b; - } - return u.ll; -#else - return a >> b; -#endif -} - -/* XXX: fix tcc's code generator to do this instead */ -unsigned long long __lshrdi3(unsigned long long a, int b) -{ -#ifdef __TINYC__ - DWunion u; - u.ll = a; - if (b >= 32) { - u.s.low = (unsigned)u.s.high >> (b - 32); - u.s.high = 0; - } else if (b != 0) { - u.s.low = ((unsigned)u.s.low >> b) | (u.s.high << (32 - b)); - u.s.high = (unsigned)u.s.high >> b; - } - return u.ll; -#else - return a >> b; -#endif -} - -/* XXX: fix tcc's code generator to do this instead */ -long long __ashldi3(long long a, int b) -{ -#ifdef __TINYC__ - DWunion u; - u.ll = a; - if (b >= 32) { - u.s.high = (unsigned)u.s.low << (b - 32); - u.s.low = 0; - } else if (b != 0) { - u.s.high = ((unsigned)u.s.high << b) | ((unsigned)u.s.low >> (32 - b)); - u.s.low = (unsigned)u.s.low << b; - } - return u.ll; -#else - return a << b; -#endif -} - -#ifndef COMMIT_4ad186c5ef61_IS_FIXED -long long __tcc_cvt_ftol(long double x) -{ - unsigned c0, c1; - long long ret; - __asm__ __volatile__ ("fnstcw %0" : "=m" (c0)); - c1 = c0 | 0x0C00; - __asm__ __volatile__ ("fldcw %0" : : "m" (c1)); - __asm__ __volatile__ ("fistpll %0" : "=m" (ret)); - __asm__ __volatile__ ("fldcw %0" : : "m" (c0)); - return ret; -} -#endif - -#endif /* !__x86_64__ */ - -/* XXX: fix tcc's code generator to do this instead */ -float __floatundisf(unsigned long long a) -{ - DWunion uu; - XFtype r; - - uu.ll = a; - if (uu.s.high >= 0) { - return (float)uu.ll; - } else { - r = (XFtype)uu.ll; - r += 18446744073709551616.0; - return (float)r; - } -} - -double __floatundidf(unsigned long long a) -{ - DWunion uu; - XFtype r; - - uu.ll = a; - if (uu.s.high >= 0) { - return (double)uu.ll; - } else { - r = (XFtype)uu.ll; - r += 18446744073709551616.0; - return (double)r; - } -} - -long double __floatundixf(unsigned long long a) -{ - DWunion uu; - XFtype r; - - uu.ll = a; - if (uu.s.high >= 0) { - return (long double)uu.ll; - } else { - r = (XFtype)uu.ll; - r += 18446744073709551616.0; - return (long double)r; - } -} - -unsigned long long __fixunssfdi (float a1) -{ - register union float_long fl1; - register int exp; - register unsigned long l; - - fl1.f = a1; - - if (fl1.l == 0) - return (0); - - exp = EXP (fl1.l) - EXCESS - 24; - - l = MANT(fl1.l); - if (exp >= 41) - return (unsigned long long)-1; - else if (exp >= 0) - return (unsigned long long)l << exp; - else if (exp >= -23) - return l >> -exp; - else - return 0; -} - -unsigned long long __fixunsdfdi (double a1) -{ - register union double_long dl1; - register int exp; - register unsigned long long l; - - dl1.d = a1; - - if (dl1.ll == 0) - return (0); - - exp = EXPD (dl1) - EXCESSD - 53; - - l = MANTD_LL(dl1); - - if (exp >= 12) - return (unsigned long long)-1; - else if (exp >= 0) - return l << exp; - else if (exp >= -52) - return l >> -exp; - else - return 0; -} - -unsigned long long __fixunsxfdi (long double a1) -{ - register union ldouble_long dl1; - register int exp; - register unsigned long long l; - - dl1.ld = a1; - - if (dl1.l.lower == 0 && dl1.l.upper == 0) - return (0); - - exp = EXPLD (dl1) - EXCESSLD - 64; - - l = dl1.l.lower; - - if (exp > 0) - return (unsigned long long)-1; - else if (exp >= -63) - return l >> -exp; - else - return 0; -} - -long long __fixsfdi (float a1) -{ - long long ret; int s; - ret = __fixunssfdi((s = a1 >= 0) ? a1 : -a1); - return s ? ret : -ret; -} - -long long __fixdfdi (double a1) -{ - long long ret; int s; - ret = __fixunsdfdi((s = a1 >= 0) ? a1 : -a1); - return s ? ret : -ret; -} - -long long __fixxfdi (long double a1) -{ - long long ret; int s; - ret = __fixunsxfdi((s = a1 >= 0) ? a1 : -a1); - return s ? ret : -ret; -} - -#if defined(TCC_TARGET_X86_64) && !defined(_WIN64) - -#ifndef __TINYC__ -#include -#include -#include -#else -/* Avoid including stdlib.h because it is not easily available when - cross compiling */ -#include /* size_t definition is needed for a x86_64-tcc to parse memset() */ -extern void *malloc(unsigned long long); -extern void *memset(void *s, int c, size_t n); -extern void free(void*); -extern void abort(void); -#endif - -enum __va_arg_type { - __va_gen_reg, __va_float_reg, __va_stack -}; - -//This should be in sync with the declaration on our include/stdarg.h -/* GCC compatible definition of va_list. */ -typedef struct { - unsigned int gp_offset; - unsigned int fp_offset; - union { - unsigned int overflow_offset; - char *overflow_arg_area; - }; - char *reg_save_area; -} __va_list_struct; - -#undef __va_start -#undef __va_arg -#undef __va_copy -#undef __va_end - -void __va_start(__va_list_struct *ap, void *fp) -{ - memset(ap, 0, sizeof(__va_list_struct)); - *ap = *(__va_list_struct *)((char *)fp - 16); - ap->overflow_arg_area = (char *)fp + ap->overflow_offset; - ap->reg_save_area = (char *)fp - 176 - 16; -} - -void *__va_arg(__va_list_struct *ap, - enum __va_arg_type arg_type, - int size, int align) -{ - size = (size + 7) & ~7; - align = (align + 7) & ~7; - switch (arg_type) { - case __va_gen_reg: - if (ap->gp_offset + size <= 48) { - ap->gp_offset += size; - return ap->reg_save_area + ap->gp_offset - size; - } - goto use_overflow_area; - - case __va_float_reg: - if (ap->fp_offset < 128 + 48) { - ap->fp_offset += 16; - return ap->reg_save_area + ap->fp_offset - 16; - } - size = 8; - goto use_overflow_area; - - case __va_stack: - use_overflow_area: - ap->overflow_arg_area += size; - ap->overflow_arg_area = (char*)((intptr_t)(ap->overflow_arg_area + align - 1) & -(intptr_t)align); - return ap->overflow_arg_area - size; - - default: -#ifndef __TINYC__ - fprintf(stderr, "unknown ABI type for __va_arg\n"); -#endif - abort(); - } -} - -#endif /* __x86_64__ */ - -/* Flushing for tccrun */ -#if defined(TCC_TARGET_X86_64) || defined(TCC_TARGET_I386) - -void __clear_cache(void *beginning, void *end) -{ -} - -#elif defined(TCC_TARGET_ARM) - -#define _GNU_SOURCE -#include -#include -#include - -void __clear_cache(void *beginning, void *end) -{ -/* __ARM_NR_cacheflush is kernel private and should not be used in user space. - * However, there is no ARM asm parser in tcc so we use it for now */ -#if 1 - syscall(__ARM_NR_cacheflush, beginning, end, 0); -#else - __asm__ ("push {r7}\n\t" - "mov r7, #0xf0002\n\t" - "mov r2, #0\n\t" - "swi 0\n\t" - "pop {r7}\n\t" - "ret"); -#endif -} - -#else -#warning __clear_cache not defined for this architecture, avoid using tcc -run -#endif diff --git a/contrib/kolibri-libc/source/stdlib/llabs.c b/contrib/kolibri-libc/source/stdlib/llabs.c deleted file mode 100644 index 87a10037f2..0000000000 --- a/contrib/kolibri-libc/source/stdlib/llabs.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -long long llabs(long long a) -{ - return a>0 ? a : -a; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/lldiv.c b/contrib/kolibri-libc/source/stdlib/lldiv.c deleted file mode 100644 index 7d589145c5..0000000000 --- a/contrib/kolibri-libc/source/stdlib/lldiv.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -lldiv_t lldiv(long long num, long long den) -{ - return (lldiv_t){ num/den, num%den }; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/localtime.c b/contrib/kolibri-libc/source/stdlib/localtime.c deleted file mode 100644 index ac59d9639c..0000000000 --- a/contrib/kolibri-libc/source/stdlib/localtime.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include - -struct tm buffertime; - -struct tm * localtime (const time_t * timer) -/* non-standard! ignore parameter and return just time now */ -{ - int kos_date, kos_time; - kos_date = _ksys_get_date(); - kos_time = _ksys_get_clock(); - - int bcd_day = (kos_date >> 16); - int bcd_mon = ((kos_date & 0xFF00) >> 8); - int bcd_year = (kos_date & 0xFF); - buffertime.tm_mday = ((bcd_day & 0xF0)>>4)*10 + (bcd_day & 0x0F); - buffertime.tm_mon = ((bcd_mon & 0xF0)>>4)*10 + (bcd_mon & 0x0F) - 1; - buffertime.tm_year = ((bcd_year & 0xF0)>>4)*10 + (bcd_year & 0x0F) + 100; - - buffertime.tm_wday = buffertime.tm_yday = buffertime.tm_isdst = -1; /* temporary */ - - int bcd_sec = (kos_time >> 16); - int bcd_min = ((kos_time & 0xFF00) >> 8); - int bcd_hour = (kos_time & 0xFF); - - buffertime.tm_sec = ((bcd_sec & 0xF0)>>4)*10 + (bcd_sec & 0x0F); - buffertime.tm_min = ((bcd_min & 0xF0)>>4)*10 + (bcd_min & 0x0F); - buffertime.tm_hour = ((bcd_hour & 0xF0)>>4)*10 + (bcd_hour & 0x0F); - - return &buffertime; -} - diff --git a/contrib/kolibri-libc/source/stdlib/malloc.c b/contrib/kolibri-libc/source/stdlib/malloc.c deleted file mode 100644 index c0c912f8dc..0000000000 --- a/contrib/kolibri-libc/source/stdlib/malloc.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -void *malloc(size_t size) { - return _ksys_alloc(size); -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/mktime.c b/contrib/kolibri-libc/source/stdlib/mktime.c deleted file mode 100644 index a41c5c4f20..0000000000 --- a/contrib/kolibri-libc/source/stdlib/mktime.c +++ /dev/null @@ -1,23 +0,0 @@ -#include - -time_t mktime (struct tm * timeptr) -{ - int utcdiff = -3; - const int mon_days [] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; - unsigned long int tyears, tdays, leaps, utc_hrs; - int i; - - tyears = timeptr->tm_year - 70 ;// tm->tm_year is from 1900. - leaps = (tyears + 2) / 4; // no of next two lines until year 2100. - i = (timeptr->tm_year - 100) / 100; - leaps -= ( (i/4)*3 + i%4 ); - tdays = 0; - for (i=0; i < timeptr->tm_mon; i++) tdays += mon_days[i]; - - tdays += timeptr->tm_mday-1; // days of month passed. - tdays = tdays + (tyears * 365) + leaps; - - utc_hrs = timeptr->tm_hour + utcdiff; // for your time zone. - return (tdays * 86400) + (utc_hrs * 3600) + (timeptr->tm_min * 60) + timeptr->tm_sec; -} - diff --git a/contrib/kolibri-libc/source/stdlib/realloc.c b/contrib/kolibri-libc/source/stdlib/realloc.c deleted file mode 100644 index 196d80a47b..0000000000 --- a/contrib/kolibri-libc/source/stdlib/realloc.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -void *realloc(void *ptr, size_t newsize) { - return _ksys_realloc(ptr, newsize); -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/stdlib/time.c b/contrib/kolibri-libc/source/stdlib/time.c deleted file mode 100644 index 6d7833fe2e..0000000000 --- a/contrib/kolibri-libc/source/stdlib/time.c +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include - -time_t time (time_t* timer) -{ - time_t t = mktime(localtime(0)); - if (timer) *timer = t; - return t; -} diff --git a/contrib/kolibri-libc/source/string/memccpy.c b/contrib/kolibri-libc/source/string/memccpy.c deleted file mode 100644 index 884cb76ccf..0000000000 --- a/contrib/kolibri-libc/source/string/memccpy.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -void *memccpy(void *restrict dest, const void *restrict src, int c, size_t n) -{ - unsigned char *d = dest; - const unsigned char *s = src; - - c = (unsigned char)c; - for (; n && (*d=*s)!=c; n--, s++, d++); - -tail: - if (n) return d+1; - return 0; -} diff --git a/contrib/kolibri-libc/source/string/memchr.c b/contrib/kolibri-libc/source/string/memchr.c deleted file mode 100644 index 348db6bece..0000000000 --- a/contrib/kolibri-libc/source/string/memchr.c +++ /dev/null @@ -1,24 +0,0 @@ -/* memchr( const void *, int, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -void * memchr( const void * s, int c, size_t n ) -{ - const unsigned char * p = ( const unsigned char * ) s; - - while ( n-- ) - { - if ( *p == ( unsigned char ) c ) - { - return ( void * ) p; - } - - ++p; - } - - return NULL; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/memcmp.c b/contrib/kolibri-libc/source/string/memcmp.c deleted file mode 100644 index de156091b1..0000000000 --- a/contrib/kolibri-libc/source/string/memcmp.c +++ /dev/null @@ -1,26 +0,0 @@ -/* memcmp( const void *, const void *, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -int memcmp( const void * s1, const void * s2, size_t n ) -{ - const unsigned char * p1 = ( const unsigned char * ) s1; - const unsigned char * p2 = ( const unsigned char * ) s2; - - while ( n-- ) - { - if ( *p1 != *p2 ) - { - return *p1 - *p2; - } - - ++p1; - ++p2; - } - - return 0; -} diff --git a/contrib/kolibri-libc/source/string/memcpy.c b/contrib/kolibri-libc/source/string/memcpy.c deleted file mode 100644 index 0d707df047..0000000000 --- a/contrib/kolibri-libc/source/string/memcpy.c +++ /dev/null @@ -1,20 +0,0 @@ -/* memcpy( void *, const void *, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -void * memcpy( void * s1, const void * s2, size_t n ) -{ - char * dest = ( char * ) s1; - const char * src = ( const char * ) s2; - - while ( n-- ) - { - *dest++ = *src++; - } - - return s1; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/memmove.c b/contrib/kolibri-libc/source/string/memmove.c deleted file mode 100644 index e4dc719288..0000000000 --- a/contrib/kolibri-libc/source/string/memmove.c +++ /dev/null @@ -1,33 +0,0 @@ -/* memmove( void *, const void *, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -void * memmove( void * s1, const void * s2, size_t n ) -{ - char * dest = ( char * ) s1; - const char * src = ( const char * ) s2; - - if ( dest <= src ) - { - while ( n-- ) - { - *dest++ = *src++; - } - } - else - { - src += n; - dest += n; - - while ( n-- ) - { - *--dest = *--src; - } - } - - return s1; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/memset.c b/contrib/kolibri-libc/source/string/memset.c deleted file mode 100644 index 225f349d87..0000000000 --- a/contrib/kolibri-libc/source/string/memset.c +++ /dev/null @@ -1,20 +0,0 @@ -/* memset( void *, int, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include -#include - -void * memset( void * s, int c, size_t n ) -{ - unsigned char * p = ( unsigned char * ) s; - - while ( n-- ) - { - *p++ = ( unsigned char ) c; - } - - return s; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strcat.c b/contrib/kolibri-libc/source/string/strcat.c deleted file mode 100644 index bd90c10c33..0000000000 --- a/contrib/kolibri-libc/source/string/strcat.c +++ /dev/null @@ -1,27 +0,0 @@ -/* strcat( char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char * strcat( char * s1, const char * s2 ) -{ - char * rc = s1; - - if ( *s1 ) - { - while ( *++s1 ) - { - /* EMPTY */ - } - } - - while ( ( *s1++ = *s2++ ) ) - { - /* EMPTY */ - } - - return rc; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strchr.c b/contrib/kolibri-libc/source/string/strchr.c deleted file mode 100644 index 98bc094a93..0000000000 --- a/contrib/kolibri-libc/source/string/strchr.c +++ /dev/null @@ -1,20 +0,0 @@ -/* strchr( const char *, int ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char * strchr( const char * s, int c ) -{ - do - { - if ( *s == ( char ) c ) - { - return ( char * ) s; - } - } while ( *s++ ); - - return NULL; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strcmp.c b/contrib/kolibri-libc/source/string/strcmp.c deleted file mode 100644 index ddb3d4daf7..0000000000 --- a/contrib/kolibri-libc/source/string/strcmp.c +++ /dev/null @@ -1,13 +0,0 @@ -/* strcmp( const char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include -#include - -int strcmp(const char * s1, const char * s2) -{ - return _ksys_strcmp(s1, s2); -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strcoll.c b/contrib/kolibri-libc/source/string/strcoll.c deleted file mode 100644 index 1ea0837f01..0000000000 --- a/contrib/kolibri-libc/source/string/strcoll.c +++ /dev/null @@ -1,13 +0,0 @@ -/* strcoll( const char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -int strcoll( const char * s1, const char * s2 ) -{ - /* FIXME: This should access _PDCLIB_lc_collate. */ - return strcmp( s1, s2 ); -} diff --git a/contrib/kolibri-libc/source/string/strcpy.c b/contrib/kolibri-libc/source/string/strcpy.c deleted file mode 100644 index ce9176b85e..0000000000 --- a/contrib/kolibri-libc/source/string/strcpy.c +++ /dev/null @@ -1,19 +0,0 @@ -/* strcpy( char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char * strcpy( char * s1, const char * s2 ) -{ - char * rc = s1; - - while ( ( *s1++ = *s2++ ) ) - { - /* EMPTY */ - } - - return rc; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strcspn.c b/contrib/kolibri-libc/source/string/strcspn.c deleted file mode 100644 index 074d800560..0000000000 --- a/contrib/kolibri-libc/source/string/strcspn.c +++ /dev/null @@ -1,30 +0,0 @@ -/* strcspn( const char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -size_t strcspn( const char * s1, const char * s2 ) -{ - size_t len = 0; - const char * p; - - while ( s1[len] ) - { - p = s2; - - while ( *p ) - { - if ( s1[len] == *p++ ) - { - return len; - } - } - - ++len; - } - - return len; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strdup.c b/contrib/kolibri-libc/source/string/strdup.c deleted file mode 100644 index 73e3ac9efc..0000000000 --- a/contrib/kolibri-libc/source/string/strdup.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include - -char* strdup(const char *str) -{ - char *buf = malloc(strlen(str) + 1); - buf[strlen(str)] = '\0'; - strcpy(buf, str); - return buf; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strerror.c b/contrib/kolibri-libc/source/string/strerror.c deleted file mode 100644 index 43e174668f..0000000000 --- a/contrib/kolibri-libc/source/string/strerror.c +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include -#include - -int errno; - -char* strerror(int err) -{ - char *msg; - switch(err){ - case 0: msg = "No errors"; break; - case EPERM: msg = "Operation not permitted"; break; - case ENOENT: msg = "No such file or directory"; break; - case ESRCH: msg = "No such process"; break; - case EINTR: msg = "Interrupted system call"; break; - case EIO: msg = "Input/output error"; break; - case ENXIO: msg = "Device not configured"; break; - case E2BIG: msg = "Argument list too long"; break; - case ENOEXEC: msg = "Exec format error"; break; - case EBADF: msg = "Bad file descriptor"; break; - case ECHILD: msg = "No child processes"; break; - case EDEADLK: msg = "Resource deadlock avoided"; break; - case ENOMEM: msg = "Cannot allocate memory"; break; - case EACCES: msg = "Permission denied"; break; - case EFAULT: msg = "Bad address"; break; - case ENOTBLK: msg = "Block device required"; break; - case EBUSY: msg = "Device / Resource busy"; break; - case EEXIST: msg = "File exists"; break; - case EXDEV: msg = "Cross-device link"; break; - case ENODEV: msg = "Operation not supported by device"; break; - case ENOTDIR: msg = "Not a directory"; break; - case EISDIR: msg = "Is a directory"; break; - case EINVAL: msg = "Invalid argument"; break; - case ENFILE: msg = "Too many open files in system"; break; - case EMFILE: msg = "Too many open files"; break; - case ENOTTY: msg = "Inappropriate ioctl for device"; break; - case ETXTBSY: msg = "Text file busy"; break; - case EFBIG: msg = "File too large"; break; - case ENOSPC: msg = "No space left on device"; break; - case ESPIPE: msg = "Illegal seek"; break; - case EROFS: msg = "Read-only file system"; break; - case EMLINK: msg = "Too many links"; break; - case EPIPE: msg = "Broken pipe"; break; - - // math software - case EDOM: msg = "Numerical argument out of domain"; break; - case ERANGE: msg = "Result too large"; break; - - // should be rearranged - case EHOSTDOWN: msg = "Host is down"; break; - case EHOSTUNREACH: msg = "No route to host"; break; - case ENOTEMPTY: msg = "Directory not empty"; break; - - // quotas & mush - case EPROCLIM: msg = "Too many processes"; break; - case EUSERS: msg = "Too many users"; break; - case EDQUOT: msg = "Disc quota exceeded"; break; - - // Intelligent device errors - case EPWROFF: msg = "Device power is off"; break; - case EDEVERR: msg = "Device error, e.g. paper out"; break; - case EOVERFLOW: msg = "Value too large to be stored in data type"; break; - - // Socket errors - case ENOBUFS: msg = "Broken buffer"; break; - case EINPROGRESS: msg = "Operation now in progress"; break; - case EOPNOTSUPP: msg = "Operation not supported on transport endpoint"; break; - case EWOULDBLOCK: msg = "Operation would block"; break; - case ENOTCONN: msg = "Transport endpoint is not connected"; break; - case EALREADY: msg = "Operation already in progress"; break; - case EMSGSIZE: msg = "Message too long"; break; - case EADDRINUSE: msg = "Address already in use"; break; - case ECONNREFUSED: msg = "Connection refused"; break; - case ECONNRESET: msg = "Connection reset by peer"; break; - case EISCONN: msg = "Transport endpoint is already connected"; break; - case ETIMEDOUT: msg = "Connection timed out"; break; - case ECONNABORTED: msg = "Software caused connection abort"; break; - default: msg = "Unknown error"; break; - } - return msg; -} diff --git a/contrib/kolibri-libc/source/string/strlen.c b/contrib/kolibri-libc/source/string/strlen.c deleted file mode 100644 index fc3a1b6baa..0000000000 --- a/contrib/kolibri-libc/source/string/strlen.c +++ /dev/null @@ -1,19 +0,0 @@ -/* strlen( const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -size_t strlen( const char * s ) -{ - size_t rc = 0; - - while ( s[rc] ) - { - ++rc; - } - - return rc; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strncat.c b/contrib/kolibri-libc/source/string/strncat.c deleted file mode 100644 index 5ec655e561..0000000000 --- a/contrib/kolibri-libc/source/string/strncat.c +++ /dev/null @@ -1,29 +0,0 @@ -/* strncat( char *, const char *, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char * strncat( char * s1, const char * s2, size_t n ) -{ - char * rc = s1; - - while ( *s1 ) - { - ++s1; - } - - while ( n && ( *s1++ = *s2++ ) ) - { - --n; - } - - if ( n == 0 ) - { - *s1 = '\0'; - } - - return rc; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strncmp.c b/contrib/kolibri-libc/source/string/strncmp.c deleted file mode 100644 index 72b54b4184..0000000000 --- a/contrib/kolibri-libc/source/string/strncmp.c +++ /dev/null @@ -1,26 +0,0 @@ -/* strncmp( const char *, const char *, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -int strncmp( const char * s1, const char * s2, size_t n ) -{ - while ( n && *s1 && ( *s1 == *s2 ) ) - { - ++s1; - ++s2; - --n; - } - - if ( n == 0 ) - { - return 0; - } - else - { - return ( *( unsigned char * )s1 - * ( unsigned char * )s2 ); - } -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strncpy.c b/contrib/kolibri-libc/source/string/strncpy.c deleted file mode 100644 index 91e05621cd..0000000000 --- a/contrib/kolibri-libc/source/string/strncpy.c +++ /dev/null @@ -1,29 +0,0 @@ -/* strncpy( char *, const char *, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char * strncpy( char * s1, const char * s2, size_t n ) -{ - char * rc = s1; - - while ( n && ( *s1++ = *s2++ ) ) - { - /* Cannot do "n--" in the conditional as size_t is unsigned and we have - to check it again for >0 in the next loop below, so we must not risk - underflow. - */ - --n; - } - - /* Checking against 1 as we missed the last --n in the loop above. */ - while ( n-- > 1 ) - { - *s1++ = '\0'; - } - - return rc; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strpbrk.c b/contrib/kolibri-libc/source/string/strpbrk.c deleted file mode 100644 index c58f87433e..0000000000 --- a/contrib/kolibri-libc/source/string/strpbrk.c +++ /dev/null @@ -1,30 +0,0 @@ -/* strpbrk( const char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char * strpbrk( const char * s1, const char * s2 ) -{ - const char * p1 = s1; - const char * p2; - - while ( *p1 ) - { - p2 = s2; - - while ( *p2 ) - { - if ( *p1 == *p2++ ) - { - return ( char * ) p1; - } - } - - ++p1; - } - - return NULL; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strrchr.c b/contrib/kolibri-libc/source/string/strrchr.c deleted file mode 100644 index 4a36793424..0000000000 --- a/contrib/kolibri-libc/source/string/strrchr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* strrchr( const char *, int ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char * strrchr( const char * s, int c ) -{ - size_t i = 0; - - while ( s[i++] ) - { - /* EMPTY */ - } - - do - { - if ( s[--i] == ( char ) c ) - { - return ( char * ) s + i; - } - } while ( i ); - - return NULL; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strrev.c b/contrib/kolibri-libc/source/string/strrev.c deleted file mode 100644 index e96d5e2d8a..0000000000 --- a/contrib/kolibri-libc/source/string/strrev.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -char* strrev(char *p) -{ - char *q = p, *res = p, z; - while(q && *q) ++q; /* find eos */ - for(--q; p < q; ++p, --q) - { - z = *p; - *p = *q; - *q = z; - } - return res; -} - \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strspn.c b/contrib/kolibri-libc/source/string/strspn.c deleted file mode 100644 index 96ce6d67b8..0000000000 --- a/contrib/kolibri-libc/source/string/strspn.c +++ /dev/null @@ -1,37 +0,0 @@ -/* strspn( const char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -size_t strspn( const char * s1, const char * s2 ) -{ - size_t len = 0; - const char * p; - - while ( s1[ len ] ) - { - p = s2; - - while ( *p ) - { - if ( s1[len] == *p ) - { - break; - } - - ++p; - } - - if ( ! *p ) - { - return len; - } - - ++len; - } - - return len; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strstr.c b/contrib/kolibri-libc/source/string/strstr.c deleted file mode 100644 index d1f28b1ff9..0000000000 --- a/contrib/kolibri-libc/source/string/strstr.c +++ /dev/null @@ -1,34 +0,0 @@ -/* strstr( const char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char * strstr( const char * s1, const char * s2 ) -{ - const char * p1 = s1; - const char * p2; - - while ( *s1 ) - { - p2 = s2; - - while ( *p2 && ( *p1 == *p2 ) ) - { - ++p1; - ++p2; - } - - if ( ! *p2 ) - { - return ( char * ) s1; - } - - ++s1; - p1 = s1; - } - - return NULL; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/string/strtok.c b/contrib/kolibri-libc/source/string/strtok.c deleted file mode 100644 index 1f756940e9..0000000000 --- a/contrib/kolibri-libc/source/string/strtok.c +++ /dev/null @@ -1,30 +0,0 @@ -/* strtok( char *, const char * ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -char* strtok(char* s, const char* delim) -{ - static char* savep; - char* res; - - if(s) - savep = NULL; - else - s = savep; - - if (*s == '\0') - return NULL; - s += strspn(s, delim); - if (*s == '\0') - return NULL; - res = s; - s += strcspn(s, delim); - savep = s + 1; - *s = '\0'; - return res; -} - diff --git a/contrib/kolibri-libc/source/string/strxfrm.c b/contrib/kolibri-libc/source/string/strxfrm.c deleted file mode 100644 index f24afd534d..0000000000 --- a/contrib/kolibri-libc/source/string/strxfrm.c +++ /dev/null @@ -1,26 +0,0 @@ -/* strxfrm( char *, const char *, size_t ) - - This file is part of the Public Domain C Library (PDCLib). - Permission is granted to use, modify, and / or redistribute at will. -*/ - -#include - -size_t strxfrm( char * s1, const char * s2, size_t n ) -{ - size_t len = strlen( s2 ); - - if ( len < n ) - { - /* Cannot use strncpy() here as the filling of s1 with '\0' is not part - of the spec. - */ - /* FIXME: This should access _PDCLIB_lc_collate. */ - while ( n-- && ( *s1++ = ( unsigned char )*s2++ ) ) - { - /* EMPTY */ - } - } - - return len; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/sys/closedir.c b/contrib/kolibri-libc/source/sys/closedir.c deleted file mode 100644 index 9dcca25f44..0000000000 --- a/contrib/kolibri-libc/source/sys/closedir.c +++ /dev/null @@ -1,14 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include -#include - -int closedir(DIR *dir){ - if(dir == NULL){ - return -1; - }else{ - free(dir->objs); - free(dir); - return 0; - } -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/sys/opendir.c b/contrib/kolibri-libc/source/sys/opendir.c deleted file mode 100644 index d39565a8d2..0000000000 --- a/contrib/kolibri-libc/source/sys/opendir.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include -#include -#include -#include -#include - -#define CHECK_DIR_ERR() if(_ksys_work_files(&inf)){ \ - free((void*)inf.p16); \ - errno = ENOTDIR; \ - return NULL; \ - } - -DIR* opendir(const char* path) -{ - DIR* list = malloc(sizeof(DIR)); - if(list==NULL){ - errno = ENOMEM; - return NULL; - } - - list->pos=0; - unsigned num_of_file=0; - ksys70_t inf; - - inf.p00 = 1; - inf.p04 = 0; - inf.p12 = 2; - inf.p16 = (unsigned) malloc(32+inf.p12*560); - inf.p20 = 0; - inf.p21 = (char*)path; - - CHECK_DIR_ERR(); - - num_of_file = *(unsigned*)(inf.p16+8); - inf.p12 = num_of_file; - free((void*)inf.p16); - inf.p16 = (unsigned) malloc(32+inf.p12*560); - list->objs = (struct dirent*)malloc(num_of_file*sizeof(struct dirent)); - - CHECK_DIR_ERR(); - - for(int i=0; iobjs[i].d_ino = i; - list->objs[i].d_type = *(unsigned*)(inf.p16+32+(264+40)*i); - strcpy(list->objs[i].d_name,(char*)(inf.p16+32+40+(264+40)*i)); - } - list->num_objs = num_of_file; - return list; -} - - diff --git a/contrib/kolibri-libc/source/sys/readdir.c b/contrib/kolibri-libc/source/sys/readdir.c deleted file mode 100644 index e5e68dbcdd..0000000000 --- a/contrib/kolibri-libc/source/sys/readdir.c +++ /dev/null @@ -1,14 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include -#include - -struct dirent* readdir(DIR *dir) -{ - if(dir->num_objs>dir->pos){ - dir->pos++; - return &dir->objs[dir->pos-1]; - }else{ - return NULL; - } -} diff --git a/contrib/kolibri-libc/source/sys/rewinddir.c b/contrib/kolibri-libc/source/sys/rewinddir.c deleted file mode 100644 index 3fc549857b..0000000000 --- a/contrib/kolibri-libc/source/sys/rewinddir.c +++ /dev/null @@ -1,9 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include - -void rewinddir(DIR *dir){ - if(dir!=NULL){ - dir->pos=0; - } -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/sys/seekdir.c b/contrib/kolibri-libc/source/sys/seekdir.c deleted file mode 100644 index cb6c8e9463..0000000000 --- a/contrib/kolibri-libc/source/sys/seekdir.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include - -void seekdir(DIR *dir, unsigned pos) -{ - if(dir==NULL || pos>dir->num_objs){ - return; - } - dir->pos=pos; - return; -} \ No newline at end of file diff --git a/contrib/kolibri-libc/source/sys/telldir.c b/contrib/kolibri-libc/source/sys/telldir.c deleted file mode 100644 index e3647a47c5..0000000000 --- a/contrib/kolibri-libc/source/sys/telldir.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */ - -#include - -unsigned telldir(DIR *dir) -{ - if(dir!=NULL){ - return dir->pos; - }else{ - return 0; - } -} \ No newline at end of file diff --git a/contrib/kolibri-libc/static.lds b/contrib/kolibri-libc/static.lds deleted file mode 100644 index 8717728b05..0000000000 --- a/contrib/kolibri-libc/static.lds +++ /dev/null @@ -1,113 +0,0 @@ -OUTPUT_FORMAT("binary") - -ENTRY(_start) -SECTIONS -{ - .text 0x000000: - { - LONG(0x554e454D); - LONG(0x32305445); - LONG(1); - LONG(_start); - LONG(___iend); - LONG(___memsize); - LONG(___stacktop); - LONG(__argv); - LONG(__path); /* full path */ - LONG(0); /*FIXME tls data */ - - *(.init) - *(.text) - *(SORT(.text$*)) - *(.text.*) - *(.glue_7t) - *(.glue_7) - ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; - LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); - ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; - LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); - *(.fini) - /* ??? Why is .gcc_exc here? */ - *(.gcc_exc) - PROVIDE (etext = .); - *(.gcc_except_table) - } - - .rdata ALIGN(16) : - { - *(.rdata) - *(SORT(.rdata$*)) - ___RUNTIME_PSEUDO_RELOC_LIST__ = .; - __RUNTIME_PSEUDO_RELOC_LIST__ = .; - *(.rdata_runtime_pseudo_reloc) - ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; - __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; - } - .CRT ALIGN(16) : - { - ___crt_xc_start__ = . ; - *(SORT(.CRT$XC*)) /* C initialization */ - ___crt_xc_end__ = . ; - ___crt_xi_start__ = . ; - *(SORT(.CRT$XI*)) /* C++ initialization */ - ___crt_xi_end__ = . ; - ___crt_xl_start__ = . ; - *(SORT(.CRT$XL*)) /* TLS callbacks */ - /* ___crt_xl_end__ is defined in the TLS Directory support code */ - ___crt_xp_start__ = . ; - *(SORT(.CRT$XP*)) /* Pre-termination */ - ___crt_xp_end__ = . ; - ___crt_xt_start__ = . ; - *(SORT(.CRT$XT*)) /* Termination */ - ___crt_xt_end__ = . ; - } - - .data ALIGN(16) : - { - __data_start__ = . ; - *(.data) - *(.data2) - *(SORT(.data$*)) - *(.jcr) - __CRT_MT = .; - LONG(0); - __data_end__ = . ; - *(.data_cygwin_nocopy) - } - - .eh_frame ALIGN(16) : - { - *(.eh_frame) - ___iend = . ; - } - - bss ALIGN(16): - { - *(.bss) - *(COMMON) - . = ALIGN(16); - ___menuet__app_path_area = .; - . = . + 1024 + 16; - ___stacktop = .; - ___memsize = . ; - } - - /DISCARD/ : - { - *(.debug$S) - *(.debug$T) - *(.debug$F) - *(.drectve) - *(.note.GNU-stack) - *(.comment) - *(.debug_abbrev) - *(.debug_info) - *(.debug_line) - *(.debug_frame) - *(.debug_loc) - *(.debug_pubnames) - *(.debug_aranges) - *(.debug_ranges) - } - -}